diff --git a/libcxx/test/libcxx/strings/basic.string/alignof.compile.pass.cpp b/libcxx/test/libcxx/strings/basic.string/alignof.compile.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/alignof.compile.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/alignof.compile.pass.cpp @@ -24,9 +24,9 @@ template class small_iter_allocator { public: - using value_type = T; - using pointer = small_pointer; - using size_type = std::int16_t; + using value_type = T; + using pointer = small_pointer; + using size_type = std::int16_t; using difference_type = std::int16_t; small_iter_allocator() TEST_NOEXCEPT {} diff --git a/libcxx/test/libcxx/strings/basic.string/sizeof.compile.pass.cpp b/libcxx/test/libcxx/strings/basic.string/sizeof.compile.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/sizeof.compile.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/sizeof.compile.pass.cpp @@ -22,9 +22,9 @@ template class small_iter_allocator { public: - using value_type = T; - using pointer = small_pointer; - using size_type = std::int16_t; + using value_type = T; + using pointer = small_pointer; + using size_type = std::int16_t; using difference_type = std::int16_t; small_iter_allocator() TEST_NOEXCEPT {} diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/assert.back.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/assert.back.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/assert.back.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/assert.back.pass.cpp @@ -21,16 +21,16 @@ #include "min_allocator.h" int main(int, char**) { - { - std::string s; - TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); - } - - { - typedef std::basic_string, min_allocator > S; - S s; - TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); - } - - return 0; + { + std::string s; + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); + } + + { + typedef std::basic_string, min_allocator > S; + S s; + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); + } + + return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/assert.cback.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/assert.cback.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/assert.cback.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/assert.cback.pass.cpp @@ -21,16 +21,16 @@ #include "min_allocator.h" int main(int, char**) { - { - std::string const s; - TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); - } - - { - typedef std::basic_string, min_allocator > S; - const S s; - TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); - } - - return 0; + { + std::string const s; + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); + } + + { + typedef std::basic_string, min_allocator > S; + const S s; + TEST_LIBCPP_ASSERT_FAILURE(s.back(), "string::back(): string is empty"); + } + + return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.capacity/PR53170.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.capacity/PR53170.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.capacity/PR53170.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.capacity/PR53170.pass.cpp @@ -33,52 +33,52 @@ template TEST_CONSTEXPR_CXX20 bool test() { - // Test that a call to reserve() does shrink the string. - if (!TEST_IS_CONSTANT_EVALUATED) { - S s(1000, 'a'); - typename S::size_type old_cap = s.capacity(); - s.resize(20); - assert(s.capacity() == old_cap); - - s.reserve(); - assert(s.capacity() < old_cap); - } - - // Test that a call to reserve(smaller-than-capacity) never shrinks the string. - { - S s(1000, 'a'); - typename S::size_type old_cap = s.capacity(); - s.resize(20); - assert(s.capacity() == old_cap); - - s.reserve(10); - assert(s.capacity() == old_cap); - } - - // In particular, test that reserve(0) does NOT shrink the string. - { - S s(1000, 'a'); - typename S::size_type old_cap = s.capacity(); - s.resize(20); - assert(s.capacity() == old_cap); - - s.reserve(0); - assert(s.capacity() == old_cap); - } - - return true; + // Test that a call to reserve() does shrink the string. + if (!TEST_IS_CONSTANT_EVALUATED) { + S s(1000, 'a'); + typename S::size_type old_cap = s.capacity(); + s.resize(20); + assert(s.capacity() == old_cap); + + s.reserve(); + assert(s.capacity() < old_cap); + } + + // Test that a call to reserve(smaller-than-capacity) never shrinks the string. + { + S s(1000, 'a'); + typename S::size_type old_cap = s.capacity(); + s.resize(20); + assert(s.capacity() == old_cap); + + s.reserve(10); + assert(s.capacity() == old_cap); + } + + // In particular, test that reserve(0) does NOT shrink the string. + { + S s(1000, 'a'); + typename S::size_type old_cap = s.capacity(); + s.resize(20); + assert(s.capacity() == old_cap); + + s.reserve(0); + assert(s.capacity() == old_cap); + } + + return true; } int main(int, char**) { - test(); + test(); #if TEST_STD_VER >= 11 - test, min_allocator > >(); + test, min_allocator > >(); #endif #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.capacity/max_size.pass.cpp @@ -53,7 +53,8 @@ #ifndef TEST_HAS_NO_WIDE_CHARACTERS std::wstring wstr; - assert(wstr.max_size() == std::numeric_limits::max() / std::max(2ul, sizeof(wchar_t)) - alignment); + assert(wstr.max_size() == + std::numeric_limits::max() / std::max(2ul, sizeof(wchar_t)) - alignment); #endif std::u16string u16str; @@ -63,44 +64,43 @@ } TEST_CONSTEXPR_CXX20 bool test() { - #if _LIBCPP_ABI_VERSION == 1 -# if defined(__x86_64__) || defined(__i386__) +# if defined(__x86_64__) || defined(__i386__) full_size(); -# elif defined(__APPLE__) && defined(__aarch64__) +# elif defined(__APPLE__) && defined(__aarch64__) half_size(); -# elif defined(__arm__) || defined(__aarch64__) -# ifdef __BIG_ENDIAN__ +# elif defined(__arm__) || defined(__aarch64__) +# ifdef __BIG_ENDIAN__ half_size(); -# else +# else full_size(); -# endif -# elif defined(__powerpc__) || defined(__powerpc64__) -# ifdef __BIG_ENDIAN__ +# endif +# elif defined(__powerpc__) || defined(__powerpc64__) +# ifdef __BIG_ENDIAN__ half_size(); -# else +# else full_size(); -# endif -# elif defined(__sparc64__) +# endif +# elif defined(__sparc64__) half_size(); -# elif defined(_WIN32) +# elif defined(_WIN32) full_size(); -# else -# error "Your target system seems to be unsupported." -# endif +# else +# error "Your target system seems to be unsupported." +# endif #else -# if defined(__arm__) || defined(__aarch64__) -# ifdef __BIG_ENDIAN__ +# if defined(__arm__) || defined(__aarch64__) +# ifdef __BIG_ENDIAN__ full_size(); -# else +# else half_size(); -# endif -# else +# endif +# else half_size(); -# endif +# endif #endif diff --git a/libcxx/test/libcxx/strings/basic.string/string.cons/copy_shrunk_long.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.cons/copy_shrunk_long.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.cons/copy_shrunk_long.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.cons/copy_shrunk_long.pass.cpp @@ -18,8 +18,7 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 bool test() -{ +TEST_CONSTEXPR_CXX20 bool test() { // Tests that a long string holding a SSO size string results in // an SSO copy constructed value. S s1("1234567890123456789012345678901234567890123456789012345678901234567890"); @@ -32,8 +31,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test, test_allocator > >(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.pop_back.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.pop_back.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.pop_back.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/assert.pop_back.pass.cpp @@ -20,8 +20,8 @@ #include "check_assertion.h" int main(int, char**) { - std::string s; - TEST_LIBCPP_ASSERT_FAILURE(s.pop_back(), "string::pop_back(): string is already empty"); + std::string s; + TEST_LIBCPP_ASSERT_FAILURE(s.pop_back(), "string::pop_back(): string is already empty"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/clear_and_shrink.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/clear_and_shrink.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/clear_and_shrink.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/clear_and_shrink.pass.cpp @@ -35,8 +35,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter.pass.cpp @@ -19,20 +19,22 @@ #include "min_allocator.h" int main(int, char**) { - { - std::string l1("123"); - std::string l2("123"); - std::string::const_iterator i = l2.begin(); - TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), "string::erase(iterator) called with an iterator not referring to this string"); - } - - { - typedef std::basic_string, min_allocator > S; - S l1("123"); - S l2("123"); - S::const_iterator i = l2.begin(); - TEST_LIBCPP_ASSERT_FAILURE(l1.erase(i), "string::erase(iterator) called with an iterator not referring to this string"); - } - - return 0; + { + std::string l1("123"); + std::string l2("123"); + std::string::const_iterator i = l2.begin(); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(i), "string::erase(iterator) called with an iterator not referring to this string"); + } + + { + typedef std::basic_string, min_allocator > S; + S l1("123"); + S l2("123"); + S::const_iterator i = l2.begin(); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(i), "string::erase(iterator) called with an iterator not referring to this string"); + } + + return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter_iter.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter_iter.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter_iter.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.erase.iter_iter.pass.cpp @@ -19,73 +19,63 @@ #include "min_allocator.h" int main(int, char**) { + // With first iterator from another container + {{std::string l1("123"); + std::string l2("123"); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l2.cbegin(), l1.cbegin() + 1), + "string::erase(iterator, iterator) called with an iterator not referring to this string"); +} +{ + typedef std::basic_string, min_allocator > S; + S l1("123"); + S l2("123"); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l2.cbegin(), l1.cbegin() + 1), + "string::erase(iterator, iterator) called with an iterator not referring to this string"); +} +} - // With first iterator from another container - { - { - std::string l1("123"); - std::string l2("123"); - TEST_LIBCPP_ASSERT_FAILURE( - l1.erase(l2.cbegin(), l1.cbegin() + 1), - "string::erase(iterator, iterator) called with an iterator not referring to this string"); - } - { - typedef std::basic_string, min_allocator > S; - S l1("123"); - S l2("123"); - TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l2.cbegin(), l1.cbegin() + 1), - "string::erase(iterator, iterator) called with an iterator not referring to this string"); - } - } - - // With second iterator from another container - { - { - std::string l1("123"); - std::string l2("123"); - TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin(), l2.cbegin() + 1), "Attempted to compare incomparable iterators"); - } - { - typedef std::basic_string, min_allocator > S; - S l1("123"); - S l2("123"); - TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin(), l2.cbegin() + 1), "Attempted to compare incomparable iterators"); - } - } +// With second iterator from another container +{{std::string l1("123"); +std::string l2("123"); +TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin(), l2.cbegin() + 1), "Attempted to compare incomparable iterators"); +} +{ + typedef std::basic_string, min_allocator > S; + S l1("123"); + S l2("123"); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin(), l2.cbegin() + 1), "Attempted to compare incomparable iterators"); +} +} - // With both iterators from another container - { - { - std::string l1("123"); - std::string l2("123"); - TEST_LIBCPP_ASSERT_FAILURE( - l1.erase(l2.cbegin(), l2.cbegin() + 1), - "string::erase(iterator, iterator) called with an iterator not referring to this string"); - } - { - typedef std::basic_string, min_allocator > S; - S l1("123"); - S l2("123"); - TEST_LIBCPP_ASSERT_FAILURE( - l1.erase(l2.cbegin(), l2.cbegin() + 1), - "string::erase(iterator, iterator) called with an iterator not referring to this string"); - } - } +// With both iterators from another container +{{std::string l1("123"); +std::string l2("123"); +TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l2.cbegin(), l2.cbegin() + 1), + "string::erase(iterator, iterator) called with an iterator not referring to this string"); +} +{ + typedef std::basic_string, min_allocator > S; + S l1("123"); + S l2("123"); + TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l2.cbegin(), l2.cbegin() + 1), + "string::erase(iterator, iterator) called with an iterator not referring to this string"); +} +} - // With an invalid range - { - { - std::string l1("123"); - TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin() + 1, l1.cbegin()), - "string::erase(first, last) called with invalid range"); - } - { - typedef std::basic_string, min_allocator > S; - S l1("123"); - TEST_LIBCPP_ASSERT_FAILURE(l1.erase(l1.cbegin() + 1, l1.cbegin()), - "string::erase(first, last) called with invalid range"); - } - } +// With an invalid range +{ + { + std::string l1("123"); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l1.cbegin() + 1, l1.cbegin()), "string::erase(first, last) called with invalid range"); + } + { + typedef std::basic_string, min_allocator > S; + S l1("123"); + TEST_LIBCPP_ASSERT_FAILURE( + l1.erase(l1.cbegin() + 1, l1.cbegin()), "string::erase(first, last) called with invalid range"); + } +} - return 0; +return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_char.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_char.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_char.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_char.pass.cpp @@ -24,11 +24,12 @@ #include "check_assertion.h" int main(int, char**) { - typedef std::string S; - S s; - S s2; - TEST_LIBCPP_ASSERT_FAILURE(s.insert(s2.begin(), '1'), - "string::insert(iterator, character) called with an iterator not referring to this string"); - - return 0; + typedef std::string S; + S s; + S s2; + TEST_LIBCPP_ASSERT_FAILURE( + s.insert(s2.begin(), '1'), + "string::insert(iterator, character) called with an iterator not referring to this string"); + + return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_iter_iter.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_iter_iter.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_iter_iter.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_iter_iter.pass.cpp @@ -19,12 +19,12 @@ #include "check_assertion.h" int main(int, char**) { - std::string v; - std::string v2; - char a[] = "123"; - const int N = sizeof(a)/sizeof(a[0]); - TEST_LIBCPP_ASSERT_FAILURE(v.insert(v2.cbegin() + 10, a, a + N), - "Attempted to add/subtract an iterator outside its valid range"); + std::string v; + std::string v2; + char a[] = "123"; + const int N = sizeof(a) / sizeof(a[0]); + TEST_LIBCPP_ASSERT_FAILURE( + v.insert(v2.cbegin() + 10, a, a + N), "Attempted to add/subtract an iterator outside its valid range"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_size_char.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_size_char.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_size_char.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/debug.insert.iter_size_char.pass.cpp @@ -18,11 +18,10 @@ #include "check_assertion.h" int main(int, char**) { - std::string s; - std::string s2; - TEST_LIBCPP_ASSERT_FAILURE( - s.insert(s2.begin(), 1, 'a'), - "string::insert(iterator, n, value) called with an iterator not referring to this string"); + std::string s; + std::string s2; + TEST_LIBCPP_ASSERT_FAILURE(s.insert(s2.begin(), 1, 'a'), + "string::insert(iterator, n, value) called with an iterator not referring to this string"); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.modifiers/resize_default_initialized.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.modifiers/resize_default_initialized.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.modifiers/resize_default_initialized.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.modifiers/resize_default_initialized.pass.cpp @@ -15,15 +15,14 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 void write_c_str(char *buf, int size) { - for (int i=0; i < size; ++i) { +TEST_CONSTEXPR_CXX20 void write_c_str(char* buf, int size) { + for (int i = 0; i < size; ++i) { buf[i] = 'a'; } buf[size] = '\0'; } -TEST_CONSTEXPR_CXX20 void test_buffer_usage() -{ +TEST_CONSTEXPR_CXX20 void test_buffer_usage() { { unsigned buff_size = 125; unsigned used_size = buff_size - 16; @@ -35,7 +34,7 @@ s.__resize_default_init(used_size); assert(s.size() == used_size); assert(s.data()[used_size] == '\0'); - for (unsigned i=0; i < used_size; ++i) { + for (unsigned i = 0; i < used_size; ++i) { assert(s[i] == 'a'); } } @@ -47,7 +46,7 @@ s.__resize_default_init(3); assert(s.size() == 3); assert(s.data()[3] == '\0'); - for (int i=0; i < 3; ++i) + for (int i = 0; i < 3; ++i) s[i] = 'a' + i; s.__resize_default_init(1); assert(s[0] == 'a'); diff --git a/libcxx/test/libcxx/strings/c.strings/constexpr.cstring.compile.pass.cpp b/libcxx/test/libcxx/strings/c.strings/constexpr.cstring.compile.pass.cpp --- a/libcxx/test/libcxx/strings/c.strings/constexpr.cstring.compile.pass.cpp +++ b/libcxx/test/libcxx/strings/c.strings/constexpr.cstring.compile.pass.cpp @@ -24,7 +24,6 @@ static_assert(!std::__constexpr_memcmp_equal(Banane, Banand, std::__element_count(6)), ""); static_assert(std::__constexpr_memcmp_equal(Banane, Banane, std::__element_count(6)), ""); - constexpr bool test_constexpr_wmemchr() { const char str[] = "Banane"; return std::__constexpr_memchr(str, 'n', 6) == str + 2; diff --git a/libcxx/test/libcxx/strings/c.strings/constexpr_memmove.pass.cpp b/libcxx/test/libcxx/strings/c.strings/constexpr_memmove.pass.cpp --- a/libcxx/test/libcxx/strings/c.strings/constexpr_memmove.pass.cpp +++ b/libcxx/test/libcxx/strings/c.strings/constexpr_memmove.pass.cpp @@ -32,7 +32,7 @@ // than that. struct CopyConstructible { CopyConstructible() = default; - int value = 0; + int value = 0; CopyConstructible(const CopyConstructible&) = default; CopyConstructible(CopyConstructible&&) = delete; @@ -42,7 +42,7 @@ struct MoveConstructible { MoveConstructible() = default; - int value = 0; + int value = 0; MoveConstructible(const MoveConstructible&) = delete; MoveConstructible(MoveConstructible&&) = default; @@ -52,7 +52,7 @@ struct CopyAssignable { CopyAssignable() = default; - int value = 0; + int value = 0; CopyAssignable(const CopyAssignable&) = delete; CopyAssignable(CopyAssignable&&) = delete; @@ -62,7 +62,7 @@ struct MoveAssignable { MoveAssignable() = default; - int value = 0; + int value = 0; MoveAssignable(const MoveAssignable&) = delete; MoveAssignable(MoveAssignable&&) = delete; @@ -96,7 +96,7 @@ template TEST_CONSTEXPR_CXX14 void test_builtin_types() { Source src[3] = {1, 2, 3}; - Dest dst[3] = {111, 111, 111}; + Dest dst[3] = {111, 111, 111}; Dest* result = std::__constexpr_memmove(dst, src, std::__element_count(3)); assert(result == dst); @@ -110,7 +110,7 @@ ObjectType objs[3] = {1, 2, 3}; SourcePtr src[3] = {objs + 0, objs + 1, objs + 2}; - DestPtr dst[3] = {nullptr, nullptr, nullptr}; + DestPtr dst[3] = {nullptr, nullptr, nullptr}; DestPtr* result = std::__constexpr_memmove(dst, src, std::__element_count(3)); assert(result == dst); diff --git a/libcxx/test/libcxx/strings/string.view/assert.ctor.pointer.pass.cpp b/libcxx/test/libcxx/strings/string.view/assert.ctor.pointer.pass.cpp --- a/libcxx/test/libcxx/strings/string.view/assert.ctor.pointer.pass.cpp +++ b/libcxx/test/libcxx/strings/string.view/assert.ctor.pointer.pass.cpp @@ -19,15 +19,22 @@ #include "check_assertion.h" int main(int, char**) { - TEST_LIBCPP_ASSERT_FAILURE(std::string_view((char const*)NULL), "null pointer passed to non-null argument of char_traits<...>::length"); - TEST_LIBCPP_ASSERT_FAILURE(std::string_view((char const*)nullptr), "null pointer passed to non-null argument of char_traits<...>::length"); - TEST_LIBCPP_ASSERT_FAILURE(std::string_view((char const*)0), "null pointer passed to non-null argument of char_traits<...>::length"); + TEST_LIBCPP_ASSERT_FAILURE( + std::string_view((char const*)NULL), "null pointer passed to non-null argument of char_traits<...>::length"); + TEST_LIBCPP_ASSERT_FAILURE( + std::string_view((char const*)nullptr), "null pointer passed to non-null argument of char_traits<...>::length"); + TEST_LIBCPP_ASSERT_FAILURE( + std::string_view((char const*)0), "null pointer passed to non-null argument of char_traits<...>::length"); { std::string_view v; - TEST_LIBCPP_ASSERT_FAILURE(v == (char const*)nullptr, "null pointer passed to non-null argument of char_traits<...>::length"); - TEST_LIBCPP_ASSERT_FAILURE(v == (char const*)NULL, "null pointer passed to non-null argument of char_traits<...>::length"); - TEST_LIBCPP_ASSERT_FAILURE((char const*)nullptr == v, "null pointer passed to non-null argument of char_traits<...>::length"); - TEST_LIBCPP_ASSERT_FAILURE((char const*)NULL == v, "null pointer passed to non-null argument of char_traits<...>::length"); + TEST_LIBCPP_ASSERT_FAILURE( + v == (char const*)nullptr, "null pointer passed to non-null argument of char_traits<...>::length"); + TEST_LIBCPP_ASSERT_FAILURE( + v == (char const*)NULL, "null pointer passed to non-null argument of char_traits<...>::length"); + TEST_LIBCPP_ASSERT_FAILURE( + (char const*)nullptr == v, "null pointer passed to non-null argument of char_traits<...>::length"); + TEST_LIBCPP_ASSERT_FAILURE( + (char const*)NULL == v, "null pointer passed to non-null argument of char_traits<...>::length"); } return 0; diff --git a/libcxx/test/libcxx/strings/string.view/string.view.iterators/debug.iterator-indexing.pass.cpp b/libcxx/test/libcxx/strings/string.view/string.view.iterators/debug.iterator-indexing.pass.cpp --- a/libcxx/test/libcxx/strings/string.view/string.view.iterators/debug.iterator-indexing.pass.cpp +++ b/libcxx/test/libcxx/strings/string.view/string.view.iterators/debug.iterator-indexing.pass.cpp @@ -16,73 +16,77 @@ #include "check_assertion.h" int main(int, char**) { - // string_view::iterator + // string_view::iterator + { + std::string_view const str("hello world"); { - std::string_view const str("hello world"); - { - auto it = str.end(); - TEST_LIBCPP_ASSERT_FAILURE(*it, "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); - } - { - auto it = str.end(); - TEST_LIBCPP_ASSERT_FAILURE(it.operator->(), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); - } - { - auto it = str.begin(); - TEST_LIBCPP_ASSERT_FAILURE(it[99], "__bounded_iter::operator[]: Attempt to index an iterator out-of-range"); - } + auto it = str.end(); + TEST_LIBCPP_ASSERT_FAILURE(*it, "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); } + { + auto it = str.end(); + TEST_LIBCPP_ASSERT_FAILURE( + it.operator->(), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); + } + { + auto it = str.begin(); + TEST_LIBCPP_ASSERT_FAILURE(it[99], "__bounded_iter::operator[]: Attempt to index an iterator out-of-range"); + } + } - // string_view::const_iterator + // string_view::const_iterator + { + std::string_view const str("hello world"); + { + auto it = str.cend(); + TEST_LIBCPP_ASSERT_FAILURE(*it, "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); + } + { + auto it = str.cend(); + TEST_LIBCPP_ASSERT_FAILURE( + it.operator->(), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); + } { - std::string_view const str("hello world"); - { - auto it = str.cend(); - TEST_LIBCPP_ASSERT_FAILURE(*it, "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); - } - { - auto it = str.cend(); - TEST_LIBCPP_ASSERT_FAILURE(it.operator->(), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); - } - { - auto it = str.cbegin(); - TEST_LIBCPP_ASSERT_FAILURE(it[99], "__bounded_iter::operator[]: Attempt to index an iterator out-of-range"); - } + auto it = str.cbegin(); + TEST_LIBCPP_ASSERT_FAILURE(it[99], "__bounded_iter::operator[]: Attempt to index an iterator out-of-range"); } + } - // string_view::reverse_iterator + // string_view::reverse_iterator + { + std::string_view const str("hello world"); { - std::string_view const str("hello world"); - { - auto it = str.rend(); - TEST_LIBCPP_ASSERT_FAILURE(*it, "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); - } - { - auto it = str.rend(); - TEST_LIBCPP_ASSERT_FAILURE(it.operator->(), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); - } - { - auto it = str.rbegin(); - TEST_LIBCPP_ASSERT_FAILURE(it[99], "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); - } + auto it = str.rend(); + TEST_LIBCPP_ASSERT_FAILURE(*it, "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); } + { + auto it = str.rend(); + TEST_LIBCPP_ASSERT_FAILURE( + it.operator->(), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); + } + { + auto it = str.rbegin(); + TEST_LIBCPP_ASSERT_FAILURE(it[99], "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); + } + } - // string_view::const_reverse_iterator + // string_view::const_reverse_iterator + { + std::string_view const str("hello world"); + { + auto it = str.crend(); + TEST_LIBCPP_ASSERT_FAILURE(*it, "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); + } + { + auto it = str.crend(); + TEST_LIBCPP_ASSERT_FAILURE( + it.operator->(), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); + } { - std::string_view const str("hello world"); - { - auto it = str.crend(); - TEST_LIBCPP_ASSERT_FAILURE(*it, "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); - } - { - auto it = str.crend(); - TEST_LIBCPP_ASSERT_FAILURE(it.operator->(), "__bounded_iter::operator->: Attempt to dereference an out-of-range iterator"); - } - { - auto it = str.crbegin(); - TEST_LIBCPP_ASSERT_FAILURE(it[99], "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); - } + auto it = str.crbegin(); + TEST_LIBCPP_ASSERT_FAILURE(it[99], "__bounded_iter::operator*: Attempt to dereference an out-of-range iterator"); } + } - return 0; + return 0; } diff --git a/libcxx/test/std/strings/basic.string.hash/char_type_hash.verify.cpp b/libcxx/test/std/strings/basic.string.hash/char_type_hash.verify.cpp --- a/libcxx/test/std/strings/basic.string.hash/char_type_hash.verify.cpp +++ b/libcxx/test/std/strings/basic.string.hash/char_type_hash.verify.cpp @@ -6,7 +6,6 @@ // //===----------------------------------------------------------------------===// - // UNSUPPORTED: c++03 // @@ -21,57 +20,50 @@ template struct trait // copied from <__string> { - typedef _CharT char_type; - typedef int int_type; - typedef std::streamoff off_type; - typedef std::streampos pos_type; - typedef std::mbstate_t state_type; + typedef _CharT char_type; + typedef int int_type; + typedef std::streamoff off_type; + typedef std::streampos pos_type; + typedef std::mbstate_t state_type; - static inline void assign(char_type& __c1, const char_type& __c2) { - __c1 = __c2; - } - static inline bool eq(char_type __c1, char_type __c2) { return __c1 == __c2; } - static inline bool lt(char_type __c1, char_type __c2) { return __c1 < __c2; } + static inline void assign(char_type& __c1, const char_type& __c2) { __c1 = __c2; } + static inline bool eq(char_type __c1, char_type __c2) { return __c1 == __c2; } + static inline bool lt(char_type __c1, char_type __c2) { return __c1 < __c2; } - static int compare(const char_type* __s1, const char_type* __s2, std::size_t __n); - static std::size_t length(const char_type* __s); - static const char_type* find(const char_type* __s, std::size_t __n, - const char_type& __a); + static int compare(const char_type* __s1, const char_type* __s2, std::size_t __n); + static std::size_t length(const char_type* __s); + static const char_type* find(const char_type* __s, std::size_t __n, const char_type& __a); - static char_type* move(char_type* __s1, const char_type* __s2, std::size_t __n); - static char_type* copy(char_type* __s1, const char_type* __s2, std::size_t __n); - static char_type* assign(char_type* __s, std::size_t __n, char_type __a); + static char_type* move(char_type* __s1, const char_type* __s2, std::size_t __n); + static char_type* copy(char_type* __s1, const char_type* __s2, std::size_t __n); + static char_type* assign(char_type* __s, std::size_t __n, char_type __a); - static inline int_type not_eof(int_type __c) { - return eq_int_type(__c, eof()) ? ~eof() : __c; - } - static inline char_type to_char_type(int_type __c) { return char_type(__c); } - static inline int_type to_int_type(char_type __c) { return int_type(__c); } - static inline bool eq_int_type(int_type __c1, int_type __c2) { - return __c1 == __c2; - } - static inline int_type eof() { return int_type(EOF); } + static inline int_type not_eof(int_type __c) { return eq_int_type(__c, eof()) ? ~eof() : __c; } + static inline char_type to_char_type(int_type __c) { return char_type(__c); } + static inline int_type to_int_type(char_type __c) { return int_type(__c); } + static inline bool eq_int_type(int_type __c1, int_type __c2) { return __c1 == __c2; } + static inline int_type eof() { return int_type(EOF); } }; template void test() { - typedef std::basic_string > str_t; - std::hash - h; // expected-error-re 4 {{{{call to implicitly-deleted default constructor of 'std::hash'|implicit instantiation of undefined template}} {{.+}}}}}} + typedef std::basic_string > str_t; + std::hash + h; // expected-error-re 4 {{{{call to implicitly-deleted default constructor of 'std::hash'|implicit instantiation of undefined template}} {{.+}}}}}} #if TEST_STD_VER > 17 && defined(__cpp_char8_t) - // expected-error-re@-2 {{{{call to implicitly-deleted default constructor of 'std::hash'|implicit instantiation of undefined template}} {{.+}}}}}} + // expected-error-re@-2 {{{{call to implicitly-deleted default constructor of 'std::hash'|implicit instantiation of undefined template}} {{.+}}}}}} #endif - (void)h; + (void)h; } int main(int, char**) { - test(); - test(); + test(); + test(); #if TEST_STD_VER > 17 && defined(__cpp_char8_t) - test(); + test(); #endif - test(); - test(); + test(); + test(); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp b/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp --- a/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp +++ b/libcxx/test/std/strings/basic.string.hash/enabled_hashes.pass.cpp @@ -36,18 +36,18 @@ static bool eq(char_type, char_type); static bool lt(char_type, char_type); - static int compare(const char_type*, const char_type*, std::size_t); - static std::size_t length(const char_type*); + static int compare(const char_type*, const char_type*, std::size_t); + static std::size_t length(const char_type*); static const char_type* find(const char_type*, std::size_t, const char_type&); - static char_type* move(char_type*, const char_type*, std::size_t); - static char_type* copy(char_type*, const char_type*, std::size_t); - static char_type* assign(char_type*, std::size_t, char_type); + static char_type* move(char_type*, const char_type*, std::size_t); + static char_type* copy(char_type*, const char_type*, std::size_t); + static char_type* assign(char_type*, std::size_t, char_type); - static int_type not_eof(int_type); + static int_type not_eof(int_type); static char_type to_char_type(int_type); - static int_type to_int_type(char_type); - static bool eq_int_type(int_type, int_type); - static int_type eof(); + static int_type to_int_type(char_type); + static bool eq_int_type(int_type, int_type); + static int_type eof(); }; int main(int, char**) { diff --git a/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp b/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp --- a/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp +++ b/libcxx/test/std/strings/basic.string.hash/strings.pass.cpp @@ -23,34 +23,31 @@ #include "test_macros.h" template -void -test() -{ - typedef std::hash H; +void test() { + typedef std::hash H; #if TEST_STD_VER <= 14 - static_assert((std::is_same::value), "" ); - static_assert((std::is_same::value), "" ); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); #endif - ASSERT_NOEXCEPT(H()(T())); - - H h; - std::string g1 = "1234567890"; - std::string g2 = "1234567891"; - T s1(g1.begin(), g1.end()); - T s2(g2.begin(), g2.end()); - assert(h(s1) != h(s2)); + ASSERT_NOEXCEPT(H()(T())); + + H h; + std::string g1 = "1234567890"; + std::string g2 = "1234567891"; + T s1(g1.begin(), g1.end()); + T s2(g2.begin(), g2.end()); + assert(h(s1) != h(s2)); } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #ifndef TEST_HAS_NO_CHAR8_T - test(); + test(); #endif - test(); - test(); + test(); + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif return 0; diff --git a/libcxx/test/std/strings/basic.string.literals/literal.pass.cpp b/libcxx/test/std/strings/basic.string.literals/literal.pass.cpp --- a/libcxx/test/std/strings/basic.string.literals/literal.pass.cpp +++ b/libcxx/test/std/strings/basic.string.literals/literal.pass.cpp @@ -14,65 +14,85 @@ #include "test_macros.h" #ifndef TEST_HAS_NO_CHAR8_T - typedef std::u8string u8string; +typedef std::u8string u8string; #else - typedef std::string u8string; +typedef std::string u8string; #endif int main(int, char**) { - { - using namespace std::literals::string_literals; + { + using namespace std::literals::string_literals; - ASSERT_SAME_TYPE(decltype( "Hi"s), std::string); - ASSERT_SAME_TYPE(decltype(u8"Hi"s), u8string); + ASSERT_SAME_TYPE(decltype("Hi"s), std::string); + ASSERT_SAME_TYPE(decltype(u8"Hi"s), u8string); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - ASSERT_SAME_TYPE(decltype( L"Hi"s), std::wstring); + ASSERT_SAME_TYPE(decltype(L"Hi"s), std::wstring); #endif - ASSERT_SAME_TYPE(decltype( u"Hi"s), std::u16string); - ASSERT_SAME_TYPE(decltype( U"Hi"s), std::u32string); + ASSERT_SAME_TYPE(decltype(u"Hi"s), std::u16string); + ASSERT_SAME_TYPE(decltype(U"Hi"s), std::u32string); - std::string foo; + std::string foo; #ifndef TEST_HAS_NO_WIDE_CHARACTERS - std::wstring Lfoo; + std::wstring Lfoo; #endif - u8string u8foo; - std::u16string ufoo; - std::u32string Ufoo; + u8string u8foo; + std::u16string ufoo; + std::u32string Ufoo; - foo = ""s; assert( foo.size() == 0); - u8foo = u8""s; assert(u8foo.size() == 0); + foo = ""s; + assert(foo.size() == 0); + u8foo = u8""s; + assert(u8foo.size() == 0); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - Lfoo = L""s; assert( Lfoo.size() == 0); + Lfoo = L""s; + assert(Lfoo.size() == 0); #endif - ufoo = u""s; assert( ufoo.size() == 0); - Ufoo = U""s; assert( Ufoo.size() == 0); + ufoo = u""s; + assert(ufoo.size() == 0); + Ufoo = U""s; + assert(Ufoo.size() == 0); - foo = " "s; assert( foo.size() == 1); - u8foo = u8" "s; assert(u8foo.size() == 1); + foo = " "s; + assert(foo.size() == 1); + u8foo = u8" "s; + assert(u8foo.size() == 1); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - Lfoo = L" "s; assert( Lfoo.size() == 1); + Lfoo = L" "s; + assert(Lfoo.size() == 1); #endif - ufoo = u" "s; assert( ufoo.size() == 1); - Ufoo = U" "s; assert( Ufoo.size() == 1); + ufoo = u" "s; + assert(ufoo.size() == 1); + Ufoo = U" "s; + assert(Ufoo.size() == 1); - foo = "ABC"s; assert( foo == "ABC"); assert( foo == std::string ( "ABC")); - u8foo = u8"ABC"s; assert(u8foo == u8"ABC"); assert(u8foo == u8string (u8"ABC")); + foo = "ABC"s; + assert(foo == "ABC"); + assert(foo == std::string("ABC")); + u8foo = u8"ABC"s; + assert(u8foo == u8"ABC"); + assert(u8foo == u8string(u8"ABC")); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - Lfoo = L"ABC"s; assert( Lfoo == L"ABC"); assert( Lfoo == std::wstring ( L"ABC")); + Lfoo = L"ABC"s; + assert(Lfoo == L"ABC"); + assert(Lfoo == std::wstring(L"ABC")); #endif - ufoo = u"ABC"s; assert( ufoo == u"ABC"); assert( ufoo == std::u16string( u"ABC")); - Ufoo = U"ABC"s; assert( Ufoo == U"ABC"); assert( Ufoo == std::u32string( U"ABC")); - } - { - using namespace std::literals; - std::string foo = ""s; - assert(foo == std::string()); - } - { - using namespace std; - std::string foo = ""s; - assert(foo == std::string()); - } + ufoo = u"ABC"s; + assert(ufoo == u"ABC"); + assert(ufoo == std::u16string(u"ABC")); + Ufoo = U"ABC"s; + assert(Ufoo == U"ABC"); + assert(Ufoo == std::u32string(U"ABC")); + } + { + using namespace std::literals; + std::string foo = ""s; + assert(foo == std::string()); + } + { + using namespace std; + std::string foo = ""s; + assert(foo == std::string()); + } - return 0; + return 0; } diff --git a/libcxx/test/std/strings/basic.string/allocator_mismatch.verify.cpp b/libcxx/test/std/strings/basic.string/allocator_mismatch.verify.cpp --- a/libcxx/test/std/strings/basic.string/allocator_mismatch.verify.cpp +++ b/libcxx/test/std/strings/basic.string/allocator_mismatch.verify.cpp @@ -11,4 +11,5 @@ #include -std::basic_string, std::allocator > s; // expected-error@*:* {{Allocator::value_type must be same type as value_type}} +std::basic_string, std::allocator > + s; // expected-error@*:* {{Allocator::value_type must be same type as value_type}} diff --git a/libcxx/test/std/strings/basic.string/char.bad.verify.cpp b/libcxx/test/std/strings/basic.string/char.bad.verify.cpp --- a/libcxx/test/std/strings/basic.string/char.bad.verify.cpp +++ b/libcxx/test/std/strings/basic.string/char.bad.verify.cpp @@ -13,39 +13,40 @@ #include "test_traits.h" struct NotTrivial { - NotTrivial() : value(3) {} - int value; + NotTrivial() : value(3) {} + int value; }; struct NotStandardLayout { public: - NotStandardLayout() : one(1), two(2) {} - int sum() const { return one + two; } // silences "unused field 'two' warning" - int one; + NotStandardLayout() : one(1), two(2) {} + int sum() const { return one + two; } // silences "unused field 'two' warning" + int one; + private: - int two; + int two; }; void f() { - { - // array - typedef char C[3]; - static_assert(std::is_array::value, ""); - std::basic_string > s; - // expected-error-re@string:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string must not be an array}} - } - - { - // not trivial - static_assert(!std::is_trivial::value, ""); - std::basic_string > s; - // expected-error-re@string:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string must be trivial}} - } - - { - // not standard layout - static_assert(!std::is_standard_layout::value, ""); - std::basic_string > s; - // expected-error-re@string:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string must be standard-layout}} - } + { + // array + typedef char C[3]; + static_assert(std::is_array::value, ""); + std::basic_string > s; + // expected-error-re@string:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string must not be an array}} + } + + { + // not trivial + static_assert(!std::is_trivial::value, ""); + std::basic_string > s; + // expected-error-re@string:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string must be trivial}} + } + + { + // not standard layout + static_assert(!std::is_standard_layout::value, ""); + std::basic_string > s; + // expected-error-re@string:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string must be standard-layout}} + } } diff --git a/libcxx/test/std/strings/basic.string/range_concept_conformance.compile.pass.cpp b/libcxx/test/std/strings/basic.string/range_concept_conformance.compile.pass.cpp --- a/libcxx/test/std/strings/basic.string/range_concept_conformance.compile.pass.cpp +++ b/libcxx/test/std/strings/basic.string/range_concept_conformance.compile.pass.cpp @@ -15,8 +15,6 @@ #include #include - - static_assert(std::same_as, std::string::iterator>); static_assert(std::ranges::common_range); static_assert(std::ranges::random_access_range); diff --git a/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/at.pass.cpp @@ -22,37 +22,27 @@ #include "type_algorithms.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos) -{ - const S& cs = s; - if (pos < s.size()) - { - assert(s.at(pos) == s[pos]); - assert(cs.at(pos) == cs[pos]); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos) { + const S& cs = s; + if (pos < s.size()) { + assert(s.at(pos) == s[pos]); + assert(cs.at(pos) == cs[pos]); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.at(pos); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos >= s.size()); - } - try - { - TEST_IGNORE_NODISCARD cs.at(pos); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos >= s.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.at(pos); + assert(false); + } catch (std::out_of_range&) { + assert(pos >= s.size()); } + try { + TEST_IGNORE_NODISCARD cs.at(pos); + assert(false); + } catch (std::out_of_range&) { + assert(pos >= s.size()); + } + } #endif } @@ -68,9 +58,9 @@ struct TestCaller { template TEST_CONSTEXPR_CXX20 void operator()() { - test_string >(); + test_string >(); #if TEST_STD_VER >= 11 - test_string, min_allocator > >(); + test_string, min_allocator > >(); #endif } }; @@ -81,8 +71,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp @@ -18,18 +18,16 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s) -{ - const S& cs = s; - ASSERT_SAME_TYPE(decltype( s.back()), typename S::reference); - ASSERT_SAME_TYPE(decltype(cs.back()), typename S::const_reference); - LIBCPP_ASSERT_NOEXCEPT( s.back()); - LIBCPP_ASSERT_NOEXCEPT( cs.back()); - assert(&cs.back() == &cs[cs.size()-1]); - assert(&s.back() == &s[cs.size()-1]); - s.back() = typename S::value_type('z'); - assert(s.back() == typename S::value_type('z')); +TEST_CONSTEXPR_CXX20 void test(S s) { + const S& cs = s; + ASSERT_SAME_TYPE(decltype(s.back()), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs.back()), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT(s.back()); + LIBCPP_ASSERT_NOEXCEPT(cs.back()); + assert(&cs.back() == &cs[cs.size() - 1]); + assert(&s.back() == &s[cs.size() - 1]); + s.back() = typename S::value_type('z'); + assert(s.back() == typename S::value_type('z')); } template @@ -47,8 +45,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp @@ -18,18 +18,16 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s) -{ - const S& cs = s; - ASSERT_SAME_TYPE(decltype( s.front()), typename S::reference); - ASSERT_SAME_TYPE(decltype(cs.front()), typename S::const_reference); - LIBCPP_ASSERT_NOEXCEPT( s.front()); - LIBCPP_ASSERT_NOEXCEPT( cs.front()); - assert(&cs.front() == &cs[0]); - assert(&s.front() == &s[0]); - s.front() = typename S::value_type('z'); - assert(s.front() == typename S::value_type('z')); +TEST_CONSTEXPR_CXX20 void test(S s) { + const S& cs = s; + ASSERT_SAME_TYPE(decltype(s.front()), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs.front()), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT(s.front()); + LIBCPP_ASSERT_NOEXCEPT(cs.front()); + assert(&cs.front() == &cs[0]); + assert(&s.front() == &s[0]); + s.front() = typename S::value_type('z'); + assert(s.front() == typename S::value_type('z')); } template @@ -47,8 +45,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp @@ -21,14 +21,13 @@ TEST_CONSTEXPR_CXX20 void test_string() { S s("0123456789"); const S& cs = s; - ASSERT_SAME_TYPE(decltype( s[0]), typename S::reference); + ASSERT_SAME_TYPE(decltype(s[0]), typename S::reference); ASSERT_SAME_TYPE(decltype(cs[0]), typename S::const_reference); - LIBCPP_ASSERT_NOEXCEPT( s[0]); - LIBCPP_ASSERT_NOEXCEPT( cs[0]); - for (typename S::size_type i = 0; i < cs.size(); ++i) - { - assert(s[i] == static_cast('0' + i)); - assert(cs[i] == s[i]); + LIBCPP_ASSERT_NOEXCEPT(s[0]); + LIBCPP_ASSERT_NOEXCEPT(cs[0]); + for (typename S::size_type i = 0; i < cs.size(); ++i) { + assert(s[i] == static_cast('0' + i)); + assert(cs[i] == s[i]); } assert(cs[cs.size()] == '\0'); const S s2 = S(); @@ -44,8 +43,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/capacity.pass.cpp @@ -19,25 +19,22 @@ #include "test_macros.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, test_allocator_statistics& alloc_stats) -{ - alloc_stats.throw_after = 0; +TEST_CONSTEXPR_CXX20 void test(S s, test_allocator_statistics& alloc_stats) { + alloc_stats.throw_after = 0; #ifndef TEST_HAS_NO_EXCEPTIONS - try + try #endif - { - while (s.size() < s.capacity()) - s.push_back(typename S::value_type()); - assert(s.size() == s.capacity()); - } + { + while (s.size() < s.capacity()) + s.push_back(typename S::value_type()); + assert(s.size() == s.capacity()); + } #ifndef TEST_HAS_NO_EXCEPTIONS - catch (...) - { - assert(false); - } + catch (...) { + assert(false); + } #endif - alloc_stats.throw_after = INT_MAX; + alloc_stats.throw_after = INT_MAX; } TEST_CONSTEXPR_CXX20 bool test() { @@ -64,8 +61,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/clear.pass.cpp @@ -17,11 +17,9 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s) -{ - s.clear(); - assert(s.size() == 0); +TEST_CONSTEXPR_CXX20 void test(S s) { + s.clear(); + assert(s.size() == 0); } template @@ -47,8 +45,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/empty.pass.cpp @@ -17,11 +17,9 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s) -{ - ASSERT_NOEXCEPT(s.empty()); - assert(s.empty() == (s.size() == 0)); +TEST_CONSTEXPR_CXX20 void test(const S& s) { + ASSERT_NOEXCEPT(s.empty()); + assert(s.empty() == (s.size() == 0)); } template @@ -40,8 +38,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/length.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s) -{ - assert(s.length() == s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s) { + assert(s.length() == s.size()); } template @@ -39,8 +37,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/max_size.pass.cpp @@ -26,34 +26,34 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test1(const S& s) -{ - S s2(s); - const std::size_t sz = s2.max_size() - 1; - try { s2.resize(sz, 'x'); } - catch ( const std::bad_alloc & ) { return ; } - assert ( s2.size() == sz ); +TEST_CONSTEXPR_CXX20 void test1(const S& s) { + S s2(s); + const std::size_t sz = s2.max_size() - 1; + try { + s2.resize(sz, 'x'); + } catch (const std::bad_alloc&) { + return; + } + assert(s2.size() == sz); } template -TEST_CONSTEXPR_CXX20 void -test2(const S& s) -{ - S s2(s); - const std::size_t sz = s2.max_size(); - try { s2.resize(sz, 'x'); } - catch ( const std::bad_alloc & ) { return ; } - assert ( s.size() == sz ); +TEST_CONSTEXPR_CXX20 void test2(const S& s) { + S s2(s); + const std::size_t sz = s2.max_size(); + try { + s2.resize(sz, 'x'); + } catch (const std::bad_alloc&) { + return; + } + assert(s.size() == sz); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s) -{ - assert(s.max_size() >= s.size()); - test1(s); - test2(s); +TEST_CONSTEXPR_CXX20 void test(const S& s) { + assert(s.max_size() >= s.size()); + test1(s); + test2(s); } template @@ -83,8 +83,7 @@ } #endif -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 test_constexpr(); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/over_max_size.pass.cpp @@ -26,15 +26,16 @@ #include "min_allocator.h" template -void -test(const S& s) -{ - assert(s.max_size() >= s.size()); - S s2(s); - const std::size_t sz = s2.max_size() + 1; - try { s2.resize(sz, 'x'); } - catch ( const std::length_error & ) { return ; } - assert ( false ); +void test(const S& s) { + assert(s.max_size() >= s.size()); + S s2(s); + const std::size_t sz = s2.max_size() + 1; + try { + s2.resize(sz, 'x'); + } catch (const std::length_error&) { + return; + } + assert(false); } template @@ -53,8 +54,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); return 0; diff --git a/libcxx/test/std/strings/basic.string/string.capacity/reserve.deprecated_in_cxx20.verify.cpp b/libcxx/test/std/strings/basic.string/string.capacity/reserve.deprecated_in_cxx20.verify.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/reserve.deprecated_in_cxx20.verify.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/reserve.deprecated_in_cxx20.verify.cpp @@ -15,6 +15,6 @@ #include void f() { - std::string s; - s.reserve(); // expected-warning {{'reserve' is deprecated}} + std::string s; + s.reserve(); // expected-warning {{'reserve' is deprecated}} } diff --git a/libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/reserve.pass.cpp @@ -20,21 +20,19 @@ #include "min_allocator.h" template -void -test(typename S::size_type min_cap, typename S::size_type erased_index) -{ - S s(min_cap, 'a'); - s.erase(erased_index); - assert(s.size() == erased_index); - assert(s.capacity() >= min_cap); // Check that we really have at least this capacity. - - typename S::size_type old_cap = s.capacity(); - S s0 = s; - s.reserve(); - LIBCPP_ASSERT(s.__invariants()); - assert(s == s0); - assert(s.capacity() <= old_cap); - assert(s.capacity() >= s.size()); +void test(typename S::size_type min_cap, typename S::size_type erased_index) { + S s(min_cap, 'a'); + s.erase(erased_index); + assert(s.size() == erased_index); + assert(s.capacity() >= min_cap); // Check that we really have at least this capacity. + + typename S::size_type old_cap = s.capacity(); + S s0 = s; + s.reserve(); + LIBCPP_ASSERT(s.__invariants()); + assert(s == s0); + assert(s.capacity() <= old_cap); + assert(s.capacity() >= s.size()); } template @@ -53,8 +51,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); return 0; diff --git a/libcxx/test/std/strings/basic.string/string.capacity/reserve_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/reserve_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/reserve_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/reserve_size.pass.cpp @@ -23,42 +23,36 @@ template TEST_CONSTEXPR_CXX20 void -test(typename S::size_type min_cap, typename S::size_type erased_index, typename S::size_type res_arg) -{ - S s(min_cap, 'a'); - s.erase(erased_index); - assert(s.size() == erased_index); - assert(s.capacity() >= min_cap); // Check that we really have at least this capacity. +test(typename S::size_type min_cap, typename S::size_type erased_index, typename S::size_type res_arg) { + S s(min_cap, 'a'); + s.erase(erased_index); + assert(s.size() == erased_index); + assert(s.capacity() >= min_cap); // Check that we really have at least this capacity. #if TEST_STD_VER > 17 - typename S::size_type old_cap = s.capacity(); + typename S::size_type old_cap = s.capacity(); #endif - S s0 = s; - if (res_arg <= s.max_size()) - { - s.reserve(res_arg); - LIBCPP_ASSERT(s.__invariants()); - assert(s == s0); - assert(s.capacity() >= res_arg); - assert(s.capacity() >= s.size()); + S s0 = s; + if (res_arg <= s.max_size()) { + s.reserve(res_arg); + LIBCPP_ASSERT(s.__invariants()); + assert(s == s0); + assert(s.capacity() >= res_arg); + assert(s.capacity() >= s.size()); #if TEST_STD_VER > 17 - assert(s.capacity() >= old_cap); // reserve never shrinks as of P0966 (C++20) + assert(s.capacity() >= old_cap); // reserve never shrinks as of P0966 (C++20) #endif - } + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.reserve(res_arg); - LIBCPP_ASSERT(s.__invariants()); - assert(false); - } - catch (std::length_error&) - { - assert(res_arg > s.max_size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.reserve(res_arg); + LIBCPP_ASSERT(s.__invariants()); + assert(false); + } catch (std::length_error&) { + assert(res_arg > s.max_size()); } + } #endif } @@ -88,8 +82,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/resize_and_overwrite.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/resize_and_overwrite.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/resize_and_overwrite.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/resize_and_overwrite.pass.cpp @@ -49,7 +49,7 @@ LIBCPP_ASSERT(s.begin().base() == p); assert(std::all_of(p, p + n, [](auto ch) { return ch == 'a'; })); p[n - 1] = 'b'; - p[n] = 'c'; // will be overwritten + p[n] = 'c'; // will be overwritten return n; }); const S expected = S(N - 1, 'a') + S(1, 'b'); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/resize_size.pass.cpp @@ -18,28 +18,21 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type n, S expected) -{ - if (n <= s.max_size()) - { - s.resize(n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type n, S expected) { + if (n <= s.max_size()) { + s.resize(n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.resize(n); - assert(false); - } - catch (std::length_error&) - { - assert(n > s.max_size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.resize(n); + assert(false); + } catch (std::length_error&) { + assert(n > s.max_size()); } + } #endif } @@ -54,12 +47,13 @@ test(S("12345"), 5, S("12345")); test(S("12345"), 15, S("12345\0\0\0\0\0\0\0\0\0\0", 15)); test(S("12345678901234567890123456789012345678901234567890"), 0, S()); - test(S("12345678901234567890123456789012345678901234567890"), 10, - S("1234567890")); - test(S("12345678901234567890123456789012345678901234567890"), 50, - S("12345678901234567890123456789012345678901234567890")); - test(S("12345678901234567890123456789012345678901234567890"), 60, - S("12345678901234567890123456789012345678901234567890\0\0\0\0\0\0\0\0\0\0", 60)); + test(S("12345678901234567890123456789012345678901234567890"), 10, S("1234567890")); + test(S("12345678901234567890123456789012345678901234567890"), + 50, + S("12345678901234567890123456789012345678901234567890")); + test(S("12345678901234567890123456789012345678901234567890"), + 60, + S("12345678901234567890123456789012345678901234567890\0\0\0\0\0\0\0\0\0\0", 60)); test(S(), S::npos, S("not going to happen")); } @@ -72,8 +66,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/resize_size_char.pass.cpp @@ -18,28 +18,21 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type n, typename S::value_type c, S expected) -{ - if (n <= s.max_size()) - { - s.resize(n, c); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type n, typename S::value_type c, S expected) { + if (n <= s.max_size()) { + s.resize(n, c); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.resize(n, c); - assert(false); - } - catch (std::length_error&) - { - assert(n > s.max_size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.resize(n, c); + assert(false); + } catch (std::length_error&) { + assert(n > s.max_size()); } + } #endif } @@ -54,12 +47,15 @@ test(S("12345"), 5, 'a', S("12345")); test(S("12345"), 15, 'a', S("12345aaaaaaaaaa")); test(S("12345678901234567890123456789012345678901234567890"), 0, 'a', S()); - test(S("12345678901234567890123456789012345678901234567890"), 10, 'a', - S("1234567890")); - test(S("12345678901234567890123456789012345678901234567890"), 50, 'a', - S("12345678901234567890123456789012345678901234567890")); - test(S("12345678901234567890123456789012345678901234567890"), 60, 'a', - S("12345678901234567890123456789012345678901234567890aaaaaaaaaa")); + test(S("12345678901234567890123456789012345678901234567890"), 10, 'a', S("1234567890")); + test(S("12345678901234567890123456789012345678901234567890"), + 50, + 'a', + S("12345678901234567890123456789012345678901234567890")); + test(S("12345678901234567890123456789012345678901234567890"), + 60, + 'a', + S("12345678901234567890123456789012345678901234567890aaaaaaaaaa")); test(S(), S::npos, 'a', S("not going to happen")); } @@ -72,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.explicit_instantiation.sh.cpp b/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.explicit_instantiation.sh.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.explicit_instantiation.sh.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.explicit_instantiation.sh.cpp @@ -31,7 +31,7 @@ typedef std::mbstate_t state_type; typedef std::fpos pos_type; - static void assign(char_type&, const char_type&) { } + static void assign(char_type&, const char_type&) {} static bool eq(const char_type&, const char_type&) { return false; } static bool lt(const char_type&, const char_type&) { return false; } static int compare(const char_type*, const char_type*, std::size_t) { return 0; } @@ -53,7 +53,7 @@ extern template class std::basic_string; int main(int, char**) { - std::basic_string s; - s.shrink_to_fit(); + std::basic_string s; + s.shrink_to_fit(); } #endif diff --git a/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/shrink_to_fit.pass.cpp @@ -17,16 +17,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s) -{ - typename S::size_type old_cap = s.capacity(); - S s0 = s; - s.shrink_to_fit(); - LIBCPP_ASSERT(s.__invariants()); - assert(s == s0); - assert(s.capacity() <= old_cap); - assert(s.capacity() >= s.size()); +TEST_CONSTEXPR_CXX20 void test(S s) { + typename S::size_type old_cap = s.capacity(); + S s0 = s; + s.shrink_to_fit(); + LIBCPP_ASSERT(s.__invariants()); + assert(s == s0); + assert(s.capacity() <= old_cap); + assert(s.capacity() >= s.size()); } template @@ -52,8 +50,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp b/libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.capacity/size.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::size_type c) -{ - assert(s.size() == c); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::size_type c) { + assert(s.size() == c); } template @@ -39,8 +37,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/T_size_size.pass.cpp @@ -25,69 +25,55 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(SV sv, std::size_t pos, std::size_t n) -{ - typedef typename S::traits_type T; - typedef typename S::allocator_type A; - typedef typename S::size_type Size; - if (pos <= sv.size()) - { - S s2(sv, static_cast(pos), static_cast(n)); - LIBCPP_ASSERT(s2.__invariants()); - assert(pos <= sv.size()); - std::size_t rlen = std::min(sv.size() - pos, n); - assert(s2.size() == rlen); - assert(T::compare(s2.data(), sv.data() + pos, rlen) == 0); - assert(s2.get_allocator() == A()); - assert(s2.capacity() >= s2.size()); - } +TEST_CONSTEXPR_CXX20 void test(SV sv, std::size_t pos, std::size_t n) { + typedef typename S::traits_type T; + typedef typename S::allocator_type A; + typedef typename S::size_type Size; + if (pos <= sv.size()) { + S s2(sv, static_cast(pos), static_cast(n)); + LIBCPP_ASSERT(s2.__invariants()); + assert(pos <= sv.size()); + std::size_t rlen = std::min(sv.size() - pos, n); + assert(s2.size() == rlen); + assert(T::compare(s2.data(), sv.data() + pos, rlen) == 0); + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - S s2(sv, static_cast(pos), static_cast(n)); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > sv.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + S s2(sv, static_cast(pos), static_cast(n)); + assert(false); + } catch (std::out_of_range&) { + assert(pos > sv.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test(SV sv, std::size_t pos, std::size_t n, const typename S::allocator_type& a) -{ - typedef typename S::traits_type T; - typedef typename S::size_type Size; - if (pos <= sv.size()) - { - S s2(sv, static_cast(pos), static_cast(n), a); - LIBCPP_ASSERT(s2.__invariants()); - assert(pos <= sv.size()); - std::size_t rlen = std::min(sv.size() - pos, n); - assert(s2.size() == rlen); - assert(T::compare(s2.data(), sv.data() + pos, rlen) == 0); - assert(s2.get_allocator() == a); - assert(s2.capacity() >= s2.size()); - } +TEST_CONSTEXPR_CXX20 void test(SV sv, std::size_t pos, std::size_t n, const typename S::allocator_type& a) { + typedef typename S::traits_type T; + typedef typename S::size_type Size; + if (pos <= sv.size()) { + S s2(sv, static_cast(pos), static_cast(n), a); + LIBCPP_ASSERT(s2.__invariants()); + assert(pos <= sv.size()); + std::size_t rlen = std::min(sv.size() - pos, n); + assert(s2.size() == rlen); + assert(T::compare(s2.data(), sv.data() + pos, rlen) == 0); + assert(s2.get_allocator() == a); + assert(s2.capacity() >= s2.size()); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - S s2(sv, static_cast(pos), static_cast(n), a); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > sv.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + S s2(sv, static_cast(pos), static_cast(n), a); + assert(false); + } catch (std::out_of_range&) { + assert(pos > sv.size()); } + } #endif } @@ -95,98 +81,97 @@ { typedef test_allocator A; typedef std::basic_string_view > SV; - typedef std::basic_string , A> S; - - test(SV(), 0, 0); - test(SV(), 0, 1); - test(SV(), 1, 0); - test(SV(), 1, 1); - test(SV(), 1, 2); - test(SV("1"), 0, 0); - test(SV("1"), 0, 1); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 0); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 1); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 10); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 100); - - test(SV(), 0, 0, A(4)); - test(SV(), 0, 1, A(4)); - test(SV(), 1, 0, A(4)); - test(SV(), 1, 1, A(4)); - test(SV(), 1, 2, A(4)); - test(SV("1"), 0, 0, A(6)); - test(SV("1"), 0, 1, A(6)); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 0, A(8)); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 1, A(8)); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 10, A(8)); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 100, A(8)); + typedef std::basic_string, A> S; + + test(SV(), 0, 0); + test(SV(), 0, 1); + test(SV(), 1, 0); + test(SV(), 1, 1); + test(SV(), 1, 2); + test(SV("1"), 0, 0); + test(SV("1"), 0, 1); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 0); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 1); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 10); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 100); + + test(SV(), 0, 0, A(4)); + test(SV(), 0, 1, A(4)); + test(SV(), 1, 0, A(4)); + test(SV(), 1, 1, A(4)); + test(SV(), 1, 2, A(4)); + test(SV("1"), 0, 0, A(6)); + test(SV("1"), 0, 1, A(6)); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 0, A(8)); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 1, A(8)); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 10, A(8)); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 100, A(8)); } #if TEST_STD_VER >= 11 { typedef min_allocator A; typedef std::basic_string_view > SV; - typedef std::basic_string , A> S; - - test(SV(), 0, 0); - test(SV(), 0, 1); - test(SV(), 1, 0); - test(SV(), 1, 1); - test(SV(), 1, 2); - test(SV("1"), 0, 0); - test(SV("1"), 0, 1); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 0); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 1); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 10); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 100); - - test(SV(), 0, 0, A()); - test(SV(), 0, 1, A()); - test(SV(), 1, 0, A()); - test(SV(), 1, 1, A()); - test(SV(), 1, 2, A()); - test(SV("1"), 0, 0, A()); - test(SV("1"), 0, 1, A()); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 0, A()); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 1, A()); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 10, A()); - test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 100, A()); + typedef std::basic_string, A> S; + + test(SV(), 0, 0); + test(SV(), 0, 1); + test(SV(), 1, 0); + test(SV(), 1, 1); + test(SV(), 1, 2); + test(SV("1"), 0, 0); + test(SV("1"), 0, 1); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 0); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 1); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 10); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 100); + + test(SV(), 0, 0, A()); + test(SV(), 0, 1, A()); + test(SV(), 1, 0, A()); + test(SV(), 1, 1, A()); + test(SV(), 1, 2, A()); + test(SV("1"), 0, 0, A()); + test(SV("1"), 0, 1, A()); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 0, A()); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 1, A()); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 10, A()); + test(SV("1234567890123456789012345678901234567890123456789012345678901234567890"), 50, 100, A()); } #endif { typedef std::string S; typedef std::string_view SV; - S s = "ABCD"; - SV sv = "EFGH"; + S s = "ABCD"; + SV sv = "EFGH"; char arr[] = "IJKL"; - S s1("CDEF", 4); // calls ctor(const char *, len) + S s1("CDEF", 4); // calls ctor(const char *, len) assert(s1 == "CDEF"); S s2("QRST", 0, 3); // calls ctor(string("QRST", pos, len) assert(s2 == "QRS"); - S s3(sv, 0, std::string::npos); // calls ctor(T, pos, npos) + S s3(sv, 0, std::string::npos); // calls ctor(T, pos, npos) assert(s3 == sv); - S s4(sv, 0, 3); // calls ctor(T, pos, len) + S s4(sv, 0, 3); // calls ctor(T, pos, len) assert(s4 == "EFG"); - S s5(arr, 0, 2); // calls ctor(const char *, len) + S s5(arr, 0, 2); // calls ctor(const char *, len) assert(s5 == "IJ"); - S s6(arr, 0); // calls ctor(const char *, len) + S s6(arr, 0); // calls ctor(const char *, len) assert(s6 == ""); - S s7(s.data(), 2); // calls ctor(const char *, len) + S s7(s.data(), 2); // calls ctor(const char *, len) assert(s7 == "AB"); } return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/alloc.pass.cpp @@ -18,14 +18,12 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test() -{ - { +TEST_CONSTEXPR_CXX20 void test() { + { #if TEST_STD_VER > 14 - static_assert((noexcept(S{})), "" ); + static_assert((noexcept(S{})), ""); #elif TEST_STD_VER >= 11 - static_assert((noexcept(S()) == noexcept(typename S::allocator_type())), "" ); + static_assert((noexcept(S()) == noexcept(typename S::allocator_type())), ""); #endif S s; LIBCPP_ASSERT(s.__invariants()); @@ -33,12 +31,14 @@ assert(s.size() == 0); assert(s.capacity() >= s.size()); assert(s.get_allocator() == typename S::allocator_type()); - } - { + } + { #if TEST_STD_VER > 14 - static_assert((noexcept(S{typename S::allocator_type{}})), "" ); + static_assert((noexcept(S{typename S::allocator_type{}})), ""); #elif TEST_STD_VER >= 11 - static_assert((noexcept(S(typename S::allocator_type())) == std::is_nothrow_copy_constructible::value), "" ); + static_assert((noexcept(S(typename S::allocator_type())) == + std::is_nothrow_copy_constructible::value), + ""); #endif S s(typename S::allocator_type(5)); LIBCPP_ASSERT(s.__invariants()); @@ -46,41 +46,41 @@ assert(s.size() == 0); assert(s.capacity() >= s.size()); assert(s.get_allocator() == typename S::allocator_type(5)); - } + } } #if TEST_STD_VER >= 11 template -TEST_CONSTEXPR_CXX20 void -test2() -{ - { -#if TEST_STD_VER > 14 - static_assert((noexcept(S{})), "" ); -#elif TEST_STD_VER >= 11 - static_assert((noexcept(S()) == noexcept(typename S::allocator_type())), "" ); -#endif +TEST_CONSTEXPR_CXX20 void test2() { + { +# if TEST_STD_VER > 14 + static_assert((noexcept(S{})), ""); +# elif TEST_STD_VER >= 11 + static_assert((noexcept(S()) == noexcept(typename S::allocator_type())), ""); +# endif S s; LIBCPP_ASSERT(s.__invariants()); assert(s.data()); assert(s.size() == 0); assert(s.capacity() >= s.size()); assert(s.get_allocator() == typename S::allocator_type()); - } - { -#if TEST_STD_VER > 14 - static_assert((noexcept(S{typename S::allocator_type{}})), "" ); -#elif TEST_STD_VER >= 11 - static_assert((noexcept(S(typename S::allocator_type())) == std::is_nothrow_copy_constructible::value), "" ); -#endif + } + { +# if TEST_STD_VER > 14 + static_assert((noexcept(S{typename S::allocator_type{}})), ""); +# elif TEST_STD_VER >= 11 + static_assert((noexcept(S(typename S::allocator_type())) == + std::is_nothrow_copy_constructible::value), + ""); +# endif S s(typename S::allocator_type{}); LIBCPP_ASSERT(s.__invariants()); assert(s.data()); assert(s.size() == 0); assert(s.capacity() >= s.size()); assert(s.get_allocator() == typename S::allocator_type()); - } + } } #endif @@ -95,8 +95,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/brace_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/brace_assignment.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/brace_assignment.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/brace_assignment.pass.cpp @@ -23,20 +23,19 @@ // ambiguous. { std::string s = "hello world"; - s = {}; + s = {}; assert(s.empty()); } { std::string s = "hello world"; - s = {"abc", 2}; + s = {"abc", 2}; assert(s == "ab"); } return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/char_assignment.pass.cpp @@ -17,15 +17,13 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s1, typename S::value_type s2) -{ - typedef typename S::traits_type T; - s1 = s2; - LIBCPP_ASSERT(s1.__invariants()); - assert(s1.size() == 1); - assert(T::eq(s1[0], s2)); - assert(s1.capacity() >= s1.size()); +TEST_CONSTEXPR_CXX20 void test(S s1, typename S::value_type s2) { + typedef typename S::traits_type T; + s1 = s2; + LIBCPP_ASSERT(s1.__invariants()); + assert(s1.size() == 1); + assert(T::eq(s1[0], s2)); + assert(s1.capacity() >= s1.size()); } template @@ -45,8 +43,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/copy.pass.cpp @@ -18,14 +18,12 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s1) -{ - S s2 = s1; - LIBCPP_ASSERT(s2.__invariants()); - assert(s2 == s1); - assert(s2.capacity() >= s2.size()); - assert(s2.get_allocator() == s1.get_allocator()); +TEST_CONSTEXPR_CXX20 void test(S s1) { + S s2 = s1; + LIBCPP_ASSERT(s2.__invariants()); + assert(s2 == s1); + assert(s2.capacity() >= s2.size()); + assert(s2.get_allocator() == s1.get_allocator()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -49,8 +47,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/copy_alloc.pass.cpp @@ -19,73 +19,70 @@ #ifndef TEST_HAS_NO_EXCEPTIONS struct alloc_imp { - bool active; - - TEST_CONSTEXPR alloc_imp() : active(true) {} - - template - T* allocate(std::size_t n) - { - if (active) - return static_cast(std::malloc(n * sizeof(T))); - else - throw std::bad_alloc(); - } - - template - void deallocate(T* p, std::size_t) { std::free(p); } - void activate () { active = true; } - void deactivate() { active = false; } + bool active; + + TEST_CONSTEXPR alloc_imp() : active(true) {} + + template + T* allocate(std::size_t n) { + if (active) + return static_cast(std::malloc(n * sizeof(T))); + else + throw std::bad_alloc(); + } + + template + void deallocate(T* p, std::size_t) { + std::free(p); + } + void activate() { active = true; } + void deactivate() { active = false; } }; template struct poca_alloc { - typedef T value_type; - typedef std::true_type propagate_on_container_copy_assignment; + typedef T value_type; + typedef std::true_type propagate_on_container_copy_assignment; - alloc_imp *imp; + alloc_imp* imp; - TEST_CONSTEXPR poca_alloc(alloc_imp *imp_) : imp (imp_) {} + TEST_CONSTEXPR poca_alloc(alloc_imp* imp_) : imp(imp_) {} - template - TEST_CONSTEXPR poca_alloc(const poca_alloc& other) : imp(other.imp) {} + template + TEST_CONSTEXPR poca_alloc(const poca_alloc& other) : imp(other.imp) {} - T* allocate (std::size_t n) { return imp->allocate(n);} - void deallocate(T* p, std::size_t n) { imp->deallocate(p, n); } + T* allocate(std::size_t n) { return imp->allocate(n); } + void deallocate(T* p, std::size_t n) { imp->deallocate(p, n); } }; template -bool operator==(const poca_alloc& lhs, const poca_alloc& rhs) -{ - return lhs.imp == rhs.imp; +bool operator==(const poca_alloc& lhs, const poca_alloc& rhs) { + return lhs.imp == rhs.imp; } template -bool operator!=(const poca_alloc& lhs, const poca_alloc& rhs) -{ - return lhs.imp != rhs.imp; +bool operator!=(const poca_alloc& lhs, const poca_alloc& rhs) { + return lhs.imp != rhs.imp; } template -TEST_CONSTEXPR_CXX20 void test_assign(S &s1, const S& s2) -{ - try { s1 = s2; } - catch ( std::bad_alloc &) { return; } - assert(false); +TEST_CONSTEXPR_CXX20 void test_assign(S& s1, const S& s2) { + try { + s1 = s2; + } catch (std::bad_alloc&) { + return; + } + assert(false); } #endif - - template -TEST_CONSTEXPR_CXX20 void -test(S s1, const typename S::allocator_type& a) -{ - S s2(s1, a); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2 == s1); - assert(s2.capacity() >= s2.size()); - assert(s2.get_allocator() == a); +TEST_CONSTEXPR_CXX20 void test(S s1, const typename S::allocator_type& a) { + S s2(s1, a); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2 == s1); + assert(s2.capacity() >= s2.size()); + assert(s2.get_allocator() == a); } TEST_CONSTEXPR_CXX20 bool test() { @@ -105,12 +102,12 @@ test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), A()); } -#ifndef TEST_HAS_NO_EXCEPTIONS +# ifndef TEST_HAS_NO_EXCEPTIONS if (!TEST_IS_CONSTANT_EVALUATED) { typedef poca_alloc A; typedef std::basic_string, A> S; - const char * p1 = "This is my first string"; - const char * p2 = "This is my second string"; + const char* p1 = "This is my first string"; + const char* p2 = "This is my second string"; alloc_imp imp1; alloc_imp imp2; @@ -125,14 +122,13 @@ assert(s1 == p1); assert(s2 == p2); } -#endif +# endif #endif return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/copy_assignment.pass.cpp @@ -18,13 +18,11 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s1, const S& s2) -{ - s1 = s2; - LIBCPP_ASSERT(s1.__invariants()); - assert(s1 == s2); - assert(s1.capacity() >= s1.size()); +TEST_CONSTEXPR_CXX20 void test(S s1, const S& s2) { + s1 = s2; + LIBCPP_ASSERT(s1.__invariants()); + assert(s1 == s2); + assert(s1.capacity() >= s1.size()); } template @@ -35,15 +33,13 @@ test(S("1"), S("2")); test(S("1"), S("2")); - test(S(), - S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); - test(S("123456789"), - S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + test(S(), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + test(S("123456789"), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), - S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); test(S("1234567890123456789012345678901234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890123456789012345678901234567890"), - S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + "1234567890123456789012345678901234567890123456789012345678901234567890"), + S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -53,7 +49,7 @@ #endif #if TEST_STD_VER >= 11 - { // LWG 2946 + { // LWG 2946 std::string s; s = {"abc", 1}; assert(s.size() == 1); @@ -64,8 +60,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/default.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/default.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/default.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/default.pass.cpp @@ -20,9 +20,11 @@ // Test the noexcept specification, which is a conforming extension LIBCPP_STATIC_ASSERT(std::is_nothrow_default_constructible::value, ""); LIBCPP_STATIC_ASSERT(std::is_nothrow_default_constructible< - std::basic_string, test_allocator>>::value, ""); + std::basic_string, test_allocator>>::value, + ""); LIBCPP_STATIC_ASSERT(!std::is_nothrow_default_constructible< - std::basic_string, limited_allocator>>::value, ""); + std::basic_string, limited_allocator>>::value, + ""); #endif TEST_CONSTEXPR_CXX20 bool test() { @@ -32,8 +34,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/dtor.pass.cpp @@ -19,12 +19,11 @@ #include "test_allocator.h" template -struct throwing_alloc -{ - typedef T value_type; - throwing_alloc(const throwing_alloc&); - T *allocate(std::size_t); - ~throwing_alloc() noexcept(false); +struct throwing_alloc { + typedef T value_type; + throwing_alloc(const throwing_alloc&); + T* allocate(std::size_t); + ~throwing_alloc() noexcept(false); }; // Test that it's possible to take the address of basic_string's destructors @@ -35,10 +34,10 @@ #endif static_assert(std::is_nothrow_destructible::value, ""); -static_assert(std::is_nothrow_destructible< - std::basic_string, test_allocator>>::value, ""); -LIBCPP_STATIC_ASSERT(!std::is_nothrow_destructible< - std::basic_string, throwing_alloc>>::value, ""); +static_assert( + std::is_nothrow_destructible< std::basic_string, test_allocator>>::value, ""); +LIBCPP_STATIC_ASSERT( + !std::is_nothrow_destructible< std::basic_string, throwing_alloc>>::value, ""); TEST_CONSTEXPR_CXX20 bool test() { test_allocator_statistics alloc_stats; @@ -53,8 +52,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/from_range.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/from_range.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/from_range.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/from_range.pass.cpp @@ -21,9 +21,8 @@ #include "test_macros.h" template -concept StringHasFromRangeAllocCtr = requires (Range&& range, const Alloc& alloc) { - Container(std::from_range, std::forward(range), alloc); -}; +concept StringHasFromRangeAllocCtr = + requires(Range&& range, const Alloc& alloc) { Container(std::from_range, std::forward(range), alloc); }; constexpr bool test_constraints() { // (from_range, range) @@ -42,7 +41,7 @@ // (from_range, range, alloc) // // Input range with the same value type. - using Alloc = test_allocator; + using Alloc = test_allocator; using StringWithAlloc = std::basic_string, Alloc>; static_assert(StringHasFromRangeAllocCtr, Alloc>); // Input range with a convertible value type. @@ -59,9 +58,7 @@ return true; } -template +template constexpr void test_with_input(std::vector input) { auto b = Iter(input.data()); auto e = Iter(input.data() + input.size()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/from_range_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/from_range_deduction.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/from_range_deduction.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/from_range_deduction.pass.cpp @@ -43,7 +43,9 @@ // Note: defining `value_type` is a workaround because one of the deduction guides will end up instantiating // `basic_string`, and that would fail with a hard error if the given allocator doesn't define `value_type`. - struct BadAlloc { using value_type = char; }; + struct BadAlloc { + using value_type = char; + }; SequenceContainerDeductionGuidesSfinaeAway, BadAlloc>(); return 0; diff --git a/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/implicit_deduction_guides.pass.cpp @@ -46,18 +46,17 @@ // (14) basic_string(BSV, A const& = A()) // (15) basic_string(const T&, size_type, size_type, A const& = A()) TEST_CONSTEXPR_CXX20 bool test() { - using TestSizeT = test_allocator::size_type; - { // Testing (1) - // Nothing to do. Cannot deduce without any arguments. - } - { // Testing (2) - // This overload isn't compatible with implicit deduction guides as - // specified in the standard. - // const test_allocator alloc{}; - // std::basic_string s(alloc); - } - { // Testing (3) w/o allocator + { + // Testing (1) + // Nothing to do. Cannot deduce without any arguments. + } { + // Testing (2) + // This overload isn't compatible with implicit deduction guides as + // specified in the standard. + // const test_allocator alloc{}; + // std::basic_string s(alloc); + } { // Testing (3) w/o allocator std::basic_string s(6ull, 'a'); ASSERT_SAME_TYPE(decltype(s), std::string); assert(s == "aaaaaa"); @@ -70,7 +69,7 @@ } { // Testing (3) w/ allocator std::basic_string s(6ull, 'a', test_allocator{}); - ASSERT_SAME_TYPE(decltype(s), BStr>); + ASSERT_SAME_TYPE(decltype(s), BStr>); assert(s == "aaaaaa"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS @@ -86,9 +85,7 @@ assert(s == "bc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; + using WStr = std::basic_string, test_allocator>; const WStr win(L"abcdef"); std::basic_string w(win, (TestSizeT)3); ASSERT_SAME_TYPE(decltype(w), WStr); @@ -102,9 +99,7 @@ assert(s == "bc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; + using WStr = std::basic_string, test_allocator>; const WStr win(L"abcdef"); std::basic_string w(win, (TestSizeT)3, test_allocator{}); ASSERT_SAME_TYPE(decltype(w), WStr); @@ -118,9 +113,7 @@ assert(s == "bc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; + using WStr = std::basic_string, test_allocator>; const WStr win(L"abcdef"); std::basic_string w(win, (TestSizeT)2, (TestSizeT)3); ASSERT_SAME_TYPE(decltype(w), WStr); @@ -134,9 +127,7 @@ assert(s == "bc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; + using WStr = std::basic_string, test_allocator>; const WStr win(L"abcdef"); std::basic_string w(win, (TestSizeT)2, (TestSizeT)3, test_allocator{}); ASSERT_SAME_TYPE(decltype(w), WStr); @@ -160,9 +151,7 @@ assert(s == "ab"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; + using WStr = std::basic_string, test_allocator>; std::basic_string w(L"abcdef", (TestSizeT)3, test_allocator{}); ASSERT_SAME_TYPE(decltype(w), WStr); assert(w == L"abc"); @@ -185,191 +174,178 @@ assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; + using WStr = std::basic_string, test_allocator>; std::basic_string w(L"abcdef", test_allocator{}); ASSERT_SAME_TYPE(decltype(w), WStr); assert(w == L"abcdef"); #endif } { // (8) w/o allocator - using It = cpp17_input_iterator; + using It = cpp17_input_iterator; const char* input = "abcdef"; std::basic_string s(It(input), It(input + 3), std::allocator{}); ASSERT_SAME_TYPE(decltype(s), std::string); assert(s == "abc"); } - { // (8) w/ allocator - { - using Expect = std::basic_string, test_allocator>; - using It = cpp17_input_iterator; - const char* input = "abcdef"; - std::basic_string s(It(input), It(input + 3), test_allocator{}); - ASSERT_SAME_TYPE(decltype(s), Expect); - assert(s == "abc"); - } + {// (8) w/ allocator + {using Expect = std::basic_string, test_allocator>; + using It = cpp17_input_iterator; + const char* input = "abcdef"; + std::basic_string s(It(input), It(input + 3), test_allocator{}); + ASSERT_SAME_TYPE(decltype(s), Expect); + assert(s == "abc"); +} #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - using ExpectW = std::basic_string, test_allocator>; - using It = cpp17_input_iterator; - const wchar_t* input = L"abcdef"; - std::basic_string s(It(input), It(input + 3), test_allocator{}); - ASSERT_SAME_TYPE(decltype(s), ExpectW); - assert(s == L"abc"); - } +{ + using ExpectW = std::basic_string, test_allocator>; + using It = cpp17_input_iterator; + const wchar_t* input = L"abcdef"; + std::basic_string s(It(input), It(input + 3), test_allocator{}); + ASSERT_SAME_TYPE(decltype(s), ExpectW); + assert(s == L"abc"); +} #endif - } - { // Testing (9) - const std::string sin("abc"); - std::basic_string s(sin); - ASSERT_SAME_TYPE(decltype(s), std::string); - assert(s == "abc"); +} +{ // Testing (9) + const std::string sin("abc"); + std::basic_string s(sin); + ASSERT_SAME_TYPE(decltype(s), std::string); + assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; - const WStr win(L"abcdef"); - std::basic_string w(win); - ASSERT_SAME_TYPE(decltype(w), WStr); - assert(w == L"abcdef"); + using WStr = std::basic_string, test_allocator>; + const WStr win(L"abcdef"); + std::basic_string w(win); + ASSERT_SAME_TYPE(decltype(w), WStr); + assert(w == L"abcdef"); #endif - } - { // Testing (10) - const std::string sin("abc"); - std::basic_string s(sin, std::allocator{}); - ASSERT_SAME_TYPE(decltype(s), std::string); - assert(s == "abc"); +} +{ // Testing (10) + const std::string sin("abc"); + std::basic_string s(sin, std::allocator{}); + ASSERT_SAME_TYPE(decltype(s), std::string); + assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; - const WStr win(L"abcdef"); - std::basic_string w(win, test_allocator{}); - ASSERT_SAME_TYPE(decltype(w), WStr); - assert(w == L"abcdef"); + using WStr = std::basic_string, test_allocator>; + const WStr win(L"abcdef"); + std::basic_string w(win, test_allocator{}); + ASSERT_SAME_TYPE(decltype(w), WStr); + assert(w == L"abcdef"); #endif - } - { // Testing (11) - std::string sin("abc"); - std::basic_string s(std::move(sin)); - ASSERT_SAME_TYPE(decltype(s), std::string); - assert(s == "abc"); +} +{ // Testing (11) + std::string sin("abc"); + std::basic_string s(std::move(sin)); + ASSERT_SAME_TYPE(decltype(s), std::string); + assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; - WStr win(L"abcdef"); - std::basic_string w(std::move(win)); - ASSERT_SAME_TYPE(decltype(w), WStr); - assert(w == L"abcdef"); + using WStr = std::basic_string, test_allocator>; + WStr win(L"abcdef"); + std::basic_string w(std::move(win)); + ASSERT_SAME_TYPE(decltype(w), WStr); + assert(w == L"abcdef"); #endif - } - { // Testing (12) - std::string sin("abc"); - std::basic_string s(std::move(sin), std::allocator{}); - ASSERT_SAME_TYPE(decltype(s), std::string); - assert(s == "abc"); +} +{ // Testing (12) + std::string sin("abc"); + std::basic_string s(std::move(sin), std::allocator{}); + ASSERT_SAME_TYPE(decltype(s), std::string); + assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using WStr = std::basic_string, - test_allocator>; - WStr win(L"abcdef"); - std::basic_string w(std::move(win), test_allocator{}); - ASSERT_SAME_TYPE(decltype(w), WStr); - assert(w == L"abcdef"); + using WStr = std::basic_string, test_allocator>; + WStr win(L"abcdef"); + std::basic_string w(std::move(win), test_allocator{}); + ASSERT_SAME_TYPE(decltype(w), WStr); + assert(w == L"abcdef"); #endif - } - { // Testing (13) w/o allocator - std::basic_string s({'a', 'b', 'c'}); - ASSERT_SAME_TYPE(decltype(s), std::string); - assert(s == "abc"); +} +{ // Testing (13) w/o allocator + std::basic_string s({'a', 'b', 'c'}); + ASSERT_SAME_TYPE(decltype(s), std::string); + assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - std::basic_string w({L'a', L'b', L'c'}); - ASSERT_SAME_TYPE(decltype(w), std::wstring); - assert(w == L"abc"); + std::basic_string w({L'a', L'b', L'c'}); + ASSERT_SAME_TYPE(decltype(w), std::wstring); + assert(w == L"abc"); #endif - } - { // Testing (13) w/ allocator - std::basic_string s({'a', 'b', 'c'}, test_allocator{}); - ASSERT_SAME_TYPE(decltype(s), BStr>); - assert(s == "abc"); +} +{ // Testing (13) w/ allocator + std::basic_string s({'a', 'b', 'c'}, test_allocator{}); + ASSERT_SAME_TYPE(decltype(s), BStr>); + assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - std::basic_string w({L'a', L'b', L'c'}, test_allocator{}); - ASSERT_SAME_TYPE(decltype(w), BStr>); - assert(w == L"abc"); + std::basic_string w({L'a', L'b', L'c'}, test_allocator{}); + ASSERT_SAME_TYPE(decltype(w), BStr>); + assert(w == L"abc"); #endif - } - { // Testing (14) w/o allocator - std::string_view sv("abc"); - std::basic_string s(sv); - ASSERT_SAME_TYPE(decltype(s), std::string); - assert(s == "abc"); +} +{ // Testing (14) w/o allocator + std::string_view sv("abc"); + std::basic_string s(sv); + ASSERT_SAME_TYPE(decltype(s), std::string); + assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using Expect = std::basic_string>; - std::basic_string_view> BSV(L"abcdef"); - std::basic_string w(BSV); - ASSERT_SAME_TYPE(decltype(w), Expect); - assert(w == L"abcdef"); + using Expect = std::basic_string>; + std::basic_string_view> BSV(L"abcdef"); + std::basic_string w(BSV); + ASSERT_SAME_TYPE(decltype(w), Expect); + assert(w == L"abcdef"); #endif - } - { // Testing (14) w/ allocator - using ExpectS = std::basic_string, test_allocator>; - std::string_view sv("abc"); - std::basic_string s(sv, test_allocator{}); - ASSERT_SAME_TYPE(decltype(s), ExpectS); - assert(s == "abc"); +} +{ // Testing (14) w/ allocator + using ExpectS = std::basic_string, test_allocator>; + std::string_view sv("abc"); + std::basic_string s(sv, test_allocator{}); + ASSERT_SAME_TYPE(decltype(s), ExpectS); + assert(s == "abc"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using ExpectW = std::basic_string, - test_allocator>; - std::basic_string_view> BSV(L"abcdef"); - std::basic_string w(BSV, test_allocator{}); - ASSERT_SAME_TYPE(decltype(w), ExpectW); - assert(w == L"abcdef"); + using ExpectW = std::basic_string, test_allocator>; + std::basic_string_view> BSV(L"abcdef"); + std::basic_string w(BSV, test_allocator{}); + ASSERT_SAME_TYPE(decltype(w), ExpectW); + assert(w == L"abcdef"); #endif - } - { // Testing (15) w/o allocator - std::string s0("abc"); - std::basic_string s(s0, 1, 1); - ASSERT_SAME_TYPE(decltype(s), std::string); - assert(s == "b"); +} +{ // Testing (15) w/o allocator + std::string s0("abc"); + std::basic_string s(s0, 1, 1); + ASSERT_SAME_TYPE(decltype(s), std::string); + assert(s == "b"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - std::wstring w0(L"abcdef"); - std::basic_string w(w0, 2, 2); - ASSERT_SAME_TYPE(decltype(w), std::wstring); - assert(w == L"cd"); + std::wstring w0(L"abcdef"); + std::basic_string w(w0, 2, 2); + ASSERT_SAME_TYPE(decltype(w), std::wstring); + assert(w == L"cd"); #endif - } - { // Testing (15) w/ allocator - using ExpectS = std::basic_string, test_allocator>; - ExpectS s0("abc"); - std::basic_string s(s0, 1, 1, test_allocator{4}); - ASSERT_SAME_TYPE(decltype(s), ExpectS); - assert(s == "b"); +} +{ // Testing (15) w/ allocator + using ExpectS = std::basic_string, test_allocator>; + ExpectS s0("abc"); + std::basic_string s(s0, 1, 1, test_allocator{4}); + ASSERT_SAME_TYPE(decltype(s), ExpectS); + assert(s == "b"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - using ExpectW = std::basic_string, test_allocator>; - ExpectW w0(L"abcdef"); - std::basic_string w(w0, 2, 2, test_allocator{6}); - ASSERT_SAME_TYPE(decltype(w), ExpectW); - assert(w == L"cd"); + using ExpectW = std::basic_string, test_allocator>; + ExpectW w0(L"abcdef"); + std::basic_string w(w0, 2, 2, test_allocator{6}); + ASSERT_SAME_TYPE(decltype(w), ExpectW); + assert(w == L"cd"); #endif - } +} - return true; +return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/initializer_list.pass.cpp @@ -48,8 +48,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/initializer_list_assignment.pass.cpp @@ -34,8 +34,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc.pass.cpp @@ -12,7 +12,6 @@ // basic_string(InputIterator begin, InputIterator end, // const Allocator& a = Allocator()); // constexpr since C++20 - #include #include #include @@ -24,42 +23,38 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(It first, It last) -{ - typedef typename std::iterator_traits::value_type charT; - typedef std::basic_string, test_allocator > S; - typedef typename S::allocator_type A; - S s2(first, last); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == static_cast(std::distance(first, last))); - unsigned i = 0; - for (It it = first; it != last;) { - assert(s2[i] == *it); - ++it; - ++i; - } - assert(s2.get_allocator() == A()); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(It first, It last) { + typedef typename std::iterator_traits::value_type charT; + typedef std::basic_string, test_allocator > S; + typedef typename S::allocator_type A; + S s2(first, last); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == static_cast(std::distance(first, last))); + unsigned i = 0; + for (It it = first; it != last;) { + assert(s2[i] == *it); + ++it; + ++i; + } + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); } template -TEST_CONSTEXPR_CXX20 void -test(It first, It last, const A& a) -{ - typedef typename std::iterator_traits::value_type charT; - typedef std::basic_string, A> S; - S s2(first, last, a); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == static_cast(std::distance(first, last))); - unsigned i = 0; - for (It it = first; it != last;) { - assert(s2[i] == *it); - ++it; - ++i; - } - assert(s2.get_allocator() == a); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(It first, It last, const A& a) { + typedef typename std::iterator_traits::value_type charT; + typedef std::basic_string, A> S; + S s2(first, last, a); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == static_cast(std::distance(first, last))); + unsigned i = 0; + for (It it = first; it != last;) { + assert(s2[i] == *it); + ++it; + ++i; + } + assert(s2.get_allocator() == a); + assert(s2.capacity() >= s2.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,26 +65,26 @@ test(s, s); test(s, s, A(2)); - test(s, s+1); - test(s, s+1, A(2)); + test(s, s + 1); + test(s, s + 1, A(2)); - test(s, s+10); - test(s, s+10, A(2)); + test(s, s + 10); + test(s, s + 10, A(2)); - test(s, s+50); - test(s, s+50, A(2)); + test(s, s + 50); + test(s, s + 50, A(2)); test(cpp17_input_iterator(s), cpp17_input_iterator(s)); test(cpp17_input_iterator(s), cpp17_input_iterator(s), A(2)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+1)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+1), A(2)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 1)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 1), A(2)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+10)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+10), A(2)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 10)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 10), A(2)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+50)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+50), A(2)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 50)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 50), A(2)); } #if TEST_STD_VER >= 11 { @@ -99,43 +94,37 @@ test(s, s); test(s, s, A()); - test(s, s+1); - test(s, s+1, A()); + test(s, s + 1); + test(s, s + 1, A()); - test(s, s+10); - test(s, s+10, A()); + test(s, s + 10); + test(s, s + 10, A()); - test(s, s+50); - test(s, s+50, A()); + test(s, s + 50); + test(s, s + 50, A()); test(cpp17_input_iterator(s), cpp17_input_iterator(s)); test(cpp17_input_iterator(s), cpp17_input_iterator(s), A()); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+1)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+1), A()); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 1)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 1), A()); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+10)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+10), A()); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 10)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 10), A()); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+50)); - test(cpp17_input_iterator(s), cpp17_input_iterator(s+50), A()); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 50)); + test(cpp17_input_iterator(s), cpp17_input_iterator(s + 50), A()); } #endif { - static_assert((!std::is_constructible::value), - ""); - static_assert( - (!std::is_constructible >::value), - ""); + static_assert((!std::is_constructible::value), ""); + static_assert((!std::is_constructible >::value), ""); } return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/iter_alloc_deduction.pass.cpp @@ -34,74 +34,77 @@ using NotAnInputIterator = std::back_insert_iterator>; template -struct NotAnAllocator { typedef T value_type; }; +struct NotAnAllocator { + typedef T value_type; +}; template -struct CanDeduce : std::false_type { }; +struct CanDeduce : std::false_type {}; template -struct CanDeduce(), std::declval(), std::declval()} -)> : std::true_type { }; +struct CanDeduce(), std::declval(), std::declval()})> + : std::true_type {}; -static_assert( CanDeduce>::value); +static_assert(CanDeduce>::value); static_assert(!CanDeduce>::value); static_assert(!CanDeduce>::value); static_assert(!CanDeduce>::value); #ifndef TEST_HAS_NO_WIDE_CHARACTERS -static_assert( CanDeduce>::value); +static_assert(CanDeduce>::value); static_assert(!CanDeduce>::value); #endif TEST_CONSTEXPR_CXX20 bool test() { { const char* s = "12345678901234"; - std::basic_string s1(s, s+10); // Can't use {} here - using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + std::basic_string s1(s, s + 10); // Can't use {} here + using S = decltype(s1); // what type did we get? + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 10); assert(s1.compare(0, s1.size(), s, s1.size()) == 0); } { const char* s = "12345678901234"; - std::basic_string s1{s, s+10, std::allocator{}}; + std::basic_string s1{s, s + 10, std::allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 10); assert(s1.compare(0, s1.size(), s, s1.size()) == 0); } #ifndef TEST_HAS_NO_WIDE_CHARACTERS { const wchar_t* s = L"12345678901234"; - std::basic_string s1{s, s+10, test_allocator{}}; + std::basic_string s1{s, s + 10, test_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 10); assert(s1.compare(0, s1.size(), s, s1.size()) == 0); } #endif { const char16_t* s = u"12345678901234"; - std::basic_string s1{s, s+10, min_allocator{}}; + std::basic_string s1{s, s + 10, min_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 10); assert(s1.compare(0, s1.size(), s, s1.size()) == 0); } { const char32_t* s = U"12345678901234"; - std::basic_string s1{s, s+10, explicit_allocator{}}; + std::basic_string s1{s, s + 10, explicit_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); static_assert(std::is_same_v>, ""); assert(s1.size() == 10); assert(s1.compare(0, s1.size(), s, s1.size()) == 0); @@ -110,8 +113,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/move.pass.cpp @@ -20,16 +20,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s0) -{ - S s1 = s0; - S s2 = std::move(s0); - LIBCPP_ASSERT(s2.__invariants()); - LIBCPP_ASSERT(s0.__invariants()); - assert(s2 == s1); - assert(s2.capacity() >= s2.size()); - assert(s2.get_allocator() == s1.get_allocator()); +TEST_CONSTEXPR_CXX20 void test(S s0) { + S s1 = s0; + S s2 = std::move(s0); + LIBCPP_ASSERT(s2.__invariants()); + LIBCPP_ASSERT(s0.__invariants()); + assert(s2 == s1); + assert(s2.capacity() >= s2.size()); + assert(s2.get_allocator() == s1.get_allocator()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -51,8 +49,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/move_alloc.pass.cpp @@ -20,16 +20,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s0, const typename S::allocator_type& a) -{ - S s1 = s0; - S s2(std::move(s0), a); - LIBCPP_ASSERT(s2.__invariants()); - LIBCPP_ASSERT(s0.__invariants()); - assert(s2 == s1); - assert(s2.capacity() >= s2.size()); - assert(s2.get_allocator() == a); +TEST_CONSTEXPR_CXX20 void test(S s0, const typename S::allocator_type& a) { + S s1 = s0; + S s2(std::move(s0), a); + LIBCPP_ASSERT(s2.__invariants()); + LIBCPP_ASSERT(s0.__invariants()); + assert(s2 == s1); + assert(s2.capacity() >= s2.size()); + assert(s2.get_allocator() == a); } TEST_CONSTEXPR_CXX20 bool test() { @@ -38,35 +36,35 @@ typedef test_allocator A; typedef std::basic_string, A> S; #if TEST_STD_VER > 14 - static_assert((noexcept(S{})), "" ); + static_assert((noexcept(S{})), ""); #elif TEST_STD_VER >= 11 - static_assert((noexcept(S()) == std::is_nothrow_move_constructible::value), "" ); + static_assert((noexcept(S()) == std::is_nothrow_move_constructible::value), ""); #endif test(S(), A(3, &alloc_stats)); test(S("1"), A(5, &alloc_stats)); test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), A(7, &alloc_stats)); } - int alloc_count = alloc_stats.alloc_count; + int alloc_count = alloc_stats.alloc_count; { typedef test_allocator A; typedef std::basic_string, A> S; #if TEST_STD_VER > 14 - static_assert((noexcept(S{})), "" ); + static_assert((noexcept(S{})), ""); #elif TEST_STD_VER >= 11 - static_assert((noexcept(S()) == std::is_nothrow_move_constructible::value), "" ); + static_assert((noexcept(S()) == std::is_nothrow_move_constructible::value), ""); #endif - S s1 ( "Twas brillig, and the slivy toves did gyre and gymbal in the wabe", A(&alloc_stats)); - S s2 (std::move(s1), A(1, &alloc_stats)); + S s1("Twas brillig, and the slivy toves did gyre and gymbal in the wabe", A(&alloc_stats)); + S s2(std::move(s1), A(1, &alloc_stats)); } - assert ( alloc_stats.alloc_count == alloc_count ); + assert(alloc_stats.alloc_count == alloc_count); { typedef min_allocator A; typedef std::basic_string, A> S; #if TEST_STD_VER > 14 - static_assert((noexcept(S{})), "" ); + static_assert((noexcept(S{})), ""); #elif TEST_STD_VER >= 11 - static_assert((noexcept(S()) == std::is_nothrow_move_constructible::value), "" ); + static_assert((noexcept(S()) == std::is_nothrow_move_constructible::value), ""); #endif test(S(), A()); test(S("1"), A()); @@ -76,8 +74,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/move_assign_noexcept.pass.cpp @@ -27,39 +27,36 @@ #include "test_allocator.h" template -struct some_alloc -{ - typedef T value_type; - some_alloc(const some_alloc&); - T *allocate(std::size_t); +struct some_alloc { + typedef T value_type; + some_alloc(const some_alloc&); + T* allocate(std::size_t); }; template -struct some_alloc2 -{ - typedef T value_type; +struct some_alloc2 { + typedef T value_type; - some_alloc2() {} - some_alloc2(const some_alloc2&); - T *allocate(std::size_t); - void deallocate(void*, unsigned) {} + some_alloc2() {} + some_alloc2(const some_alloc2&); + T* allocate(std::size_t); + void deallocate(void*, unsigned) {} - typedef std::false_type propagate_on_container_move_assignment; - typedef std::true_type is_always_equal; + typedef std::false_type propagate_on_container_move_assignment; + typedef std::true_type is_always_equal; }; template -struct some_alloc3 -{ - typedef T value_type; +struct some_alloc3 { + typedef T value_type; - some_alloc3() {} - some_alloc3(const some_alloc3&); - T *allocate(std::size_t); - void deallocate(void*, unsigned) {} + some_alloc3() {} + some_alloc3(const some_alloc3&); + T* allocate(std::size_t); + void deallocate(void*, unsigned) {} - typedef std::false_type propagate_on_container_move_assignment; - typedef std::false_type is_always_equal; + typedef std::false_type propagate_on_container_move_assignment; + typedef std::false_type is_always_equal; }; TEST_CONSTEXPR_CXX20 bool test() { @@ -75,16 +72,16 @@ typedef std::basic_string, some_alloc> C; #if TEST_STD_VER > 14 // if the allocators are always equal, then the move assignment can be noexcept - static_assert( std::is_nothrow_move_assignable::value, ""); + static_assert(std::is_nothrow_move_assignable::value, ""); #else - static_assert(!std::is_nothrow_move_assignable::value, ""); + static_assert(!std::is_nothrow_move_assignable::value, ""); #endif } #if TEST_STD_VER > 14 { // POCMA is false, always equal typedef std::basic_string, some_alloc2> C; - static_assert( std::is_nothrow_move_assignable::value, ""); + static_assert(std::is_nothrow_move_assignable::value, ""); } { // POCMA is false, not always equal @@ -96,8 +93,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/move_assignment.pass.cpp @@ -21,15 +21,13 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s1, S s2) -{ - S s0 = s2; - s1 = std::move(s2); - LIBCPP_ASSERT(s1.__invariants()); - LIBCPP_ASSERT(s2.__invariants()); - assert(s1 == s0); - assert(s1.capacity() >= s1.size()); +TEST_CONSTEXPR_CXX20 void test(S s1, S s2) { + S s0 = s2; + s1 = std::move(s2); + LIBCPP_ASSERT(s1.__invariants()); + LIBCPP_ASSERT(s2.__invariants()); + assert(s1 == s0); + assert(s1.capacity() >= s1.size()); } template @@ -40,15 +38,13 @@ test(S("1"), S("2")); test(S("1"), S("2")); - test(S(), - S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); - test(S("123456789"), - S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + test(S(), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + test(S("123456789"), S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), - S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); test(S("1234567890123456789012345678901234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890123456789012345678901234567890"), - S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + "1234567890123456789012345678901234567890123456789012345678901234567890"), + S("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -60,8 +56,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/move_noexcept.pass.cpp @@ -21,24 +21,23 @@ #include "test_macros.h" #include "test_allocator.h" -int main(int, char**) -{ - { - typedef std::string C; - static_assert(std::is_nothrow_move_constructible::value, ""); - } - { - typedef std::basic_string, test_allocator> C; - static_assert(std::is_nothrow_move_constructible::value, ""); - } - { - typedef std::basic_string, limited_allocator> C; +int main(int, char**) { + { + typedef std::string C; + static_assert(std::is_nothrow_move_constructible::value, ""); + } + { + typedef std::basic_string, test_allocator> C; + static_assert(std::is_nothrow_move_constructible::value, ""); + } + { + typedef std::basic_string, limited_allocator> C; #if TEST_STD_VER <= 14 - static_assert(!std::is_nothrow_move_constructible::value, ""); + static_assert(!std::is_nothrow_move_constructible::value, ""); #else - static_assert( std::is_nothrow_move_constructible::value, ""); + static_assert(std::is_nothrow_move_constructible::value, ""); #endif - } + } return 0; } diff --git a/libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/pointer_alloc.pass.cpp @@ -21,38 +21,34 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const charT* s) -{ - typedef std::basic_string, test_allocator > S; - typedef typename S::traits_type T; - typedef typename S::allocator_type A; - std::size_t n = T::length(s); - S s2(s); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == n); - assert(T::compare(s2.data(), s, n) == 0); - assert(s2.get_allocator() == A()); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(const charT* s) { + typedef std::basic_string, test_allocator > S; + typedef typename S::traits_type T; + typedef typename S::allocator_type A; + std::size_t n = T::length(s); + S s2(s); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == n); + assert(T::compare(s2.data(), s, n) == 0); + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const charT* s, const A& a) -{ - typedef std::basic_string, A> S; - typedef typename S::traits_type T; - std::size_t n = T::length(s); - S s2(s, a); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == n); - assert(T::compare(s2.data(), s, n) == 0); - assert(s2.get_allocator() == a); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(const charT* s, const A& a) { + typedef std::basic_string, A> S; + typedef typename S::traits_type T; + std::size_t n = T::length(s); + S s2(s, a); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == n); + assert(T::compare(s2.data(), s, n) == 0); + assert(s2.get_allocator() == a); + assert(s2.capacity() >= s2.size()); } TEST_CONSTEXPR_CXX20 bool test() { - { + { typedef test_allocator A; test(""); @@ -66,9 +62,9 @@ test("123456798012345679801234567980123456798012345679801234567980"); test("123456798012345679801234567980123456798012345679801234567980", A(2)); - } + } #if TEST_STD_VER >= 11 - { + { typedef min_allocator A; test(""); @@ -82,14 +78,13 @@ test("123456798012345679801234567980123456798012345679801234567980"); test("123456798012345679801234567980123456798012345679801234567980", A()); - } + } #endif return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/pointer_assignment.pass.cpp @@ -18,15 +18,13 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s1, const typename S::value_type* s2) -{ - typedef typename S::traits_type T; - s1 = s2; - LIBCPP_ASSERT(s1.__invariants()); - assert(s1.size() == T::length(s2)); - assert(T::compare(s1.data(), s2, s1.size()) == 0); - assert(s1.capacity() >= s1.size()); +TEST_CONSTEXPR_CXX20 void test(S s1, const typename S::value_type* s2) { + typedef typename S::traits_type T; + s1 = s2; + LIBCPP_ASSERT(s1.__invariants()); + assert(s1.size() == T::length(s2)); + assert(T::compare(s1.data(), s2, s1.size()) == 0); + assert(s1.capacity() >= s1.size()); } template @@ -37,15 +35,13 @@ test(S("1"), "2"); test(S("1"), "2"); - test(S(), - "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); - test(S("123456789"), - "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); + test(S(), "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); + test(S("123456789"), "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), - "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); test(S("1234567890123456789012345678901234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890123456789012345678901234567890"), - "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); + "1234567890123456789012345678901234567890123456789012345678901234567890"), + "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"); } TEST_CONSTEXPR_CXX20 bool test() { @@ -57,8 +53,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/pointer_size_alloc.pass.cpp @@ -20,32 +20,28 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const charT* s, unsigned n) -{ - typedef std::basic_string, test_allocator > S; - typedef typename S::traits_type T; - typedef typename S::allocator_type A; - S s2(s, n); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == n); - assert(T::compare(s2.data(), s, n) == 0); - assert(s2.get_allocator() == A()); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(const charT* s, unsigned n) { + typedef std::basic_string, test_allocator > S; + typedef typename S::traits_type T; + typedef typename S::allocator_type A; + S s2(s, n); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == n); + assert(T::compare(s2.data(), s, n) == 0); + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const charT* s, unsigned n, const A& a) -{ - typedef std::basic_string, A> S; - typedef typename S::traits_type T; - S s2(s, n, a); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == n); - assert(T::compare(s2.data(), s, n) == 0); - assert(s2.get_allocator() == a); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(const charT* s, unsigned n, const A& a) { + typedef std::basic_string, A> S; + typedef typename S::traits_type T; + S s2(s, n, a); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == n); + assert(T::compare(s2.data(), s, n) == 0); + assert(s2.get_allocator() == a); + assert(s2.capacity() >= s2.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -83,7 +79,7 @@ #endif #if TEST_STD_VER >= 11 - { // LWG 2946 + { // LWG 2946 std::string s({"abc", 1}); assert(s.size() == 1); assert(s == "a"); @@ -93,8 +89,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/size_char_alloc.pass.cpp @@ -21,63 +21,55 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(unsigned n, charT c) -{ - typedef std::basic_string, test_allocator > S; - typedef typename S::allocator_type A; - S s2(n, c); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == n); - for (unsigned i = 0; i < n; ++i) - assert(s2[i] == c); - assert(s2.get_allocator() == A()); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(unsigned n, charT c) { + typedef std::basic_string, test_allocator > S; + typedef typename S::allocator_type A; + S s2(n, c); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == n); + for (unsigned i = 0; i < n; ++i) + assert(s2[i] == c); + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); } template -TEST_CONSTEXPR_CXX20 void -test(unsigned n, charT c, const A& a) -{ - typedef std::basic_string, A> S; - S s2(n, c, a); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == n); - for (unsigned i = 0; i < n; ++i) - assert(s2[i] == c); - assert(s2.get_allocator() == a); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(unsigned n, charT c, const A& a) { + typedef std::basic_string, A> S; + S s2(n, c, a); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == n); + for (unsigned i = 0; i < n; ++i) + assert(s2[i] == c); + assert(s2.get_allocator() == a); + assert(s2.capacity() >= s2.size()); } template -TEST_CONSTEXPR_CXX20 void -test(Tp n, Tp c) -{ - typedef char charT; - typedef std::basic_string, test_allocator > S; - typedef typename S::allocator_type A; - S s2(n, c); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == static_cast(n)); - for (int i = 0; i < n; ++i) - assert(s2[i] == c); - assert(s2.get_allocator() == A()); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(Tp n, Tp c) { + typedef char charT; + typedef std::basic_string, test_allocator > S; + typedef typename S::allocator_type A; + S s2(n, c); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == static_cast(n)); + for (int i = 0; i < n; ++i) + assert(s2[i] == c); + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); } template -TEST_CONSTEXPR_CXX20 void -test(Tp n, Tp c, const A& a) -{ - typedef char charT; - typedef std::basic_string, A> S; - S s2(n, c, a); - LIBCPP_ASSERT(s2.__invariants()); - assert(s2.size() == static_cast(n)); - for (int i = 0; i < n; ++i) - assert(s2[i] == c); - assert(s2.get_allocator() == a); - assert(s2.capacity() >= s2.size()); +TEST_CONSTEXPR_CXX20 void test(Tp n, Tp c, const A& a) { + typedef char charT; + typedef std::basic_string, A> S; + S s2(n, c, a); + LIBCPP_ASSERT(s2.__invariants()); + assert(s2.size() == static_cast(n)); + for (int i = 0; i < n; ++i) + assert(s2[i] == c); + assert(s2.get_allocator() == a); + assert(s2.capacity() >= s2.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -123,8 +115,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/string_view.pass.cpp @@ -25,12 +25,10 @@ static_assert(!std::is_convertible::value, ""); template -TEST_CONSTEXPR_CXX20 void -test(std::basic_string_view sv) -{ - typedef std::basic_string, test_allocator > S; - typedef typename S::traits_type T; - typedef typename S::allocator_type A; +TEST_CONSTEXPR_CXX20 void test(std::basic_string_view sv) { + typedef std::basic_string, test_allocator > S; + typedef typename S::traits_type T; + typedef typename S::allocator_type A; { S s2(sv); LIBCPP_ASSERT(s2.__invariants()); @@ -51,11 +49,9 @@ } template -TEST_CONSTEXPR_CXX20 void -test(std::basic_string_view sv, const A& a) -{ - typedef std::basic_string, A> S; - typedef typename S::traits_type T; +TEST_CONSTEXPR_CXX20 void test(std::basic_string_view sv, const A& a) { + typedef std::basic_string, A> S; + typedef typename S::traits_type T; { S s2(sv, a); LIBCPP_ASSERT(s2.__invariants()); @@ -84,7 +80,7 @@ test(SV(""), A(2)); test(SV("1")); - test(SV("1") ,A(2)); + test(SV("1"), A(2)); test(SV("1234567980")); test(SV("1234567980"), A(2)); @@ -101,7 +97,7 @@ test(SV(""), A()); test(SV("1")); - test(SV("1") ,A()); + test(SV("1"), A()); test(SV("1234567980")); test(SV("1234567980"), A()); @@ -114,8 +110,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_assignment.pass.cpp @@ -17,15 +17,13 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s1, SV sv) -{ - typedef typename S::traits_type T; - s1 = sv; - LIBCPP_ASSERT(s1.__invariants()); - assert(s1.size() == sv.size()); - assert(T::compare(s1.data(), sv.data(), s1.size()) == 0); - assert(s1.capacity() >= s1.size()); +TEST_CONSTEXPR_CXX20 void test(S s1, SV sv) { + typedef typename S::traits_type T; + s1 = sv; + LIBCPP_ASSERT(s1.__invariants()); + assert(s1.size() == sv.size()); + assert(T::compare(s1.data(), sv.data(), s1.size()) == 0); + assert(s1.capacity() >= s1.size()); } template @@ -37,15 +35,13 @@ test(S("1"), SV("2")); test(S("1"), SV("2")); - test(S(), - SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); - test(S("123456789"), - SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + test(S(), SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + test(S("123456789"), SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); test(S("1234567890123456789012345678901234567890123456789012345678901234567890"), - SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); test(S("1234567890123456789012345678901234567890123456789012345678901234567890" - "1234567890123456789012345678901234567890123456789012345678901234567890"), - SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); + "1234567890123456789012345678901234567890123456789012345678901234567890"), + SV("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -57,8 +53,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_deduction.pass.cpp @@ -32,15 +32,16 @@ #include "min_allocator.h" template -struct CanDeduce : std::false_type { }; +struct CanDeduce : std::false_type {}; template -struct CanDeduce(), std::declval()} -)> : std::true_type { }; +struct CanDeduce(), std::declval()})> + : std::true_type {}; -struct NotAnAllocator { }; -static_assert( CanDeduce>::value); +struct NotAnAllocator {}; +static_assert(CanDeduce>::value); static_assert(!CanDeduce::value); TEST_CONSTEXPR_CXX20 bool test() { @@ -48,9 +49,9 @@ std::string_view sv = "12345678901234"; std::basic_string s1(sv); using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == sv.size()); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -59,9 +60,9 @@ std::string_view sv = "12345678901234"; std::basic_string s1{sv, std::allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == sv.size()); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -70,9 +71,9 @@ std::wstring_view sv = L"12345678901234"; std::basic_string s1{sv, test_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == sv.size()); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -82,9 +83,9 @@ std::u8string_view sv = u8"12345678901234"; std::basic_string s1{sv, min_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == sv.size()); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -93,9 +94,9 @@ std::u16string_view sv = u"12345678901234"; std::basic_string s1{sv, min_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == sv.size()); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -103,8 +104,8 @@ std::u32string_view sv = U"12345678901234"; std::basic_string s1{sv, explicit_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); static_assert(std::is_same_v>, ""); assert(s1.size() == sv.size()); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); @@ -113,8 +114,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/string_view_size_size_deduction.pass.cpp @@ -36,15 +36,19 @@ #include "min_allocator.h" template -struct CanDeduce : std::false_type { }; +struct CanDeduce : std::false_type {}; template -struct CanDeduce(), std::declval(), std::declval(), std::declval()} -)> : std::true_type { }; +struct CanDeduce< + StringView, + Size, + Allocator, + decltype((void)std::basic_string{ + std::declval(), std::declval(), std::declval(), std::declval()})> + : std::true_type {}; -struct NotAnAllocator { }; -static_assert( CanDeduce>::value); +struct NotAnAllocator {}; +static_assert(CanDeduce>::value); static_assert(!CanDeduce::value); TEST_CONSTEXPR_CXX20 bool test() { @@ -52,9 +56,9 @@ std::string_view sv = "12345678901234"; std::basic_string s1{sv, 0, 4}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 4); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -63,9 +67,9 @@ std::string_view sv = "12345678901234"; std::basic_string s1{sv, 0, 4, std::allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 4); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -74,9 +78,9 @@ std::wstring_view sv = L"12345678901234"; std::basic_string s1{sv, 0, 4, test_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 4); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -86,9 +90,9 @@ std::u8string_view sv = u8"12345678901234"; std::basic_string s1{sv, 0, 4, min_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 4); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -97,9 +101,9 @@ std::u16string_view sv = u"12345678901234"; std::basic_string s1{sv, 0, 4, min_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v>, ""); assert(s1.size() == 4); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); } @@ -107,8 +111,8 @@ std::u32string_view sv = U"12345678901234"; std::basic_string s1{sv, 0, 4, explicit_allocator{}}; using S = decltype(s1); // what type did we get? - static_assert(std::is_same_v, ""); - static_assert(std::is_same_v>, ""); + static_assert(std::is_same_v, ""); + static_assert(std::is_same_v>, ""); static_assert(std::is_same_v>, ""); assert(s1.size() == 4); assert(s1.compare(0, s1.size(), sv.data(), s1.size()) == 0); @@ -117,8 +121,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp b/libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.cons/substr.pass.cpp @@ -28,113 +28,94 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S str, unsigned pos) -{ - typedef typename S::traits_type T; - typedef typename S::allocator_type A; - - if (pos <= str.size()) - { - S s2(str, pos); - LIBCPP_ASSERT(s2.__invariants()); - typename S::size_type rlen = str.size() - pos; - assert(s2.size() == rlen); - assert(T::compare(s2.data(), str.data() + pos, rlen) == 0); - assert(s2.get_allocator() == A()); - assert(s2.capacity() >= s2.size()); - } +TEST_CONSTEXPR_CXX20 void test(S str, unsigned pos) { + typedef typename S::traits_type T; + typedef typename S::allocator_type A; + + if (pos <= str.size()) { + S s2(str, pos); + LIBCPP_ASSERT(s2.__invariants()); + typename S::size_type rlen = str.size() - pos; + assert(s2.size() == rlen); + assert(T::compare(s2.data(), str.data() + pos, rlen) == 0); + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - S s2(str, pos); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + S s2(str, pos); + assert(false); + } catch (std::out_of_range&) { + assert(pos > str.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test(S str, unsigned pos, unsigned n) -{ - typedef typename S::traits_type T; - typedef typename S::allocator_type A; - if (pos <= str.size()) - { - S s2(str, pos, n); - LIBCPP_ASSERT(s2.__invariants()); - typename S::size_type rlen = std::min(str.size() - pos, n); - assert(s2.size() == rlen); - assert(T::compare(s2.data(), str.data() + pos, rlen) == 0); - assert(s2.get_allocator() == A()); - assert(s2.capacity() >= s2.size()); - } +TEST_CONSTEXPR_CXX20 void test(S str, unsigned pos, unsigned n) { + typedef typename S::traits_type T; + typedef typename S::allocator_type A; + if (pos <= str.size()) { + S s2(str, pos, n); + LIBCPP_ASSERT(s2.__invariants()); + typename S::size_type rlen = std::min(str.size() - pos, n); + assert(s2.size() == rlen); + assert(T::compare(s2.data(), str.data() + pos, rlen) == 0); + assert(s2.get_allocator() == A()); + assert(s2.capacity() >= s2.size()); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - S s2(str, pos, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + S s2(str, pos, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos > str.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test(S str, unsigned pos, unsigned n, const typename S::allocator_type& a) -{ - typedef typename S::traits_type T; - - if (pos <= str.size()) - { - S s2(str, pos, n, a); - LIBCPP_ASSERT(s2.__invariants()); - typename S::size_type rlen = std::min(str.size() - pos, n); - assert(s2.size() == rlen); - assert(T::compare(s2.data(), str.data() + pos, rlen) == 0); - assert(s2.get_allocator() == a); - assert(s2.capacity() >= s2.size()); - } +TEST_CONSTEXPR_CXX20 void test(S str, unsigned pos, unsigned n, const typename S::allocator_type& a) { + typedef typename S::traits_type T; + + if (pos <= str.size()) { + S s2(str, pos, n, a); + LIBCPP_ASSERT(s2.__invariants()); + typename S::size_type rlen = std::min(str.size() - pos, n); + assert(s2.size() == rlen); + assert(T::compare(s2.data(), str.data() + pos, rlen) == 0); + assert(s2.get_allocator() == a); + assert(s2.capacity() >= s2.size()); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - S s2(str, pos, n, a); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + S s2(str, pos, n, a); + assert(false); + } catch (std::out_of_range&) { + assert(pos > str.size()); } + } #endif } -void test_lwg2583() -{ +void test_lwg2583() { #if TEST_STD_VER >= 11 && !defined(TEST_HAS_NO_EXCEPTIONS) - typedef std::basic_string, test_allocator> StringA; - std::vector>> vs; - StringA s{"1234"}; - vs.emplace_back(s, 2); - - try { vs.emplace_back(s, 5); } - catch (const std::out_of_range&) { return; } - assert(false); + typedef std::basic_string, test_allocator> StringA; + std::vector>> vs; + StringA s{"1234"}; + vs.emplace_back(s, 2); + + try { + vs.emplace_back(s, 5); + } catch (const std::out_of_range&) { + return; + } + assert(false); #endif } @@ -221,8 +202,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.contains/contains.char.pass.cpp b/libcxx/test/std/strings/basic.string/string.contains/contains.char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.contains/contains.char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.contains/contains.char.pass.cpp @@ -16,27 +16,25 @@ #include "test_macros.h" -constexpr bool test() -{ - using S = std::string; +constexpr bool test() { + using S = std::string; - S s1 {}; - S s2 {"abcde", 5}; + S s1{}; + S s2{"abcde", 5}; - ASSERT_NOEXCEPT(s1.contains('e')); + ASSERT_NOEXCEPT(s1.contains('e')); - assert(!s1.contains('c')); - assert(!s1.contains('e')); - assert(!s1.contains('x')); - assert( s2.contains('c')); - assert( s2.contains('e')); - assert(!s2.contains('x')); + assert(!s1.contains('c')); + assert(!s1.contains('e')); + assert(!s1.contains('x')); + assert(s2.contains('c')); + assert(s2.contains('e')); + assert(!s2.contains('x')); - return true; + return true; } -int main(int, char**) -{ +int main(int, char**) { test(); static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.contains/contains.ptr.pass.cpp b/libcxx/test/std/strings/basic.string/string.contains/contains.ptr.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.contains/contains.ptr.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.contains/contains.ptr.pass.cpp @@ -16,57 +16,55 @@ #include "test_macros.h" -constexpr bool test() -{ - using S = std::string; +constexpr bool test() { + using S = std::string; - const char* s = "abcde"; - S s0; - S s1 {s + 4, 1}; - S s3 {s + 2, 3}; - S sNot {"xyz", 3}; + const char* s = "abcde"; + S s0; + S s1{s + 4, 1}; + S s3{s + 2, 3}; + S sNot{"xyz", 3}; - assert(s0.contains("")); - assert(!s0.contains("e")); + assert(s0.contains("")); + assert(!s0.contains("e")); - assert( s1.contains("")); - assert(!s1.contains("d")); - assert( s1.contains("e")); - assert(!s1.contains("de")); - assert(!s1.contains("cd")); - assert(!s1.contains("cde")); - assert(!s1.contains("bcde")); - assert(!s1.contains("abcde")); - assert(!s1.contains("xyz")); + assert(s1.contains("")); + assert(!s1.contains("d")); + assert(s1.contains("e")); + assert(!s1.contains("de")); + assert(!s1.contains("cd")); + assert(!s1.contains("cde")); + assert(!s1.contains("bcde")); + assert(!s1.contains("abcde")); + assert(!s1.contains("xyz")); - assert( s3.contains("")); - assert( s3.contains("d")); - assert( s3.contains("e")); - assert( s3.contains("de")); - assert( s3.contains("cd")); - assert(!s3.contains("ce")); - assert( s3.contains("cde")); - assert(!s3.contains("edc")); - assert(!s3.contains("bcde")); - assert(!s3.contains("abcde")); - assert(!s3.contains("xyz")); + assert(s3.contains("")); + assert(s3.contains("d")); + assert(s3.contains("e")); + assert(s3.contains("de")); + assert(s3.contains("cd")); + assert(!s3.contains("ce")); + assert(s3.contains("cde")); + assert(!s3.contains("edc")); + assert(!s3.contains("bcde")); + assert(!s3.contains("abcde")); + assert(!s3.contains("xyz")); - assert( sNot.contains("")); - assert(!sNot.contains("d")); - assert(!sNot.contains("e")); - assert(!sNot.contains("de")); - assert(!sNot.contains("cd")); - assert(!sNot.contains("cde")); - assert(!sNot.contains("bcde")); - assert(!sNot.contains("abcde")); - assert( sNot.contains("xyz")); - assert(!sNot.contains("zyx")); + assert(sNot.contains("")); + assert(!sNot.contains("d")); + assert(!sNot.contains("e")); + assert(!sNot.contains("de")); + assert(!sNot.contains("cd")); + assert(!sNot.contains("cde")); + assert(!sNot.contains("bcde")); + assert(!sNot.contains("abcde")); + assert(sNot.contains("xyz")); + assert(!sNot.contains("zyx")); - return true; + return true; } -int main(int, char**) -{ +int main(int, char**) { test(); static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.contains/contains.string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.contains/contains.string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.contains/contains.string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.contains/contains.string_view.pass.cpp @@ -16,78 +16,76 @@ #include "test_macros.h" -constexpr bool test() -{ - using S = std::string; - using SV = std::string_view; - - const char* s = "abcde"; - S s0; - S s1 {s + 1, 1}; - S s3 {s + 1, 3}; - S s5 {s , 5}; - S sNot {"xyz", 3}; - - SV sv0; - SV sv1 {s + 1, 1}; - SV sv2 {s + 1, 2}; - SV sv3 {s + 1, 3}; - SV sv4 {s + 1, 4}; - SV sv5 {s , 5}; - SV svNot {"xyz", 3}; - SV svNot2 {"bd" , 2}; - SV svNot3 {"dcb", 3}; - - ASSERT_NOEXCEPT(s0.contains(sv0)); - - assert( s0.contains(sv0)); - assert(!s0.contains(sv1)); - - assert( s1.contains(sv0)); - assert( s1.contains(sv1)); - assert(!s1.contains(sv2)); - assert(!s1.contains(sv3)); - assert(!s1.contains(sv4)); - assert(!s1.contains(sv5)); - assert(!s1.contains(svNot)); - assert(!s1.contains(svNot2)); - assert(!s1.contains(svNot3)); - - assert( s3.contains(sv0)); - assert( s3.contains(sv1)); - assert( s3.contains(sv2)); - assert( s3.contains(sv3)); - assert(!s3.contains(sv4)); - assert(!s3.contains(sv5)); - assert(!s3.contains(svNot)); - assert(!s3.contains(svNot2)); - assert(!s3.contains(svNot3)); - - assert( s5.contains(sv0)); - assert( s5.contains(sv1)); - assert( s5.contains(sv2)); - assert( s5.contains(sv3)); - assert( s5.contains(sv4)); - assert( s5.contains(sv5)); - assert(!s5.contains(svNot)); - assert(!s5.contains(svNot2)); - assert(!s5.contains(svNot3)); - - assert( sNot.contains(sv0)); - assert(!sNot.contains(sv1)); - assert(!sNot.contains(sv2)); - assert(!sNot.contains(sv3)); - assert(!sNot.contains(sv4)); - assert(!sNot.contains(sv5)); - assert( sNot.contains(svNot)); - assert(!sNot.contains(svNot2)); - assert(!sNot.contains(svNot3)); - - return true; +constexpr bool test() { + using S = std::string; + using SV = std::string_view; + + const char* s = "abcde"; + S s0; + S s1{s + 1, 1}; + S s3{s + 1, 3}; + S s5{s, 5}; + S sNot{"xyz", 3}; + + SV sv0; + SV sv1{s + 1, 1}; + SV sv2{s + 1, 2}; + SV sv3{s + 1, 3}; + SV sv4{s + 1, 4}; + SV sv5{s, 5}; + SV svNot{"xyz", 3}; + SV svNot2{"bd", 2}; + SV svNot3{"dcb", 3}; + + ASSERT_NOEXCEPT(s0.contains(sv0)); + + assert(s0.contains(sv0)); + assert(!s0.contains(sv1)); + + assert(s1.contains(sv0)); + assert(s1.contains(sv1)); + assert(!s1.contains(sv2)); + assert(!s1.contains(sv3)); + assert(!s1.contains(sv4)); + assert(!s1.contains(sv5)); + assert(!s1.contains(svNot)); + assert(!s1.contains(svNot2)); + assert(!s1.contains(svNot3)); + + assert(s3.contains(sv0)); + assert(s3.contains(sv1)); + assert(s3.contains(sv2)); + assert(s3.contains(sv3)); + assert(!s3.contains(sv4)); + assert(!s3.contains(sv5)); + assert(!s3.contains(svNot)); + assert(!s3.contains(svNot2)); + assert(!s3.contains(svNot3)); + + assert(s5.contains(sv0)); + assert(s5.contains(sv1)); + assert(s5.contains(sv2)); + assert(s5.contains(sv3)); + assert(s5.contains(sv4)); + assert(s5.contains(sv5)); + assert(!s5.contains(svNot)); + assert(!s5.contains(svNot2)); + assert(!s5.contains(svNot3)); + + assert(sNot.contains(sv0)); + assert(!sNot.contains(sv1)); + assert(!sNot.contains(sv2)); + assert(!sNot.contains(sv3)); + assert(!sNot.contains(sv4)); + assert(!sNot.contains(sv5)); + assert(sNot.contains(svNot)); + assert(!sNot.contains(svNot2)); + assert(!sNot.contains(svNot3)); + + return true; } -int main(int, char**) -{ +int main(int, char**) { test(); static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.char.pass.cpp b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.char.pass.cpp @@ -19,22 +19,21 @@ constexpr bool test() { { typedef std::string S; - S s1 {}; - S s2 { "abcde", 5 }; + S s1{}; + S s2{"abcde", 5}; ASSERT_NOEXCEPT(s1.ends_with('e')); - assert (!s1.ends_with('e')); - assert (!s1.ends_with('x')); - assert ( s2.ends_with('e')); - assert (!s2.ends_with('x')); + assert(!s1.ends_with('e')); + assert(!s1.ends_with('x')); + assert(s2.ends_with('e')); + assert(!s2.ends_with('x')); } return true; } -int main(int, char**) -{ +int main(int, char**) { test(); static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.ptr.pass.cpp b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.ptr.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.ptr.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.ptr.pass.cpp @@ -19,44 +19,44 @@ constexpr bool test() { { typedef std::string S; - const char *s = "abcde"; + const char* s = "abcde"; - S s0; - S s1 { s + 4, 1 }; - S s2 { s + 3, 2 }; -// S s3 { s + 2, 3 }; -// S s4 { s + 1, 4 }; -// S s5 { s, 5 }; - S sNot { "def", 3 }; + S s0; + S s1{s + 4, 1}; + S s2{s + 3, 2}; + // S s3 { s + 2, 3 }; + // S s4 { s + 1, 4 }; + // S s5 { s, 5 }; + S sNot{"def", 3}; LIBCPP_ASSERT_NOEXCEPT(s0.ends_with("")); - assert ( s0.ends_with("")); - assert (!s0.ends_with("e")); + assert(s0.ends_with("")); + assert(!s0.ends_with("e")); - assert ( s1.ends_with("")); - assert ( s1.ends_with("e")); - assert (!s1.ends_with("de")); - assert (!s1.ends_with("cde")); - assert (!s1.ends_with("bcde")); - assert (!s1.ends_with("abcde")); - assert (!s1.ends_with("def")); + assert(s1.ends_with("")); + assert(s1.ends_with("e")); + assert(!s1.ends_with("de")); + assert(!s1.ends_with("cde")); + assert(!s1.ends_with("bcde")); + assert(!s1.ends_with("abcde")); + assert(!s1.ends_with("def")); - assert ( s2.ends_with("")); - assert ( s2.ends_with("e")); - assert ( s2.ends_with("de")); - assert (!s2.ends_with("cde")); - assert (!s2.ends_with("bcde")); - assert (!s2.ends_with("abcde")); - assert (!s2.ends_with("def")); + assert(s2.ends_with("")); + assert(s2.ends_with("e")); + assert(s2.ends_with("de")); + assert(!s2.ends_with("cde")); + assert(!s2.ends_with("bcde")); + assert(!s2.ends_with("abcde")); + assert(!s2.ends_with("def")); - assert ( sNot.ends_with("")); - assert (!sNot.ends_with("e")); - assert (!sNot.ends_with("de")); - assert (!sNot.ends_with("cde")); - assert (!sNot.ends_with("bcde")); - assert (!sNot.ends_with("abcde")); - assert ( sNot.ends_with("def")); + assert(sNot.ends_with("")); + assert(!sNot.ends_with("e")); + assert(!sNot.ends_with("de")); + assert(!sNot.ends_with("cde")); + assert(!sNot.ends_with("bcde")); + assert(!sNot.ends_with("abcde")); + assert(sNot.ends_with("def")); } return true; diff --git a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ends_with/ends_with.string_view.pass.cpp @@ -20,52 +20,52 @@ { typedef std::string S; typedef std::string_view SV; - const char *s = "abcde"; + const char* s = "abcde"; - S s0; - S s1 { s + 4, 1 }; - S s2 { s + 3, 2 }; -// S s3 { s + 2, 3 }; -// S s4 { s + 1, 4 }; -// S s5 { s, 5 }; - S sNot { "def", 3 }; + S s0; + S s1{s + 4, 1}; + S s2{s + 3, 2}; + // S s3 { s + 2, 3 }; + // S s4 { s + 1, 4 }; + // S s5 { s, 5 }; + S sNot{"def", 3}; - SV sv0; - SV sv1 { s + 4, 1 }; - SV sv2 { s + 3, 2 }; - SV sv3 { s + 2, 3 }; - SV sv4 { s + 1, 4 }; - SV sv5 { s , 5 }; - SV svNot {"def", 3 }; + SV sv0; + SV sv1{s + 4, 1}; + SV sv2{s + 3, 2}; + SV sv3{s + 2, 3}; + SV sv4{s + 1, 4}; + SV sv5{s, 5}; + SV svNot{"def", 3}; ASSERT_NOEXCEPT(s0.ends_with(sv0)); - assert ( s0.ends_with(sv0)); - assert (!s0.ends_with(sv1)); + assert(s0.ends_with(sv0)); + assert(!s0.ends_with(sv1)); - assert ( s1.ends_with(sv0)); - assert ( s1.ends_with(sv1)); - assert (!s1.ends_with(sv2)); - assert (!s1.ends_with(sv3)); - assert (!s1.ends_with(sv4)); - assert (!s1.ends_with(sv5)); - assert (!s1.ends_with(svNot)); + assert(s1.ends_with(sv0)); + assert(s1.ends_with(sv1)); + assert(!s1.ends_with(sv2)); + assert(!s1.ends_with(sv3)); + assert(!s1.ends_with(sv4)); + assert(!s1.ends_with(sv5)); + assert(!s1.ends_with(svNot)); - assert ( s2.ends_with(sv0)); - assert ( s2.ends_with(sv1)); - assert ( s2.ends_with(sv2)); - assert (!s2.ends_with(sv3)); - assert (!s2.ends_with(sv4)); - assert (!s2.ends_with(sv5)); - assert (!s2.ends_with(svNot)); + assert(s2.ends_with(sv0)); + assert(s2.ends_with(sv1)); + assert(s2.ends_with(sv2)); + assert(!s2.ends_with(sv3)); + assert(!s2.ends_with(sv4)); + assert(!s2.ends_with(sv5)); + assert(!s2.ends_with(svNot)); - assert ( sNot.ends_with(sv0)); - assert (!sNot.ends_with(sv1)); - assert (!sNot.ends_with(sv2)); - assert (!sNot.ends_with(sv3)); - assert (!sNot.ends_with(sv4)); - assert (!sNot.ends_with(sv5)); - assert ( sNot.ends_with(svNot)); + assert(sNot.ends_with(sv0)); + assert(!sNot.ends_with(sv1)); + assert(!sNot.ends_with(sv2)); + assert(!sNot.ends_with(sv3)); + assert(!sNot.ends_with(sv4)); + assert(!sNot.ends_with(sv5)); + assert(sNot.ends_with(svNot)); } return true; diff --git a/libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/begin.pass.cpp @@ -18,17 +18,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s) -{ - const S& cs = s; - typename S::iterator b = s.begin(); - typename S::const_iterator cb = cs.begin(); - if (!s.empty()) - { - assert(*b == s[0]); - } - assert(b == cb); +TEST_CONSTEXPR_CXX20 void test(S s) { + const S& cs = s; + typename S::iterator b = s.begin(); + typename S::const_iterator cb = cs.begin(); + if (!s.empty()) { + assert(*b == s[0]); + } + assert(b == cb); } TEST_CONSTEXPR_CXX20 bool test() { @@ -48,8 +45,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/cbegin.pass.cpp @@ -17,15 +17,12 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s) -{ - typename S::const_iterator cb = s.cbegin(); - if (!s.empty()) - { - assert(*cb == s[0]); - } - assert(cb == s.begin()); +TEST_CONSTEXPR_CXX20 void test(const S& s) { + typename S::const_iterator cb = s.cbegin(); + if (!s.empty()) { + assert(*cb == s[0]); + } + assert(cb == s.begin()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -45,8 +42,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/cend.pass.cpp @@ -17,11 +17,9 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s) -{ - typename S::const_iterator ce = s.cend(); - assert(ce == s.end()); +TEST_CONSTEXPR_CXX20 void test(const S& s) { + typename S::const_iterator ce = s.cend(); + assert(ce == s.end()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -41,8 +39,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/crbegin.pass.cpp @@ -17,15 +17,12 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s) -{ - typename S::const_reverse_iterator cb = s.crbegin(); - if (!s.empty()) - { - assert(*cb == s.back()); - } - assert(cb == s.rbegin()); +TEST_CONSTEXPR_CXX20 void test(const S& s) { + typename S::const_reverse_iterator cb = s.crbegin(); + if (!s.empty()) { + assert(*cb == s.back()); + } + assert(cb == s.rbegin()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -45,8 +42,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/crend.pass.cpp @@ -17,11 +17,9 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s) -{ - typename S::const_reverse_iterator ce = s.crend(); - assert(ce == s.rend()); +TEST_CONSTEXPR_CXX20 void test(const S& s) { + typename S::const_reverse_iterator ce = s.crend(); + assert(ce == s.rend()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -41,8 +39,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/end.pass.cpp @@ -19,19 +19,16 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s) -{ - const S& cs = s; - typename S::iterator e = s.end(); - typename S::const_iterator ce = cs.end(); - if (s.empty()) - { - assert(e == s.begin()); - assert(ce == cs.begin()); - } - assert(static_cast(e - s.begin()) == s.size()); - assert(static_cast(ce - cs.begin()) == cs.size()); +TEST_CONSTEXPR_CXX20 void test(S s) { + const S& cs = s; + typename S::iterator e = s.end(); + typename S::const_iterator ce = cs.end(); + if (s.empty()) { + assert(e == s.begin()); + assert(ce == cs.begin()); + } + assert(static_cast(e - s.begin()) == s.size()); + assert(static_cast(ce - cs.begin()) == cs.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -51,8 +48,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.iterators/iterator_concept_conformance.compile.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/iterator_concept_conformance.compile.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/iterator_concept_conformance.compile.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/iterator_concept_conformance.compile.pass.cpp @@ -14,11 +14,11 @@ #include -using iterator = std::string::iterator; -using const_iterator = std::string::const_iterator; -using reverse_iterator = std::string::reverse_iterator; +using iterator = std::string::iterator; +using const_iterator = std::string::const_iterator; +using reverse_iterator = std::string::reverse_iterator; using const_reverse_iterator = std::string::const_reverse_iterator; -using value_type = char; +using value_type = char; static_assert(std::contiguous_iterator); static_assert(std::indirectly_writable); @@ -30,23 +30,23 @@ static_assert(std::sized_sentinel_for); static_assert(!std::sized_sentinel_for); static_assert(!std::sized_sentinel_for); -static_assert( std::indirectly_movable); -static_assert( std::indirectly_movable_storable); +static_assert(std::indirectly_movable); +static_assert(std::indirectly_movable_storable); static_assert(!std::indirectly_movable); static_assert(!std::indirectly_movable_storable); -static_assert( std::indirectly_movable); -static_assert( std::indirectly_movable_storable); +static_assert(std::indirectly_movable); +static_assert(std::indirectly_movable_storable); static_assert(!std::indirectly_movable); static_assert(!std::indirectly_movable_storable); -static_assert( std::indirectly_copyable); -static_assert( std::indirectly_copyable_storable); +static_assert(std::indirectly_copyable); +static_assert(std::indirectly_copyable_storable); static_assert(!std::indirectly_copyable); static_assert(!std::indirectly_copyable_storable); -static_assert( std::indirectly_copyable); -static_assert( std::indirectly_copyable_storable); +static_assert(std::indirectly_copyable); +static_assert(std::indirectly_copyable_storable); static_assert(!std::indirectly_copyable); static_assert(!std::indirectly_copyable_storable); -static_assert( std::indirectly_swappable); +static_assert(std::indirectly_swappable); static_assert(std::contiguous_iterator); static_assert(!std::indirectly_writable); @@ -58,20 +58,20 @@ static_assert(std::sized_sentinel_for); static_assert(!std::sized_sentinel_for); static_assert(!std::sized_sentinel_for); -static_assert( std::indirectly_movable); -static_assert( std::indirectly_movable_storable); +static_assert(std::indirectly_movable); +static_assert(std::indirectly_movable_storable); static_assert(!std::indirectly_movable); static_assert(!std::indirectly_movable_storable); -static_assert( std::indirectly_movable); -static_assert( std::indirectly_movable_storable); +static_assert(std::indirectly_movable); +static_assert(std::indirectly_movable_storable); static_assert(!std::indirectly_movable); static_assert(!std::indirectly_movable_storable); -static_assert( std::indirectly_copyable); -static_assert( std::indirectly_copyable_storable); +static_assert(std::indirectly_copyable); +static_assert(std::indirectly_copyable_storable); static_assert(!std::indirectly_copyable); static_assert(!std::indirectly_copyable_storable); -static_assert( std::indirectly_copyable); -static_assert( std::indirectly_copyable_storable); +static_assert(std::indirectly_copyable); +static_assert(std::indirectly_copyable_storable); static_assert(!std::indirectly_copyable); static_assert(!std::indirectly_copyable_storable); static_assert(!std::indirectly_swappable); diff --git a/libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/iterators.pass.cpp @@ -22,64 +22,62 @@ #include "test_macros.h" -template -TEST_CONSTEXPR_CXX20 void test() -{ - { // N3644 testing - typename C::iterator ii1{}, ii2{}; - typename C::iterator ii4 = ii1; - typename C::const_iterator cii{}; +template +TEST_CONSTEXPR_CXX20 void test() { + { // N3644 testing + typename C::iterator ii1{}, ii2{}; + typename C::iterator ii4 = ii1; + typename C::const_iterator cii{}; - assert ( ii1 == ii2 ); - assert ( ii1 == ii4 ); + assert(ii1 == ii2); + assert(ii1 == ii4); - assert (!(ii1 != ii2 )); + assert(!(ii1 != ii2)); - assert ( (ii1 == cii )); - assert ( (cii == ii1 )); - assert (!(ii1 != cii )); - assert (!(cii != ii1 )); - assert (!(ii1 < cii )); - assert (!(cii < ii1 )); - assert ( (ii1 <= cii )); - assert ( (cii <= ii1 )); - assert (!(ii1 > cii )); - assert (!(cii > ii1 )); - assert ( (ii1 >= cii )); - assert ( (cii >= ii1 )); - assert (cii - ii1 == 0); - assert (ii1 - cii == 0); - } - { - C a; - typename C::iterator i1 = a.begin(); - typename C::iterator i2; - i2 = i1; - assert ( i1 == i2 ); - } + assert((ii1 == cii)); + assert((cii == ii1)); + assert(!(ii1 != cii)); + assert(!(cii != ii1)); + assert(!(ii1 < cii)); + assert(!(cii < ii1)); + assert((ii1 <= cii)); + assert((cii <= ii1)); + assert(!(ii1 > cii)); + assert(!(cii > ii1)); + assert((ii1 >= cii)); + assert((cii >= ii1)); + assert(cii - ii1 == 0); + assert(ii1 - cii == 0); + } + { + C a; + typename C::iterator i1 = a.begin(); + typename C::iterator i2; + i2 = i1; + assert(i1 == i2); + } } TEST_CONSTEXPR_CXX20 bool test() { - test(); + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif #ifndef TEST_HAS_NO_CHAR8_T - test(); + test(); #endif - test(); - test(); + test(); + test(); - return true; + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/rbegin.pass.cpp @@ -18,17 +18,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s) -{ - const S& cs = s; - typename S::reverse_iterator b = s.rbegin(); - typename S::const_reverse_iterator cb = cs.rbegin(); - if (!s.empty()) - { - assert(*b == s.back()); - } - assert(b == cb); +TEST_CONSTEXPR_CXX20 void test(S s) { + const S& cs = s; + typename S::reverse_iterator b = s.rbegin(); + typename S::const_reverse_iterator cb = cs.rbegin(); + if (!s.empty()) { + assert(*b == s.back()); + } + assert(b == cb); } TEST_CONSTEXPR_CXX20 bool test() { @@ -48,8 +45,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp b/libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.iterators/rend.pass.cpp @@ -19,19 +19,16 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s) -{ - const S& cs = s; - typename S::reverse_iterator e = s.rend(); - typename S::const_reverse_iterator ce = cs.rend(); - if (s.empty()) - { - assert(e == s.rbegin()); - assert(ce == cs.rbegin()); - } - assert(static_cast(e - s.rbegin()) == s.size()); - assert(static_cast(ce - cs.rbegin()) == cs.size()); +TEST_CONSTEXPR_CXX20 void test(S s) { + const S& cs = s; + typename S::reverse_iterator e = s.rend(); + typename S::const_reverse_iterator ce = cs.rend(); + if (s.empty()) { + assert(e == s.rbegin()); + assert(ce == cs.rbegin()); + } + assert(static_cast(e - s.rbegin()) == s.size()); + assert(static_cast(ce - cs.rbegin()) == cs.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -51,8 +48,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/robust_against_adl.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/robust_against_adl.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/robust_against_adl.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/robust_against_adl.pass.cpp @@ -14,29 +14,31 @@ #include "test_macros.h" struct Incomplete; -template struct Holder { T t; }; +template +struct Holder { + T t; +}; -template +template struct Charlike { - char ch_; - TEST_CONSTEXPR Charlike(char ch) : ch_(ch) {} - TEST_CONSTEXPR operator char() const { return ch_; } + char ch_; + TEST_CONSTEXPR Charlike(char ch) : ch_(ch) {} + TEST_CONSTEXPR operator char() const { return ch_; } }; TEST_CONSTEXPR_CXX20 bool test() { std::string s; Charlike > a[] = {'m', 'a', 'h', 'i'}; - s.append(a, a+4); - s.assign(a, a+4); - s.insert(s.begin(), a, a+4); - s.replace(s.begin(), s.begin()+4, a, a+4); + s.append(a, a + 4); + s.assign(a, a + 4); + s.insert(s.begin(), a, a + 4); + s.replace(s.begin(), s.begin() + 4, a, a + 4); assert(s == "mahimahi"); return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/T_size_size.pass.cpp @@ -20,54 +20,40 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, SV sv, typename S::size_type pos, typename S::size_type n, S expected) -{ - if (pos <= sv.size()) - { - s.append(sv, pos, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, SV sv, typename S::size_type pos, typename S::size_type n, S expected) { + if (pos <= sv.size()) { + s.append(sv, pos, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.append(sv, pos, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > sv.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.append(sv, pos, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos > sv.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test_npos(S s, SV sv, typename S::size_type pos, S expected) -{ - if (pos <= sv.size()) - { - s.append(sv, pos); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test_npos(S s, SV sv, typename S::size_type pos, S expected) { + if (pos <= sv.size()) { + s.append(sv, pos); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.append(sv, pos); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > sv.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.append(sv, pos); + assert(false); + } catch (std::out_of_range&) { + assert(pos > sv.size()); } + } #endif } @@ -93,8 +79,7 @@ test(S("12345678901234567890"), SV(), 0, 0, S("12345678901234567890")); test(S("12345678901234567890"), SV("12345"), 1, 3, S("12345678901234567890234")); - test(S("12345678901234567890"), SV("12345678901234567890"), 5, 10, - S("123456789012345678906789012345")); + test(S("12345678901234567890"), SV("12345678901234567890"), 5, 10, S("123456789012345678906789012345")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -118,9 +103,9 @@ { std::string s; std::string_view sv = "EFGH"; - char arr[] = "IJKL"; + char arr[] = "IJKL"; - s.append("CDEF", 0); // calls append(const char *, len) + s.append("CDEF", 0); // calls append(const char *, len) assert(s == ""); s.clear(); @@ -128,29 +113,29 @@ assert(s == "QRST"); s.clear(); - s.append(sv, 0); // calls append(T, pos, npos) + s.append(sv, 0); // calls append(T, pos, npos) assert(s == sv); s.clear(); - s.append(sv, 0, std::string::npos); // calls append(T, pos, npos) + s.append(sv, 0, std::string::npos); // calls append(T, pos, npos) assert(s == sv); s.clear(); - s.append(arr, 0); // calls append(const char *, len) + s.append(arr, 0); // calls append(const char *, len) assert(s == ""); s.clear(); - s.append(arr, 0, std::string::npos); // calls append(string("IJKL"), pos, npos) + s.append(arr, 0, std::string::npos); // calls append(string("IJKL"), pos, npos) assert(s == "IJKL"); s.clear(); - s.append(arr, 0); // calls append(const char *, len) + s.append(arr, 0); // calls append(const char *, len) assert(s == ""); s.clear(); } { - std::string s = "ABCD"; + std::string s = "ABCD"; std::string_view sv = s; s.append(sv); assert(s == "ABCDABCD"); @@ -165,20 +150,20 @@ } { - std::string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + std::string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; std::string_view sv = s; s.append(sv); assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"); sv = s; s.append(sv, 0, std::string::npos); - assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"); + assert(s == + "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"); } return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/append_range.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/append_range.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/append_range.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/append_range.pass.cpp @@ -43,9 +43,7 @@ { // Check that `append_range` returns a reference to the string. std::string c; - static_assert(std::is_lvalue_reference_v.input) - )>); + static_assert(std::is_lvalue_reference_v.input))>); assert(&c.append_range(FullContainer_Begin_EmptyRange.input) == &c); assert(&c.append_range(FullContainer_Begin_OneElementRange.input) == &c); assert(&c.append_range(FullContainer_Begin_MidRange.input) == &c); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/iterator.pass.cpp @@ -19,36 +19,35 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, It first, It last, S expected) -{ - s.append(first, last); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, It first, It last, S expected) { + s.append(first, last); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } #ifndef TEST_HAS_NO_EXCEPTIONS -struct Widget { operator char() const { throw 42; } }; +struct Widget { + operator char() const { throw 42; } +}; template -TEST_CONSTEXPR_CXX20 void -test_exceptions(S s, It first, It last) -{ - S original = s; - typename S::iterator begin = s.begin(); - typename S::iterator end = s.end(); - - try { - s.append(first, last); - assert(false); - } catch (...) {} - - // Part of "no effects" is that iterators and pointers - // into the string must not have been invalidated. - LIBCPP_ASSERT(s.__invariants()); - assert(s == original); - assert(s.begin() == begin); - assert(s.end() == end); +TEST_CONSTEXPR_CXX20 void test_exceptions(S s, It first, It last) { + S original = s; + typename S::iterator begin = s.begin(); + typename S::iterator end = s.end(); + + try { + s.append(first, last); + assert(false); + } catch (...) { + } + + // Part of "no effects" is that iterators and pointers + // into the string must not have been invalidated. + LIBCPP_ASSERT(s.__invariants()); + assert(s == original); + assert(s.begin() == begin); + assert(s.end() == end); } #endif @@ -56,59 +55,89 @@ TEST_CONSTEXPR_CXX20 void test_string() { const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; test(S(), s, s, S()); - test(S(), s, s+1, S("A")); - test(S(), s, s+10, S("ABCDEFGHIJ")); - test(S(), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S(), s, s + 1, S("A")); + test(S(), s, s + 10, S("ABCDEFGHIJ")); + test(S(), s, s + 52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("12345"), s, s, S("12345")); - test(S("12345"), s, s+1, S("12345A")); - test(S("12345"), s, s+10, S("12345ABCDEFGHIJ")); - test(S("12345"), s, s+52, S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("12345"), s, s + 1, S("12345A")); + test(S("12345"), s, s + 10, S("12345ABCDEFGHIJ")); + test(S("12345"), s, s + 52, S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("1234567890"), s, s, S("1234567890")); - test(S("1234567890"), s, s+1, S("1234567890A")); - test(S("1234567890"), s, s+10, S("1234567890ABCDEFGHIJ")); - test(S("1234567890"), s, s+52, S("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("1234567890"), s, s + 1, S("1234567890A")); + test(S("1234567890"), s, s + 10, S("1234567890ABCDEFGHIJ")); + test(S("1234567890"), s, s + 52, S("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("12345678901234567890"), s, s, S("12345678901234567890")); - test(S("12345678901234567890"), s, s+1, S("12345678901234567890""A")); - test(S("12345678901234567890"), s, s+10, S("12345678901234567890""ABCDEFGHIJ")); - test(S("12345678901234567890"), s, s+52, - S("12345678901234567890""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("12345678901234567890"), + s, + s + 1, + S("12345678901234567890" + "A")); + test(S("12345678901234567890"), + s, + s + 10, + S("12345678901234567890" + "ABCDEFGHIJ")); + test(S("12345678901234567890"), + s, + s + 52, + S("12345678901234567890" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s), S()); - test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s+1), S("A")); - test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s+10), - S("ABCDEFGHIJ")); - test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); - - test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s), - S("12345")); - test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s+1), - S("12345A")); - test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s+10), - S("12345ABCDEFGHIJ")); - test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); - - test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s), - S("1234567890")); - test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+1), - S("1234567890A")); - test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+10), - S("1234567890ABCDEFGHIJ")); - test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); - - test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s), - S("12345678901234567890")); - test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+1), - S("12345678901234567890""A")); - test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+10), - S("12345678901234567890""ABCDEFGHIJ")); - test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("12345678901234567890""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s + 1), S("A")); + test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s + 10), S("ABCDEFGHIJ")); + test(S(), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s), S("12345")); + test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s + 1), S("12345A")); + test(S("12345"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 10), + S("12345ABCDEFGHIJ")); + test(S("12345"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s), S("1234567890")); + test(S("1234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 1), + S("1234567890A")); + test(S("1234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 10), + S("1234567890ABCDEFGHIJ")); + test(S("1234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345678901234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s), + S("12345678901234567890")); + test(S("12345678901234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 1), + S("12345678901234567890" + "A")); + test(S("12345678901234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 10), + S("12345678901234567890" + "ABCDEFGHIJ")); + test(S("12345678901234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("12345678901234567890" + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -123,16 +152,16 @@ typedef ThrowingIterator TIter; typedef cpp17_input_iterator IIter; const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - test_exceptions(S(), IIter(TIter(s, s+10, 4, TIter::TAIncrement)), IIter(TIter())); - test_exceptions(S(), IIter(TIter(s, s+10, 5, TIter::TADereference)), IIter(TIter())); - test_exceptions(S(), IIter(TIter(s, s+10, 6, TIter::TAComparison)), IIter(TIter())); + test_exceptions(S(), IIter(TIter(s, s + 10, 4, TIter::TAIncrement)), IIter(TIter())); + test_exceptions(S(), IIter(TIter(s, s + 10, 5, TIter::TADereference)), IIter(TIter())); + test_exceptions(S(), IIter(TIter(s, s + 10, 6, TIter::TAComparison)), IIter(TIter())); - test_exceptions(S(), TIter(s, s+10, 4, TIter::TAIncrement), TIter()); - test_exceptions(S(), TIter(s, s+10, 5, TIter::TADereference), TIter()); - test_exceptions(S(), TIter(s, s+10, 6, TIter::TAComparison), TIter()); + test_exceptions(S(), TIter(s, s + 10, 4, TIter::TAIncrement), TIter()); + test_exceptions(S(), TIter(s, s + 10, 5, TIter::TADereference), TIter()); + test_exceptions(S(), TIter(s, s + 10, 6, TIter::TAComparison), TIter()); Widget w[100]; - test_exceptions(S(), w, w+100); + test_exceptions(S(), w, w + 100); } #endif @@ -162,23 +191,24 @@ } { // regression-test appending to self in sneaky ways - std::string s_short = "hello"; - std::string s_long = "Lorem ipsum dolor sit amet, consectetur/"; + std::string s_short = "hello"; + std::string s_long = "Lorem ipsum dolor sit amet, consectetur/"; std::string s_othertype = "hello"; - std::string s_sneaky = "hello"; + std::string s_sneaky = "hello"; - test(s_short, s_short.data() + s_short.size(), s_short.data() + s_short.size() + 1, - std::string("hello\0", 6)); - test(s_long, s_long.data() + s_long.size(), s_long.data() + s_long.size() + 1, + test(s_short, s_short.data() + s_short.size(), s_short.data() + s_short.size() + 1, std::string("hello\0", 6)); + test(s_long, + s_long.data() + s_long.size(), + s_long.data() + s_long.size() + 1, std::string("Lorem ipsum dolor sit amet, consectetur/\0", 41)); s_sneaky.reserve(12); test(s_sneaky, s_sneaky.data(), s_sneaky.data() + 6, std::string("hellohello\0", 11)); - if (!TEST_IS_CONSTANT_EVALUATED) { - const unsigned char *first = reinterpret_cast(s_othertype.data()); - test(s_othertype, first + 2, first + 5, std::string("hellollo")); - } + if (!TEST_IS_CONSTANT_EVALUATED) { + const unsigned char* first = reinterpret_cast(s_othertype.data()); + test(s_othertype, first + 2, first + 5, std::string("hellollo")); + } } { // test with a move iterator that returns char&& @@ -201,8 +231,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer.pass.cpp @@ -18,12 +18,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, const typename S::value_type* str, S expected) -{ - s.append(str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, const typename S::value_type* str, S expected) { + s.append(str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -38,8 +36,7 @@ test(S("12345678901234567890"), "", S("12345678901234567890")); test(S("12345678901234567890"), "12345", S("1234567890123456789012345")); - test(S("12345678901234567890"), "12345678901234567890", - S("1234567890123456789012345678901234567890")); + test(S("12345678901234567890"), "12345678901234567890", S("1234567890123456789012345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -66,8 +63,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/pointer_size.pass.cpp @@ -19,12 +19,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, const typename S::value_type* str, typename S::size_type n, S expected) -{ - s.append(str, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, const typename S::value_type* str, typename S::size_type n, S expected) { + s.append(str, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -43,8 +41,7 @@ test(S("12345678901234567890"), "", 0, S("12345678901234567890")); test(S("12345678901234567890"), "12345", 5, S("1234567890123456789012345")); - test(S("12345678901234567890"), "12345678901234567890", 20, - S("1234567890123456789012345678901234567890")); + test(S("12345678901234567890"), "12345678901234567890", 20, S("1234567890123456789012345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -72,8 +69,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/push_back.pass.cpp @@ -23,46 +23,44 @@ }; namespace std { - template <> - struct char_traits { - using char_type = VeryLarge; - using int_type = int; - using off_type = streamoff; - using pos_type = streampos; - using state_type = mbstate_t; +template <> +struct char_traits { + using char_type = VeryLarge; + using int_type = int; + using off_type = streamoff; + using pos_type = streampos; + using state_type = mbstate_t; - static TEST_CONSTEXPR_CXX20 void assign(char_type& c1, const char_type& c2) { c1 = c2; } - static bool eq(char_type c1, char_type c2); - static bool lt(char_type c1, char_type c2); + static TEST_CONSTEXPR_CXX20 void assign(char_type& c1, const char_type& c2) { c1 = c2; } + static bool eq(char_type c1, char_type c2); + static bool lt(char_type c1, char_type c2); - static int compare(const char_type* s1, const char_type* s2, std::size_t n); - static std::size_t length(const char_type* s); - static const char_type* find(const char_type* s, std::size_t n, const char_type& a); - static char_type* move(char_type* s1, const char_type* s2, std::size_t n); - static TEST_CONSTEXPR_CXX20 char_type* copy(char_type* s1, const char_type* s2, std::size_t n) { - std::copy_n(s2, n, s1); - return s1; - } - static TEST_CONSTEXPR_CXX20 char_type* assign(char_type* s, std::size_t n, char_type a) { - std::fill_n(s, n, a); - return s; - } + static int compare(const char_type* s1, const char_type* s2, std::size_t n); + static std::size_t length(const char_type* s); + static const char_type* find(const char_type* s, std::size_t n, const char_type& a); + static char_type* move(char_type* s1, const char_type* s2, std::size_t n); + static TEST_CONSTEXPR_CXX20 char_type* copy(char_type* s1, const char_type* s2, std::size_t n) { + std::copy_n(s2, n, s1); + return s1; + } + static TEST_CONSTEXPR_CXX20 char_type* assign(char_type* s, std::size_t n, char_type a) { + std::fill_n(s, n, a); + return s; + } - static int_type not_eof(int_type c); - static char_type to_char_type(int_type c); - static int_type to_int_type(char_type c); - static bool eq_int_type(int_type c1, int_type c2); - static int_type eof(); - }; + static int_type not_eof(int_type c); + static char_type to_char_type(int_type c); + static int_type to_int_type(char_type c); + static bool eq_int_type(int_type c1, int_type c2); + static int_type eof(); +}; } // end namespace std template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::value_type c, S expected) -{ - s.push_back(c); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::value_type c, S expected) { + s.push_back(c); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } TEST_CONSTEXPR_CXX20 bool test() { @@ -93,8 +91,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/size_char.pass.cpp @@ -18,12 +18,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type n, typename S::value_type c, S expected) -{ - s.append(n, c); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type n, typename S::value_type c, S expected) { + s.append(n, c); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -51,8 +49,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string.pass.cpp @@ -18,12 +18,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, S str, S expected) -{ - s.append(str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, S str, S expected) { + s.append(str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -46,8 +44,7 @@ test(S("12345678901234567890"), S(), S("12345678901234567890")); test(S("12345678901234567890"), S("12345"), S("1234567890123456789012345")); test(S("12345678901234567890"), S("1234567890"), S("123456789012345678901234567890")); - test(S("12345678901234567890"), S("12345678901234567890"), - S("1234567890123456789012345678901234567890")); + test(S("12345678901234567890"), S("12345678901234567890"), S("1234567890123456789012345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -57,7 +54,7 @@ #endif #if TEST_STD_VER >= 11 - { // LWG 2946 + { // LWG 2946 std::string s; s.append({"abc", 1}); assert(s.size() == 1); @@ -68,8 +65,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_size_size.pass.cpp @@ -20,54 +20,40 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected) -{ - if (pos <= str.size()) - { - s.append(str, pos, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected) { + if (pos <= str.size()) { + s.append(str, pos, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.append(str, pos, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.append(str, pos, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos > str.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test_npos(S s, S str, typename S::size_type pos, S expected) -{ - if (pos <= str.size()) - { - s.append(str, pos); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test_npos(S s, S str, typename S::size_type pos, S expected) { + if (pos <= str.size()) { + s.append(str, pos); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.append(str, pos); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.append(str, pos); + assert(false); + } catch (std::out_of_range&) { + assert(pos > str.size()); } + } #endif } @@ -92,8 +78,7 @@ test(S("12345678901234567890"), S(), 0, 0, S("12345678901234567890")); test(S("12345678901234567890"), S("12345"), 1, 3, S("12345678901234567890234")); - test(S("12345678901234567890"), S("12345678901234567890"), 5, 10, - S("123456789012345678906789012345")); + test(S("12345678901234567890"), S("12345678901234567890"), 5, 10, S("123456789012345678906789012345")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -116,8 +101,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_append/string_view.pass.cpp @@ -19,12 +19,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, SV sv, S expected) -{ - s.append(sv); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, SV sv, S expected) { + s.append(sv); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -48,8 +46,7 @@ test(S("12345678901234567890"), SV(), S("12345678901234567890")); test(S("12345678901234567890"), SV("12345"), S("1234567890123456789012345")); test(S("12345678901234567890"), SV("1234567890"), S("123456789012345678901234567890")); - test(S("12345678901234567890"), SV("12345678901234567890"), - S("1234567890123456789012345678901234567890")); + test(S("12345678901234567890"), SV("12345678901234567890"), S("1234567890123456789012345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -61,8 +58,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/T_size_size.pass.cpp @@ -19,54 +19,40 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, SV sv, typename S::size_type pos, typename S::size_type n, S expected) -{ - if (pos <= sv.size()) - { - s.assign(sv, pos, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, SV sv, typename S::size_type pos, typename S::size_type n, S expected) { + if (pos <= sv.size()) { + s.assign(sv, pos, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.assign(sv, pos, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > sv.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.assign(sv, pos, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos > sv.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test_npos(S s, SV sv, typename S::size_type pos, S expected) -{ - if (pos <= sv.size()) - { - s.assign(sv, pos); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test_npos(S s, SV sv, typename S::size_type pos, S expected) { + if (pos <= sv.size()) { + s.assign(sv, pos); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.assign(sv, pos); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > sv.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.assign(sv, pos); + assert(false); + } catch (std::out_of_range&) { + assert(pos > sv.size()); } + } #endif } @@ -92,8 +78,7 @@ test(S("12345678901234567890"), SV(), 0, 0, S()); test(S("12345678901234567890"), SV("12345"), 1, 3, S("234")); - test(S("12345678901234567890"), SV("12345678901234567890"), 5, 10, - S("6789012345")); + test(S("12345678901234567890"), SV("12345678901234567890"), 5, 10, S("6789012345")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -115,11 +100,11 @@ } { - std::string s = "ABCD"; + std::string s = "ABCD"; std::string_view sv = "EFGH"; - char arr[] = "IJKL"; + char arr[] = "IJKL"; - s.assign("CDEF", 0); // calls assign(const char *, len) + s.assign("CDEF", 0); // calls assign(const char *, len) assert(s == ""); s.clear(); @@ -127,29 +112,29 @@ assert(s == "QRST"); s.clear(); - s.assign(sv, 0); // calls assign(T, pos, npos) + s.assign(sv, 0); // calls assign(T, pos, npos) assert(s == sv); s.clear(); - s.assign(sv, 0, std::string::npos); // calls assign(T, pos, npos) + s.assign(sv, 0, std::string::npos); // calls assign(T, pos, npos) assert(s == sv); s.clear(); - s.assign(arr, 0); // calls assign(const char *, len) + s.assign(arr, 0); // calls assign(const char *, len) assert(s == ""); s.clear(); - s.assign(arr, 0, std::string::npos); // calls assign(string("IJKL"), pos, npos) + s.assign(arr, 0, std::string::npos); // calls assign(string("IJKL"), pos, npos) assert(s == "IJKL"); s.clear(); - s.assign(arr, 0); // calls assign(const char *, len) + s.assign(arr, 0); // calls assign(const char *, len) assert(s == ""); s.clear(); } { - std::string s = "ABCD"; + std::string s = "ABCD"; std::string_view sv = s; s.assign(sv); assert(s == "ABCD"); @@ -160,7 +145,7 @@ } { - std::string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + std::string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; std::string_view sv = s; s.assign(sv); assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); @@ -172,8 +157,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/assign_range.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/assign_range.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/assign_range.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/assign_range.pass.cpp @@ -43,9 +43,7 @@ { // Check that `assign_range` returns a reference to the string. std::string c; - static_assert(std::is_lvalue_reference_v.input) - )>); + static_assert(std::is_lvalue_reference_v.input))>); assert(&c.assign_range(FullContainer_Begin_EmptyRange.input) == &c); assert(&c.assign_range(FullContainer_Begin_OneElementRange.input) == &c); assert(&c.assign_range(FullContainer_Begin_MidRange.input) == &c); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/initializer_list.pass.cpp @@ -34,8 +34,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp @@ -19,36 +19,35 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, It first, It last, S expected) -{ - s.assign(first, last); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, It first, It last, S expected) { + s.assign(first, last); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } #ifndef TEST_HAS_NO_EXCEPTIONS -struct Widget { operator char() const { throw 42; } }; +struct Widget { + operator char() const { throw 42; } +}; template -void -test_exceptions(S s, It first, It last) -{ - S original = s; - typename S::iterator begin = s.begin(); - typename S::iterator end = s.end(); - - try { - s.assign(first, last); - assert(false); - } catch (...) {} - - // Part of "no effects" is that iterators and pointers - // into the string must not have been invalidated. - LIBCPP_ASSERT(s.__invariants()); - assert(s == original); - assert(s.begin() == begin); - assert(s.end() == end); +void test_exceptions(S s, It first, It last) { + S original = s; + typename S::iterator begin = s.begin(); + typename S::iterator end = s.end(); + + try { + s.assign(first, last); + assert(false); + } catch (...) { + } + + // Part of "no effects" is that iterators and pointers + // into the string must not have been invalidated. + LIBCPP_ASSERT(s.__invariants()); + assert(s == original); + assert(s.begin() == begin); + assert(s.end() == end); } #endif @@ -56,59 +55,65 @@ TEST_CONSTEXPR_CXX20 void test_string() { const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; test(S(), s, s, S()); - test(S(), s, s+1, S("A")); - test(S(), s, s+10, S("ABCDEFGHIJ")); - test(S(), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S(), s, s + 1, S("A")); + test(S(), s, s + 10, S("ABCDEFGHIJ")); + test(S(), s, s + 52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("12345"), s, s, S()); - test(S("12345"), s, s+1, S("A")); - test(S("12345"), s, s+10, S("ABCDEFGHIJ")); - test(S("12345"), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("12345"), s, s + 1, S("A")); + test(S("12345"), s, s + 10, S("ABCDEFGHIJ")); + test(S("12345"), s, s + 52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("1234567890"), s, s, S()); - test(S("1234567890"), s, s+1, S("A")); - test(S("1234567890"), s, s+10, S("ABCDEFGHIJ")); - test(S("1234567890"), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("1234567890"), s, s + 1, S("A")); + test(S("1234567890"), s, s + 10, S("ABCDEFGHIJ")); + test(S("1234567890"), s, s + 52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("12345678901234567890"), s, s, S()); - test(S("12345678901234567890"), s, s+1, S("A")); - test(S("12345678901234567890"), s, s+10, S("ABCDEFGHIJ")); - test(S("12345678901234567890"), s, s+52, - S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("12345678901234567890"), s, s + 1, S("A")); + test(S("12345678901234567890"), s, s + 10, S("ABCDEFGHIJ")); + test(S("12345678901234567890"), s, s + 52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s), S()); - test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s+1), S("A")); - test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s+10), - S("ABCDEFGHIJ")); - test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); - - test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s), - S()); - test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s+1), - S("A")); - test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s+10), - S("ABCDEFGHIJ")); - test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); - - test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s), - S()); - test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+1), - S("A")); - test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+10), - S("ABCDEFGHIJ")); - test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); - - test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s), - S()); - test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+1), - S("A")); - test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+10), - S("ABCDEFGHIJ")); - test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s + 1), S("A")); + test(S(), cpp17_input_iterator(s), cpp17_input_iterator(s + 10), S("ABCDEFGHIJ")); + test(S(), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s), S()); + test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s + 1), S("A")); + test(S("12345"), cpp17_input_iterator(s), cpp17_input_iterator(s + 10), S("ABCDEFGHIJ")); + test(S("12345"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s), S()); + test(S("1234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s + 1), S("A")); + test(S("1234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 10), + S("ABCDEFGHIJ")); + test(S("1234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345678901234567890"), cpp17_input_iterator(s), cpp17_input_iterator(s), S()); + test(S("12345678901234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 1), + S("A")); + test(S("12345678901234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 10), + S("ABCDEFGHIJ")); + test(S("12345678901234567890"), + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -123,16 +128,16 @@ typedef ThrowingIterator TIter; typedef cpp17_input_iterator IIter; const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - test_exceptions(S(), IIter(TIter(s, s+10, 4, TIter::TAIncrement)), IIter(TIter())); - test_exceptions(S(), IIter(TIter(s, s+10, 5, TIter::TADereference)), IIter(TIter())); - test_exceptions(S(), IIter(TIter(s, s+10, 6, TIter::TAComparison)), IIter(TIter())); + test_exceptions(S(), IIter(TIter(s, s + 10, 4, TIter::TAIncrement)), IIter(TIter())); + test_exceptions(S(), IIter(TIter(s, s + 10, 5, TIter::TADereference)), IIter(TIter())); + test_exceptions(S(), IIter(TIter(s, s + 10, 6, TIter::TAComparison)), IIter(TIter())); - test_exceptions(S(), TIter(s, s+10, 4, TIter::TAIncrement), TIter()); - test_exceptions(S(), TIter(s, s+10, 5, TIter::TADereference), TIter()); - test_exceptions(S(), TIter(s, s+10, 6, TIter::TAComparison), TIter()); + test_exceptions(S(), TIter(s, s + 10, 4, TIter::TAIncrement), TIter()); + test_exceptions(S(), TIter(s, s + 10, 5, TIter::TADereference), TIter()); + test_exceptions(S(), TIter(s, s + 10, 6, TIter::TAComparison), TIter()); Widget w[100]; - test_exceptions(S(), w, w+100); + test_exceptions(S(), w, w + 100); } #endif @@ -171,12 +176,11 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer.pass.cpp @@ -18,12 +18,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, const typename S::value_type* str, S expected) -{ - s.assign(str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, const typename S::value_type* str, S expected) { + s.assign(str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -38,8 +36,7 @@ test(S("12345678901234567890"), "", S()); test(S("12345678901234567890"), "12345", S("12345")); - test(S("12345678901234567890"), "12345678901234567890", - S("12345678901234567890")); + test(S("12345678901234567890"), "12345678901234567890", S("12345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -65,8 +62,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/pointer_size.pass.cpp @@ -19,12 +19,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, const typename S::value_type* str, typename S::size_type n, S expected) -{ - s.assign(str, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, const typename S::value_type* str, typename S::size_type n, S expected) { + s.assign(str, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -43,8 +41,7 @@ test(S("12345678901234567890"), "", 0, S()); test(S("12345678901234567890"), "12345", 5, S("12345")); - test(S("12345678901234567890"), "12345678901234567890", 20, - S("12345678901234567890")); + test(S("12345678901234567890"), "12345678901234567890", 20, S("12345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -66,14 +63,13 @@ s_long.assign(s_long.data(), s_long.size()); assert(s_long == "Lorem ipsum dolor sit amet, consectetur/"); - s_long.assign(s_long.data() + 2, 8 ); + s_long.assign(s_long.data() + 2, 8); assert(s_long == "rem ipsu"); } return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/rv_string.pass.cpp @@ -19,12 +19,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, S str, S expected) -{ - s.assign(std::move(str)); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, S str, S expected) { + s.assign(std::move(str)); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -47,8 +45,7 @@ test(S("12345678901234567890"), S(), S()); test(S("12345678901234567890"), S("12345"), S("12345")); test(S("12345678901234567890"), S("1234567890"), S("1234567890")); - test(S("12345678901234567890"), S("12345678901234567890"), - S("12345678901234567890")); + test(S("12345678901234567890"), S("12345678901234567890"), S("12345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -60,8 +57,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/size_char.pass.cpp @@ -18,12 +18,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type n, typename S::value_type c, S expected) -{ - s.assign(n, c); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type n, typename S::value_type c, S expected) { + s.assign(n, c); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -51,8 +49,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string.pass.cpp @@ -27,72 +27,70 @@ } template -TEST_CONSTEXPR_CXX20 void -testAlloc(S dest, S src, const typename S::allocator_type& a) -{ - dest.assign(src); - LIBCPP_ASSERT(dest.__invariants()); - assert(dest == src); - assert(dest.get_allocator() == a); +TEST_CONSTEXPR_CXX20 void testAlloc(S dest, S src, const typename S::allocator_type& a) { + dest.assign(src); + LIBCPP_ASSERT(dest.__invariants()); + assert(dest == src); + assert(dest.get_allocator() == a); } template TEST_CONSTEXPR_CXX20 void test_assign() { - using CharT = typename S::value_type; - - test(S(), S()); - test(S(), S(CONVERT_TO_CSTRING(CharT, "12345"))); - test(S(), S(CONVERT_TO_CSTRING(CharT, "1234567890"))); - test(S(), S(CONVERT_TO_CSTRING(CharT, "12345678901234567890"))); - - test(S(CONVERT_TO_CSTRING(CharT, "12345")), S()); - test(S(CONVERT_TO_CSTRING(CharT, "12345")), S(CONVERT_TO_CSTRING(CharT, "12345"))); - test(S(CONVERT_TO_CSTRING(CharT, "12345")), S(CONVERT_TO_CSTRING(CharT, "1234567890"))); - test(S(CONVERT_TO_CSTRING(CharT, "12345")), S(CONVERT_TO_CSTRING(CharT, "12345678901234567890"))); - - test(S(CONVERT_TO_CSTRING(CharT, "1234567890")), S()); - test(S(CONVERT_TO_CSTRING(CharT, "1234567890")), S(CONVERT_TO_CSTRING(CharT, "12345"))); - test(S(CONVERT_TO_CSTRING(CharT, "1234567890")), S(CONVERT_TO_CSTRING(CharT, "1234567890"))); - test(S(CONVERT_TO_CSTRING(CharT, "1234567890")), S(CONVERT_TO_CSTRING(CharT, "12345678901234567890"))); - - test(S(CONVERT_TO_CSTRING(CharT, "12345678901234567890")), S()); - test(S(CONVERT_TO_CSTRING(CharT, "12345678901234567890")), S(CONVERT_TO_CSTRING(CharT, "12345"))); - test(S(CONVERT_TO_CSTRING(CharT, "12345678901234567890")), S(CONVERT_TO_CSTRING(CharT, "1234567890"))); - test(S(CONVERT_TO_CSTRING(CharT, "12345678901234567890")), S(CONVERT_TO_CSTRING(CharT, "12345678901234567890"))); + using CharT = typename S::value_type; + + test(S(), S()); + test(S(), S(CONVERT_TO_CSTRING(CharT, "12345"))); + test(S(), S(CONVERT_TO_CSTRING(CharT, "1234567890"))); + test(S(), S(CONVERT_TO_CSTRING(CharT, "12345678901234567890"))); + + test(S(CONVERT_TO_CSTRING(CharT, "12345")), S()); + test(S(CONVERT_TO_CSTRING(CharT, "12345")), S(CONVERT_TO_CSTRING(CharT, "12345"))); + test(S(CONVERT_TO_CSTRING(CharT, "12345")), S(CONVERT_TO_CSTRING(CharT, "1234567890"))); + test(S(CONVERT_TO_CSTRING(CharT, "12345")), S(CONVERT_TO_CSTRING(CharT, "12345678901234567890"))); + + test(S(CONVERT_TO_CSTRING(CharT, "1234567890")), S()); + test(S(CONVERT_TO_CSTRING(CharT, "1234567890")), S(CONVERT_TO_CSTRING(CharT, "12345"))); + test(S(CONVERT_TO_CSTRING(CharT, "1234567890")), S(CONVERT_TO_CSTRING(CharT, "1234567890"))); + test(S(CONVERT_TO_CSTRING(CharT, "1234567890")), S(CONVERT_TO_CSTRING(CharT, "12345678901234567890"))); + + test(S(CONVERT_TO_CSTRING(CharT, "12345678901234567890")), S()); + test(S(CONVERT_TO_CSTRING(CharT, "12345678901234567890")), S(CONVERT_TO_CSTRING(CharT, "12345"))); + test(S(CONVERT_TO_CSTRING(CharT, "12345678901234567890")), S(CONVERT_TO_CSTRING(CharT, "1234567890"))); + test(S(CONVERT_TO_CSTRING(CharT, "12345678901234567890")), S(CONVERT_TO_CSTRING(CharT, "12345678901234567890"))); } TEST_CONSTEXPR_CXX20 bool test() { - test_assign(); + test_assign(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test_assign(); + test_assign(); #endif #if TEST_STD_VER >= 20 - test_assign(); + test_assign(); #endif #if TEST_STD_VER >= 11 - test_assign(); - test_assign(); + test_assign(); + test_assign(); #endif #ifndef TEST_HAS_NO_NASTY_STRING - test_assign(); + test_assign(); #endif - { - typedef std::string S; - testAlloc(S(), S(), std::allocator()); - testAlloc(S(), S("12345"), std::allocator()); - testAlloc(S(), S("1234567890"), std::allocator()); - testAlloc(S(), S("12345678901234567890"), std::allocator()); - } - - { // LWG#5579 make sure assign takes the allocators where appropriate - typedef other_allocator A; // has POCCA --> true - typedef std::basic_string, A> S; - testAlloc(S(A(5)), S(A(3)), A(3)); - testAlloc(S(A(5)), S("1"), A()); - testAlloc(S(A(5)), S("1", A(7)), A(7)); - testAlloc(S(A(5)), S("1234567890123456789012345678901234567890123456789012345678901234567890", A(7)), A(7)); - } + { + typedef std::string S; + testAlloc(S(), S(), std::allocator()); + testAlloc(S(), S("12345"), std::allocator()); + testAlloc(S(), S("1234567890"), std::allocator()); + testAlloc(S(), S("12345678901234567890"), std::allocator()); + } + + { // LWG#5579 make sure assign takes the allocators where appropriate + typedef other_allocator A; // has POCCA --> true + typedef std::basic_string, A> S; + testAlloc(S(A(5)), S(A(3)), A(3)); + testAlloc(S(A(5)), S("1"), A()); + testAlloc(S(A(5)), S("1", A(7)), A(7)); + testAlloc(S(A(5)), S("1234567890123456789012345678901234567890123456789012345678901234567890", A(7)), A(7)); + } #if TEST_STD_VER >= 11 { @@ -107,15 +105,14 @@ #if TEST_STD_VER > 14 { typedef std::string S; - static_assert(noexcept(S().assign(S())), ""); // LWG#2063 + static_assert(noexcept(S().assign(S())), ""); // LWG#2063 } #endif return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_size_size.pass.cpp @@ -20,54 +20,40 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected) -{ - if (pos <= str.size()) - { - s.assign(str, pos, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, S str, typename S::size_type pos, typename S::size_type n, S expected) { + if (pos <= str.size()) { + s.assign(str, pos, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.assign(str, pos, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.assign(str, pos, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos > str.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test_npos(S s, S str, typename S::size_type pos, S expected) -{ - if (pos <= str.size()) - { - s.assign(str, pos); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test_npos(S s, S str, typename S::size_type pos, S expected) { + if (pos <= str.size()) { + s.assign(str, pos); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.assign(str, pos); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.assign(str, pos); + assert(false); + } catch (std::out_of_range&) { + assert(pos > str.size()); } + } #endif } @@ -92,8 +78,7 @@ test(S("12345678901234567890"), S(), 0, 0, S()); test(S("12345678901234567890"), S("12345"), 1, 3, S("234")); - test(S("12345678901234567890"), S("12345678901234567890"), 5, 10, - S("6789012345")); + test(S("12345678901234567890"), S("12345678901234567890"), 5, 10, S("6789012345")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -116,8 +101,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_assign/string_view.pass.cpp @@ -20,22 +20,18 @@ #include "test_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, SV sv, S expected) -{ - s.assign(sv); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, SV sv, S expected) { + s.assign(sv); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template -TEST_CONSTEXPR_CXX20 void -testAlloc(S s, SV sv, const typename S::allocator_type& a) -{ - s.assign(sv); - LIBCPP_ASSERT(s.__invariants()); - assert(s == sv); - assert(s.get_allocator() == a); +TEST_CONSTEXPR_CXX20 void testAlloc(S s, SV sv, const typename S::allocator_type& a) { + s.assign(sv); + LIBCPP_ASSERT(s.__invariants()); + assert(s == sv); + assert(s.get_allocator() == a); } template @@ -59,8 +55,7 @@ test(S("12345678901234567890"), SV(), S()); test(S("12345678901234567890"), SV("12345"), S("12345")); test(S("12345678901234567890"), SV("1234567890"), S("1234567890")); - test(S("12345678901234567890"), SV("12345678901234567890"), - S("12345678901234567890")); + test(S("12345678901234567890"), SV("12345678901234567890"), S("12345678901234567890")); using A = typename S::allocator_type; @@ -79,8 +74,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_copy/copy.pass.cpp @@ -19,33 +19,25 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S str, typename S::value_type* s, typename S::size_type n, - typename S::size_type pos) -{ - const S& cs = str; - if (pos <= cs.size()) - { - typename S::size_type r = cs.copy(s, n, pos); - typename S::size_type rlen = std::min(n, cs.size() - pos); - assert(r == rlen); - for (r = 0; r < rlen; ++r) - assert(S::traits_type::eq(cs[pos+r], s[r])); - } +TEST_CONSTEXPR_CXX20 void test(S str, typename S::value_type* s, typename S::size_type n, typename S::size_type pos) { + const S& cs = str; + if (pos <= cs.size()) { + typename S::size_type r = cs.copy(s, n, pos); + typename S::size_type rlen = std::min(n, cs.size() - pos); + assert(r == rlen); + for (r = 0; r < rlen; ++r) + assert(S::traits_type::eq(cs[pos + r], s[r])); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - typename S::size_type r = cs.copy(s, n, pos); - ((void)r); // Prevent unused warning - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + typename S::size_type r = cs.copy(s, n, pos); + ((void)r); // Prevent unused warning + assert(false); + } catch (std::out_of_range&) { + assert(pos > str.size()); } + } #endif } @@ -121,8 +113,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter.pass.cpp @@ -17,15 +17,13 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::difference_type pos, S expected) -{ - typename S::const_iterator p = s.begin() + pos; - typename S::iterator i = s.erase(p); - LIBCPP_ASSERT(s.__invariants()); - assert(s[s.size()] == typename S::value_type()); - assert(s == expected); - assert(i - s.begin() == pos); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::difference_type pos, S expected) { + typename S::const_iterator p = s.begin() + pos; + typename S::iterator i = s.erase(p); + LIBCPP_ASSERT(s.__invariants()); + assert(s[s.size()] == typename S::value_type()); + assert(s == expected); + assert(i - s.begin() == pos); } template @@ -53,8 +51,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/iter_iter.pass.cpp @@ -17,16 +17,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::difference_type pos, typename S::difference_type n, S expected) -{ - typename S::const_iterator first = s.cbegin() + pos; - typename S::const_iterator last = s.cbegin() + pos + n; - typename S::iterator i = s.erase(first, last); - LIBCPP_ASSERT(s.__invariants()); - assert(s[s.size()] == typename S::value_type()); - assert(s == expected); - assert(i - s.begin() == pos); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::difference_type pos, typename S::difference_type n, S expected) { + typename S::const_iterator first = s.cbegin() + pos; + typename S::const_iterator last = s.cbegin() + pos + n; + typename S::iterator i = s.erase(first, last); + LIBCPP_ASSERT(s.__invariants()); + assert(s[s.size()] == typename S::value_type()); + assert(s == expected); + assert(i - s.begin() == pos); } template @@ -96,8 +94,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/pop_back.pass.cpp @@ -17,13 +17,11 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, S expected) -{ - s.pop_back(); - LIBCPP_ASSERT(s.__invariants()); - assert(s[s.size()] == typename S::value_type()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, S expected) { + s.pop_back(); + LIBCPP_ASSERT(s.__invariants()); + assert(s[s.size()] == typename S::value_type()); + assert(s == expected); } template @@ -42,8 +40,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_erase/size_size.pass.cpp @@ -19,73 +19,57 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, typename S::size_type n, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.erase(pos, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s[s.size()] == typename S::value_type()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos, typename S::size_type n, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.erase(pos, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s[s.size()] == typename S::value_type()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.erase(pos, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.erase(pos, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.erase(pos); - LIBCPP_ASSERT(s.__invariants()); - assert(s[s.size()] == typename S::value_type()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.erase(pos); + LIBCPP_ASSERT(s.__invariants()); + assert(s[s.size()] == typename S::value_type()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.erase(pos); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.erase(pos); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test(S s, S expected) -{ - s.erase(); - LIBCPP_ASSERT(s.__invariants()); - assert(s[s.size()] == typename S::value_type()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, S expected) { + s.erase(); + LIBCPP_ASSERT(s.__invariants()); + assert(s[s.size()] == typename S::value_type()); + assert(s == expected); } template @@ -201,8 +185,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_char.pass.cpp @@ -18,18 +18,16 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S& s, typename S::const_iterator p, typename S::value_type c, S expected) -{ - bool sufficient_cap = s.size() < s.capacity(); - typename S::difference_type pos = p - s.begin(); - typename S::iterator i = s.insert(p, c); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - assert(i - s.begin() == pos); - assert(*i == c); - if (sufficient_cap) - assert(i == p); +TEST_CONSTEXPR_CXX20 void test(S& s, typename S::const_iterator p, typename S::value_type c, S expected) { + bool sufficient_cap = s.size() < s.capacity(); + typename S::difference_type pos = p - s.begin(); + typename S::iterator i = s.insert(p, c); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + assert(i - s.begin() == pos); + assert(*i == c); + if (sufficient_cap) + assert(i == p); } template @@ -38,17 +36,17 @@ test(s, s.begin(), '1', S("1")); test(s, s.begin(), 'a', S("a1")); test(s, s.end(), 'b', S("a1b")); - test(s, s.end()-1, 'c', S("a1cb")); - test(s, s.end()-2, 'd', S("a1dcb")); - test(s, s.end()-3, '2', S("a12dcb")); - test(s, s.end()-4, '3', S("a132dcb")); - test(s, s.end()-5, '4', S("a1432dcb")); - test(s, s.begin()+1, '5', S("a51432dcb")); - test(s, s.begin()+2, '6', S("a561432dcb")); - test(s, s.begin()+3, '7', S("a5671432dcb")); - test(s, s.begin()+4, 'A', S("a567A1432dcb")); - test(s, s.begin()+5, 'B', S("a567AB1432dcb")); - test(s, s.begin()+6, 'C', S("a567ABC1432dcb")); + test(s, s.end() - 1, 'c', S("a1cb")); + test(s, s.end() - 2, 'd', S("a1dcb")); + test(s, s.end() - 3, '2', S("a12dcb")); + test(s, s.end() - 4, '3', S("a132dcb")); + test(s, s.end() - 5, '4', S("a1432dcb")); + test(s, s.begin() + 1, '5', S("a51432dcb")); + test(s, s.begin() + 2, '6', S("a561432dcb")); + test(s, s.begin() + 3, '7', S("a5671432dcb")); + test(s, s.begin() + 4, 'A', S("a567A1432dcb")); + test(s, s.begin() + 5, 'B', S("a567AB1432dcb")); + test(s, s.begin() + 6, 'C', S("a567ABC1432dcb")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -60,8 +58,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_initializer_list.pass.cpp @@ -12,7 +12,6 @@ // iterator insert(const_iterator p, initializer_list il); // constexpr since C++20 - #include #include @@ -37,8 +36,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.infinite_recursion.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.infinite_recursion.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.infinite_recursion.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.infinite_recursion.pass.cpp @@ -18,90 +18,82 @@ #include "test_macros.h" struct char_ascii { - char char_; + char char_; - char_ascii() = default; - char_ascii(char ch) : char_(ch) { - assert(ch <= 0x7f); - } + char_ascii() = default; + char_ascii(char ch) : char_(ch) { assert(ch <= 0x7f); } }; template <> struct std::char_traits { - using char_type = char_ascii; - using int_type = typename std::char_traits::int_type; - using off_type = typename std::char_traits::off_type; - using pos_type = typename std::char_traits::pos_type; - using state_type = typename std::char_traits::state_type; - - static void assign(char_type& r, char_type const& a) TEST_NOEXCEPT { - r = a; - } + using char_type = char_ascii; + using int_type = typename std::char_traits::int_type; + using off_type = typename std::char_traits::off_type; + using pos_type = typename std::char_traits::pos_type; + using state_type = typename std::char_traits::state_type; - static char_type* assign(char_type* p, std::size_t count, char_type a) { - std::fill(p, p + count, a); - return p; - } + static void assign(char_type& r, char_type const& a) TEST_NOEXCEPT { r = a; } - static bool eq(char_type a, char_type b) TEST_NOEXCEPT { - return a.char_ == b.char_; - } + static char_type* assign(char_type* p, std::size_t count, char_type a) { + std::fill(p, p + count, a); + return p; + } - static bool lt(char_type a, char_type b) TEST_NOEXCEPT { - return a.char_ < b.char_; - } + static bool eq(char_type a, char_type b) TEST_NOEXCEPT { return a.char_ == b.char_; } - static std::size_t length(char_type const* s) { - std::size_t n = 0; - if (s) { - while (s->char_) - ++n; - } - return n; - } + static bool lt(char_type a, char_type b) TEST_NOEXCEPT { return a.char_ < b.char_; } - static const char_type* find(char_type const* p, std::size_t count, char_type const& ch) { - while (count > 0) { - if (p->char_ == ch.char_) { - return p; - } else { - ++p; - --count; - } - } - return nullptr; + static std::size_t length(char_type const* s) { + std::size_t n = 0; + if (s) { + while (s->char_) + ++n; } + return n; + } - static int compare(char_type const* s1, char_type const* s2, std::size_t count) { - for (std::size_t i = 0; i < count; ++i) { - if (s1->char_ < s2->char_) - return -1; - else if (s2->char_ < s1->char_) - return 1; - } - return 0; + static const char_type* find(char_type const* p, std::size_t count, char_type const& ch) { + while (count > 0) { + if (p->char_ == ch.char_) { + return p; + } else { + ++p; + --count; + } } - - static char_type* move(char_type* dest, char_type const* src, std::size_t count) { - if (src <= dest && dest < src + count) { - std::copy_backward(src, src + count, dest + count); - } else { - std::copy(src, src + count, dest); - } - return dest; + return nullptr; + } + + static int compare(char_type const* s1, char_type const* s2, std::size_t count) { + for (std::size_t i = 0; i < count; ++i) { + if (s1->char_ < s2->char_) + return -1; + else if (s2->char_ < s1->char_) + return 1; } + return 0; + } - static char_type* copy(char_type* dest, char_type const* src, std::size_t count) { - return char_traits::move(dest, src, count); + static char_type* move(char_type* dest, char_type const* src, std::size_t count) { + if (src <= dest && dest < src + count) { + std::copy_backward(src, src + count, dest + count); + } else { + std::copy(src, src + count, dest); } + return dest; + } + + static char_type* copy(char_type* dest, char_type const* src, std::size_t count) { + return char_traits::move(dest, src, count); + } }; int main(int, char**) { - std::basic_string str; + std::basic_string str; - char_ascii ch('A'); - str.insert(str.begin(), &ch, &ch + 1); - assert(str.size() == 1); - assert(str[0].char_ == 'A'); - return 0; + char_ascii ch('A'); + str.insert(str.begin(), &ch, &ch + 1); + assert(str.size() == 1); + assert(str[0].char_ == 'A'); + return 0; } diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_iter_iter.pass.cpp @@ -19,40 +19,39 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::difference_type pos, It first, It last, S expected) -{ - typename S::const_iterator p = s.cbegin() + pos; - typename S::iterator i = s.insert(p, first, last); - LIBCPP_ASSERT(s.__invariants()); - assert(i - s.begin() == pos); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::difference_type pos, It first, It last, S expected) { + typename S::const_iterator p = s.cbegin() + pos; + typename S::iterator i = s.insert(p, first, last); + LIBCPP_ASSERT(s.__invariants()); + assert(i - s.begin() == pos); + assert(s == expected); } #ifndef TEST_HAS_NO_EXCEPTIONS -struct Widget { operator char() const { throw 42; } }; +struct Widget { + operator char() const { throw 42; } +}; template -TEST_CONSTEXPR_CXX20 void -test_exceptions(S s, typename S::difference_type pos, It first, It last) -{ - typename S::const_iterator p = s.cbegin() + pos; - - S original = s; - typename S::iterator begin = s.begin(); - typename S::iterator end = s.end(); - - try { - s.insert(p, first, last); - assert(false); - } catch (...) {} - - // Part of "no effects" is that iterators and pointers - // into the string must not have been invalidated. - LIBCPP_ASSERT(s.__invariants()); - assert(s == original); - assert(s.begin() == begin); - assert(s.end() == end); +TEST_CONSTEXPR_CXX20 void test_exceptions(S s, typename S::difference_type pos, It first, It last) { + typename S::const_iterator p = s.cbegin() + pos; + + S original = s; + typename S::iterator begin = s.begin(); + typename S::iterator end = s.end(); + + try { + s.insert(p, first, last); + assert(false); + } catch (...) { + } + + // Part of "no effects" is that iterators and pointers + // into the string must not have been invalidated. + LIBCPP_ASSERT(s.__invariants()); + assert(s == original); + assert(s.begin() == begin); + assert(s.end() == end); } #endif @@ -60,46 +59,88 @@ TEST_CONSTEXPR_CXX20 void test_string() { const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; test(S(), 0, s, s, S()); - test(S(), 0, s, s+1, S("A")); - test(S(), 0, s, s+10, S("ABCDEFGHIJ")); - test(S(), 0, s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S(), 0, s, s + 1, S("A")); + test(S(), 0, s, s + 10, S("ABCDEFGHIJ")); + test(S(), 0, s, s + 52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("12345"), 0, s, s, S("12345")); - test(S("12345"), 1, s, s+1, S("1A2345")); - test(S("12345"), 4, s, s+10, S("1234ABCDEFGHIJ5")); - test(S("12345"), 5, s, s+52, S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("12345"), 1, s, s + 1, S("1A2345")); + test(S("12345"), 4, s, s + 10, S("1234ABCDEFGHIJ5")); + test(S("12345"), 5, s, s + 52, S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("1234567890"), 0, s, s, S("1234567890")); - test(S("1234567890"), 1, s, s+1, S("1A234567890")); - test(S("1234567890"), 10, s, s+10, S("1234567890ABCDEFGHIJ")); - test(S("1234567890"), 8, s, s+52, S("12345678ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz90")); + test(S("1234567890"), 1, s, s + 1, S("1A234567890")); + test(S("1234567890"), 10, s, s + 10, S("1234567890ABCDEFGHIJ")); + test(S("1234567890"), 8, s, s + 52, S("12345678ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz90")); test(S("12345678901234567890"), 3, s, s, S("12345678901234567890")); - test(S("12345678901234567890"), 3, s, s+1, S("123A45678901234567890")); - test(S("12345678901234567890"), 15, s, s+10, S("123456789012345ABCDEFGHIJ67890")); - test(S("12345678901234567890"), 20, s, s+52, - S("12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("12345678901234567890"), 3, s, s + 1, S("123A45678901234567890")); + test(S("12345678901234567890"), 15, s, s + 10, S("123456789012345ABCDEFGHIJ67890")); + test(S("12345678901234567890"), + 20, + s, + s + 52, + S("12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S(), 0, cpp17_input_iterator(s), cpp17_input_iterator(s), S()); - test(S(), 0, cpp17_input_iterator(s), cpp17_input_iterator(s+1), S("A")); - test(S(), 0, cpp17_input_iterator(s), cpp17_input_iterator(s+10), S("ABCDEFGHIJ")); - test(S(), 0, cpp17_input_iterator(s), cpp17_input_iterator(s+52), S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S(), 0, cpp17_input_iterator(s), cpp17_input_iterator(s + 1), S("A")); + test(S(), 0, cpp17_input_iterator(s), cpp17_input_iterator(s + 10), S("ABCDEFGHIJ")); + test(S(), + 0, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("12345"), 0, cpp17_input_iterator(s), cpp17_input_iterator(s), S("12345")); - test(S("12345"), 1, cpp17_input_iterator(s), cpp17_input_iterator(s+1), S("1A2345")); - test(S("12345"), 4, cpp17_input_iterator(s), cpp17_input_iterator(s+10), S("1234ABCDEFGHIJ5")); - test(S("12345"), 5, cpp17_input_iterator(s), cpp17_input_iterator(s+52), S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("12345"), 1, cpp17_input_iterator(s), cpp17_input_iterator(s + 1), S("1A2345")); + test(S("12345"), + 4, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 10), + S("1234ABCDEFGHIJ5")); + test(S("12345"), + 5, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); test(S("1234567890"), 0, cpp17_input_iterator(s), cpp17_input_iterator(s), S("1234567890")); - test(S("1234567890"), 1, cpp17_input_iterator(s), cpp17_input_iterator(s+1), S("1A234567890")); - test(S("1234567890"), 10, cpp17_input_iterator(s), cpp17_input_iterator(s+10), S("1234567890ABCDEFGHIJ")); - test(S("1234567890"), 8, cpp17_input_iterator(s), cpp17_input_iterator(s+52), S("12345678ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz90")); - - test(S("12345678901234567890"), 3, cpp17_input_iterator(s), cpp17_input_iterator(s), S("12345678901234567890")); - test(S("12345678901234567890"), 3, cpp17_input_iterator(s), cpp17_input_iterator(s+1), S("123A45678901234567890")); - test(S("12345678901234567890"), 15, cpp17_input_iterator(s), cpp17_input_iterator(s+10), S("123456789012345ABCDEFGHIJ67890")); - test(S("12345678901234567890"), 20, cpp17_input_iterator(s), cpp17_input_iterator(s+52), - S("12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + test(S("1234567890"), + 1, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 1), + S("1A234567890")); + test(S("1234567890"), + 10, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 10), + S("1234567890ABCDEFGHIJ")); + test(S("1234567890"), + 8, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("12345678ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz90")); + + test(S("12345678901234567890"), + 3, + cpp17_input_iterator(s), + cpp17_input_iterator(s), + S("12345678901234567890")); + test(S("12345678901234567890"), + 3, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 1), + S("123A45678901234567890")); + test(S("12345678901234567890"), + 15, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 10), + S("123456789012345ABCDEFGHIJ67890")); + test(S("12345678901234567890"), + 20, + cpp17_input_iterator(s), + cpp17_input_iterator(s + 52), + S("12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -114,16 +155,16 @@ typedef ThrowingIterator TIter; typedef cpp17_input_iterator IIter; const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - test_exceptions(S(), 0, IIter(TIter(s, s+10, 4, TIter::TAIncrement)), IIter(TIter())); - test_exceptions(S(), 0, IIter(TIter(s, s+10, 5, TIter::TADereference)), IIter(TIter())); - test_exceptions(S(), 0, IIter(TIter(s, s+10, 6, TIter::TAComparison)), IIter(TIter())); + test_exceptions(S(), 0, IIter(TIter(s, s + 10, 4, TIter::TAIncrement)), IIter(TIter())); + test_exceptions(S(), 0, IIter(TIter(s, s + 10, 5, TIter::TADereference)), IIter(TIter())); + test_exceptions(S(), 0, IIter(TIter(s, s + 10, 6, TIter::TAComparison)), IIter(TIter())); - test_exceptions(S(), 0, TIter(s, s+10, 4, TIter::TAIncrement), TIter()); - test_exceptions(S(), 0, TIter(s, s+10, 5, TIter::TADereference), TIter()); - test_exceptions(S(), 0, TIter(s, s+10, 6, TIter::TAComparison), TIter()); + test_exceptions(S(), 0, TIter(s, s + 10, 4, TIter::TAIncrement), TIter()); + test_exceptions(S(), 0, TIter(s, s + 10, 5, TIter::TADereference), TIter()); + test_exceptions(S(), 0, TIter(s, s + 10, 6, TIter::TAComparison), TIter()); Widget w[100]; - test_exceptions(S(), 0, w, w+100); + test_exceptions(S(), 0, w, w + 100); } #endif @@ -153,14 +194,16 @@ } if (!TEST_IS_CONSTANT_EVALUATED) { // regression-test inserting into self in sneaky ways - std::string s_short = "hello"; - std::string s_long = "Lorem ipsum dolor sit amet, consectetur/"; - std::string s_othertype = "hello"; - const unsigned char *first = reinterpret_cast(s_othertype.data()); - - test(s_short, 0, s_short.data() + s_short.size(), s_short.data() + s_short.size() + 1, - std::string("\0hello", 6)); - test(s_long, 0, s_long.data() + s_long.size(), s_long.data() + s_long.size() + 1, + std::string s_short = "hello"; + std::string s_long = "Lorem ipsum dolor sit amet, consectetur/"; + std::string s_othertype = "hello"; + const unsigned char* first = reinterpret_cast(s_othertype.data()); + + test(s_short, 0, s_short.data() + s_short.size(), s_short.data() + s_short.size() + 1, std::string("\0hello", 6)); + test(s_long, + 0, + s_long.data() + s_long.size(), + s_long.data() + s_long.size() + 1, std::string("\0Lorem ipsum dolor sit amet, consectetur/", 41)); test(s_othertype, 1, first + 2, first + 5, std::string("hlloello")); } @@ -192,8 +235,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/iter_size_char.pass.cpp @@ -18,14 +18,12 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::difference_type pos, typename S::size_type n, - typename S::value_type c, S expected) -{ - typename S::const_iterator p = s.cbegin() + pos; - typename S::iterator i = s.insert(p, n, c); - LIBCPP_ASSERT(s.__invariants()); - assert(i - s.begin() == pos); - assert(s == expected); +test(S s, typename S::difference_type pos, typename S::size_type n, typename S::value_type c, S expected) { + typename S::const_iterator p = s.cbegin() + pos; + typename S::iterator i = s.insert(p, n, c); + LIBCPP_ASSERT(s.__invariants()); + assert(i - s.begin() == pos); + assert(s == expected); } template @@ -105,8 +103,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_T_size_size.pass.cpp @@ -22,1810 +22,1764 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, SV sv, typename S::size_type pos2, - typename S::size_type n, S expected) -{ - static_assert((!std::is_same::value), ""); - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos1 <= old_size && pos2 <= sv.size()) - { - s.insert(pos1, sv, pos2, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +test(S s, typename S::size_type pos1, SV sv, typename S::size_type pos2, typename S::size_type n, S expected) { + static_assert((!std::is_same::value), ""); + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos1 <= old_size && pos2 <= sv.size()) { + s.insert(pos1, sv, pos2, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos1, sv, pos2, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size || pos2 > sv.size()); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos1, sv, pos2, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size || pos2 > sv.size()); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test_npos(S s, typename S::size_type pos1, SV sv, typename S::size_type pos2, S expected) -{ - static_assert((!std::is_same::value), ""); - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos1 <= old_size && pos2 <= sv.size()) - { - s.insert(pos1, sv, pos2); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test_npos(S s, typename S::size_type pos1, SV sv, typename S::size_type pos2, S expected) { + static_assert((!std::is_same::value), ""); + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos1 <= old_size && pos2 <= sv.size()) { + s.insert(pos1, sv, pos2); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos1, sv, pos2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size || pos2 > sv.size()); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos1, sv, pos2); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size || pos2 > sv.size()); + assert(s == s0); } + } #endif } - template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, SV(""), 0, 0, S("")); - test(S(""), 0, SV(""), 0, 1, S("")); - test(S(""), 0, SV(""), 1, 0, S("can't happen")); - test(S(""), 0, SV("12345"), 0, 0, S("")); - test(S(""), 0, SV("12345"), 0, 1, S("1")); - test(S(""), 0, SV("12345"), 0, 2, S("12")); - test(S(""), 0, SV("12345"), 0, 4, S("1234")); - test(S(""), 0, SV("12345"), 0, 5, S("12345")); - test(S(""), 0, SV("12345"), 0, 6, S("12345")); - test(S(""), 0, SV("12345"), 1, 0, S("")); - test(S(""), 0, SV("12345"), 1, 1, S("2")); - test(S(""), 0, SV("12345"), 1, 2, S("23")); - test(S(""), 0, SV("12345"), 1, 3, S("234")); - test(S(""), 0, SV("12345"), 1, 4, S("2345")); - test(S(""), 0, SV("12345"), 1, 5, S("2345")); - test(S(""), 0, SV("12345"), 2, 0, S("")); - test(S(""), 0, SV("12345"), 2, 1, S("3")); - test(S(""), 0, SV("12345"), 2, 2, S("34")); - test(S(""), 0, SV("12345"), 2, 3, S("345")); - test(S(""), 0, SV("12345"), 2, 4, S("345")); - test(S(""), 0, SV("12345"), 4, 0, S("")); - test(S(""), 0, SV("12345"), 4, 1, S("5")); - test(S(""), 0, SV("12345"), 4, 2, S("5")); - test(S(""), 0, SV("12345"), 5, 0, S("")); - test(S(""), 0, SV("12345"), 5, 1, S("")); - test(S(""), 0, SV("12345"), 6, 0, S("can't happen")); - test(S(""), 0, SV("1234567890"), 0, 0, S("")); - test(S(""), 0, SV("1234567890"), 0, 1, S("1")); - test(S(""), 0, SV("1234567890"), 0, 5, S("12345")); - test(S(""), 0, SV("1234567890"), 0, 9, S("123456789")); - test(S(""), 0, SV("1234567890"), 0, 10, S("1234567890")); - test(S(""), 0, SV("1234567890"), 0, 11, S("1234567890")); - test(S(""), 0, SV("1234567890"), 1, 0, S("")); - test(S(""), 0, SV("1234567890"), 1, 1, S("2")); - test(S(""), 0, SV("1234567890"), 1, 4, S("2345")); - test(S(""), 0, SV("1234567890"), 1, 8, S("23456789")); - test(S(""), 0, SV("1234567890"), 1, 9, S("234567890")); - test(S(""), 0, SV("1234567890"), 1, 10, S("234567890")); - test(S(""), 0, SV("1234567890"), 5, 0, S("")); - test(S(""), 0, SV("1234567890"), 5, 1, S("6")); - test(S(""), 0, SV("1234567890"), 5, 2, S("67")); - test(S(""), 0, SV("1234567890"), 5, 4, S("6789")); - test(S(""), 0, SV("1234567890"), 5, 5, S("67890")); - test(S(""), 0, SV("1234567890"), 5, 6, S("67890")); - test(S(""), 0, SV("1234567890"), 9, 0, S("")); - test(S(""), 0, SV("1234567890"), 9, 1, S("0")); - test(S(""), 0, SV("1234567890"), 9, 2, S("0")); - test(S(""), 0, SV("1234567890"), 10, 0, S("")); - test(S(""), 0, SV("1234567890"), 10, 1, S("")); - test(S(""), 0, SV("1234567890"), 11, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, SV(""), 0, 0, S("")); + test(S(""), 0, SV(""), 0, 1, S("")); + test(S(""), 0, SV(""), 1, 0, S("can't happen")); + test(S(""), 0, SV("12345"), 0, 0, S("")); + test(S(""), 0, SV("12345"), 0, 1, S("1")); + test(S(""), 0, SV("12345"), 0, 2, S("12")); + test(S(""), 0, SV("12345"), 0, 4, S("1234")); + test(S(""), 0, SV("12345"), 0, 5, S("12345")); + test(S(""), 0, SV("12345"), 0, 6, S("12345")); + test(S(""), 0, SV("12345"), 1, 0, S("")); + test(S(""), 0, SV("12345"), 1, 1, S("2")); + test(S(""), 0, SV("12345"), 1, 2, S("23")); + test(S(""), 0, SV("12345"), 1, 3, S("234")); + test(S(""), 0, SV("12345"), 1, 4, S("2345")); + test(S(""), 0, SV("12345"), 1, 5, S("2345")); + test(S(""), 0, SV("12345"), 2, 0, S("")); + test(S(""), 0, SV("12345"), 2, 1, S("3")); + test(S(""), 0, SV("12345"), 2, 2, S("34")); + test(S(""), 0, SV("12345"), 2, 3, S("345")); + test(S(""), 0, SV("12345"), 2, 4, S("345")); + test(S(""), 0, SV("12345"), 4, 0, S("")); + test(S(""), 0, SV("12345"), 4, 1, S("5")); + test(S(""), 0, SV("12345"), 4, 2, S("5")); + test(S(""), 0, SV("12345"), 5, 0, S("")); + test(S(""), 0, SV("12345"), 5, 1, S("")); + test(S(""), 0, SV("12345"), 6, 0, S("can't happen")); + test(S(""), 0, SV("1234567890"), 0, 0, S("")); + test(S(""), 0, SV("1234567890"), 0, 1, S("1")); + test(S(""), 0, SV("1234567890"), 0, 5, S("12345")); + test(S(""), 0, SV("1234567890"), 0, 9, S("123456789")); + test(S(""), 0, SV("1234567890"), 0, 10, S("1234567890")); + test(S(""), 0, SV("1234567890"), 0, 11, S("1234567890")); + test(S(""), 0, SV("1234567890"), 1, 0, S("")); + test(S(""), 0, SV("1234567890"), 1, 1, S("2")); + test(S(""), 0, SV("1234567890"), 1, 4, S("2345")); + test(S(""), 0, SV("1234567890"), 1, 8, S("23456789")); + test(S(""), 0, SV("1234567890"), 1, 9, S("234567890")); + test(S(""), 0, SV("1234567890"), 1, 10, S("234567890")); + test(S(""), 0, SV("1234567890"), 5, 0, S("")); + test(S(""), 0, SV("1234567890"), 5, 1, S("6")); + test(S(""), 0, SV("1234567890"), 5, 2, S("67")); + test(S(""), 0, SV("1234567890"), 5, 4, S("6789")); + test(S(""), 0, SV("1234567890"), 5, 5, S("67890")); + test(S(""), 0, SV("1234567890"), 5, 6, S("67890")); + test(S(""), 0, SV("1234567890"), 9, 0, S("")); + test(S(""), 0, SV("1234567890"), 9, 1, S("0")); + test(S(""), 0, SV("1234567890"), 9, 2, S("0")); + test(S(""), 0, SV("1234567890"), 10, 0, S("")); + test(S(""), 0, SV("1234567890"), 10, 1, S("")); + test(S(""), 0, SV("1234567890"), 11, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S(""), 0, SV("12345678901234567890"), 0, 0, S("")); - test(S(""), 0, SV("12345678901234567890"), 0, 1, S("1")); - test(S(""), 0, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S(""), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S(""), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S(""), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S(""), 0, SV("12345678901234567890"), 1, 0, S("")); - test(S(""), 0, SV("12345678901234567890"), 1, 1, S("2")); - test(S(""), 0, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S(""), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S(""), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S(""), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S(""), 0, SV("12345678901234567890"), 10, 0, S("")); - test(S(""), 0, SV("12345678901234567890"), 10, 1, S("1")); - test(S(""), 0, SV("12345678901234567890"), 10, 5, S("12345")); - test(S(""), 0, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S(""), 0, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S(""), 0, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S(""), 0, SV("12345678901234567890"), 19, 0, S("")); - test(S(""), 0, SV("12345678901234567890"), 19, 1, S("0")); - test(S(""), 0, SV("12345678901234567890"), 19, 2, S("0")); - test(S(""), 0, SV("12345678901234567890"), 20, 0, S("")); - test(S(""), 0, SV("12345678901234567890"), 20, 1, S("")); - test(S(""), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S(""), 1, SV(""), 0, 0, S("can't happen")); - test(S(""), 1, SV(""), 0, 1, S("can't happen")); - test(S(""), 1, SV(""), 1, 0, S("can't happen")); - test(S(""), 1, SV("12345"), 0, 0, S("can't happen")); - test(S(""), 1, SV("12345"), 0, 1, S("can't happen")); - test(S(""), 1, SV("12345"), 0, 2, S("can't happen")); - test(S(""), 1, SV("12345"), 0, 4, S("can't happen")); - test(S(""), 1, SV("12345"), 0, 5, S("can't happen")); - test(S(""), 1, SV("12345"), 0, 6, S("can't happen")); - test(S(""), 1, SV("12345"), 1, 0, S("can't happen")); - test(S(""), 1, SV("12345"), 1, 1, S("can't happen")); - test(S(""), 1, SV("12345"), 1, 2, S("can't happen")); - test(S(""), 1, SV("12345"), 1, 3, S("can't happen")); - test(S(""), 1, SV("12345"), 1, 4, S("can't happen")); - test(S(""), 1, SV("12345"), 1, 5, S("can't happen")); - test(S(""), 1, SV("12345"), 2, 0, S("can't happen")); - test(S(""), 1, SV("12345"), 2, 1, S("can't happen")); - test(S(""), 1, SV("12345"), 2, 2, S("can't happen")); - test(S(""), 1, SV("12345"), 2, 3, S("can't happen")); - test(S(""), 1, SV("12345"), 2, 4, S("can't happen")); - test(S(""), 1, SV("12345"), 4, 0, S("can't happen")); - test(S(""), 1, SV("12345"), 4, 1, S("can't happen")); - test(S(""), 1, SV("12345"), 4, 2, S("can't happen")); - test(S(""), 1, SV("12345"), 5, 0, S("can't happen")); - test(S(""), 1, SV("12345"), 5, 1, S("can't happen")); - test(S(""), 1, SV("12345"), 6, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test1() { + test(S(""), 0, SV("12345678901234567890"), 0, 0, S("")); + test(S(""), 0, SV("12345678901234567890"), 0, 1, S("1")); + test(S(""), 0, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S(""), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S(""), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S(""), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S(""), 0, SV("12345678901234567890"), 1, 0, S("")); + test(S(""), 0, SV("12345678901234567890"), 1, 1, S("2")); + test(S(""), 0, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S(""), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S(""), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S(""), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S(""), 0, SV("12345678901234567890"), 10, 0, S("")); + test(S(""), 0, SV("12345678901234567890"), 10, 1, S("1")); + test(S(""), 0, SV("12345678901234567890"), 10, 5, S("12345")); + test(S(""), 0, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S(""), 0, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S(""), 0, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S(""), 0, SV("12345678901234567890"), 19, 0, S("")); + test(S(""), 0, SV("12345678901234567890"), 19, 1, S("0")); + test(S(""), 0, SV("12345678901234567890"), 19, 2, S("0")); + test(S(""), 0, SV("12345678901234567890"), 20, 0, S("")); + test(S(""), 0, SV("12345678901234567890"), 20, 1, S("")); + test(S(""), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S(""), 1, SV(""), 0, 0, S("can't happen")); + test(S(""), 1, SV(""), 0, 1, S("can't happen")); + test(S(""), 1, SV(""), 1, 0, S("can't happen")); + test(S(""), 1, SV("12345"), 0, 0, S("can't happen")); + test(S(""), 1, SV("12345"), 0, 1, S("can't happen")); + test(S(""), 1, SV("12345"), 0, 2, S("can't happen")); + test(S(""), 1, SV("12345"), 0, 4, S("can't happen")); + test(S(""), 1, SV("12345"), 0, 5, S("can't happen")); + test(S(""), 1, SV("12345"), 0, 6, S("can't happen")); + test(S(""), 1, SV("12345"), 1, 0, S("can't happen")); + test(S(""), 1, SV("12345"), 1, 1, S("can't happen")); + test(S(""), 1, SV("12345"), 1, 2, S("can't happen")); + test(S(""), 1, SV("12345"), 1, 3, S("can't happen")); + test(S(""), 1, SV("12345"), 1, 4, S("can't happen")); + test(S(""), 1, SV("12345"), 1, 5, S("can't happen")); + test(S(""), 1, SV("12345"), 2, 0, S("can't happen")); + test(S(""), 1, SV("12345"), 2, 1, S("can't happen")); + test(S(""), 1, SV("12345"), 2, 2, S("can't happen")); + test(S(""), 1, SV("12345"), 2, 3, S("can't happen")); + test(S(""), 1, SV("12345"), 2, 4, S("can't happen")); + test(S(""), 1, SV("12345"), 4, 0, S("can't happen")); + test(S(""), 1, SV("12345"), 4, 1, S("can't happen")); + test(S(""), 1, SV("12345"), 4, 2, S("can't happen")); + test(S(""), 1, SV("12345"), 5, 0, S("can't happen")); + test(S(""), 1, SV("12345"), 5, 1, S("can't happen")); + test(S(""), 1, SV("12345"), 6, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S(""), 1, SV("1234567890"), 0, 0, S("can't happen")); - test(S(""), 1, SV("1234567890"), 0, 1, S("can't happen")); - test(S(""), 1, SV("1234567890"), 0, 5, S("can't happen")); - test(S(""), 1, SV("1234567890"), 0, 9, S("can't happen")); - test(S(""), 1, SV("1234567890"), 0, 10, S("can't happen")); - test(S(""), 1, SV("1234567890"), 0, 11, S("can't happen")); - test(S(""), 1, SV("1234567890"), 1, 0, S("can't happen")); - test(S(""), 1, SV("1234567890"), 1, 1, S("can't happen")); - test(S(""), 1, SV("1234567890"), 1, 4, S("can't happen")); - test(S(""), 1, SV("1234567890"), 1, 8, S("can't happen")); - test(S(""), 1, SV("1234567890"), 1, 9, S("can't happen")); - test(S(""), 1, SV("1234567890"), 1, 10, S("can't happen")); - test(S(""), 1, SV("1234567890"), 5, 0, S("can't happen")); - test(S(""), 1, SV("1234567890"), 5, 1, S("can't happen")); - test(S(""), 1, SV("1234567890"), 5, 2, S("can't happen")); - test(S(""), 1, SV("1234567890"), 5, 4, S("can't happen")); - test(S(""), 1, SV("1234567890"), 5, 5, S("can't happen")); - test(S(""), 1, SV("1234567890"), 5, 6, S("can't happen")); - test(S(""), 1, SV("1234567890"), 9, 0, S("can't happen")); - test(S(""), 1, SV("1234567890"), 9, 1, S("can't happen")); - test(S(""), 1, SV("1234567890"), 9, 2, S("can't happen")); - test(S(""), 1, SV("1234567890"), 10, 0, S("can't happen")); - test(S(""), 1, SV("1234567890"), 10, 1, S("can't happen")); - test(S(""), 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 0, 0, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 0, 1, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 0, 10, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 0, 19, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 0, 20, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 0, 21, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 1, 0, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 1, 1, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 1, 9, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 1, 18, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 1, 19, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 1, 20, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 10, 0, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 10, 1, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 10, 5, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 10, 9, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 10, 10, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 10, 11, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 19, 0, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 19, 1, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 19, 2, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 20, 0, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 20, 1, S("can't happen")); - test(S(""), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 0, SV(""), 0, 1, S("abcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test2() { + test(S(""), 1, SV("1234567890"), 0, 0, S("can't happen")); + test(S(""), 1, SV("1234567890"), 0, 1, S("can't happen")); + test(S(""), 1, SV("1234567890"), 0, 5, S("can't happen")); + test(S(""), 1, SV("1234567890"), 0, 9, S("can't happen")); + test(S(""), 1, SV("1234567890"), 0, 10, S("can't happen")); + test(S(""), 1, SV("1234567890"), 0, 11, S("can't happen")); + test(S(""), 1, SV("1234567890"), 1, 0, S("can't happen")); + test(S(""), 1, SV("1234567890"), 1, 1, S("can't happen")); + test(S(""), 1, SV("1234567890"), 1, 4, S("can't happen")); + test(S(""), 1, SV("1234567890"), 1, 8, S("can't happen")); + test(S(""), 1, SV("1234567890"), 1, 9, S("can't happen")); + test(S(""), 1, SV("1234567890"), 1, 10, S("can't happen")); + test(S(""), 1, SV("1234567890"), 5, 0, S("can't happen")); + test(S(""), 1, SV("1234567890"), 5, 1, S("can't happen")); + test(S(""), 1, SV("1234567890"), 5, 2, S("can't happen")); + test(S(""), 1, SV("1234567890"), 5, 4, S("can't happen")); + test(S(""), 1, SV("1234567890"), 5, 5, S("can't happen")); + test(S(""), 1, SV("1234567890"), 5, 6, S("can't happen")); + test(S(""), 1, SV("1234567890"), 9, 0, S("can't happen")); + test(S(""), 1, SV("1234567890"), 9, 1, S("can't happen")); + test(S(""), 1, SV("1234567890"), 9, 2, S("can't happen")); + test(S(""), 1, SV("1234567890"), 10, 0, S("can't happen")); + test(S(""), 1, SV("1234567890"), 10, 1, S("can't happen")); + test(S(""), 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 0, 0, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 0, 1, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 0, 10, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 0, 19, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 0, 20, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 0, 21, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 1, 0, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 1, 1, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 1, 9, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 1, 18, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 1, 19, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 1, 20, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 10, 0, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 10, 1, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 10, 5, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 10, 9, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 10, 10, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 10, 11, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 19, 0, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 19, 1, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 19, 2, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 20, 0, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 20, 1, S("can't happen")); + test(S(""), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 0, SV(""), 0, 1, S("abcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcde"), 0, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 0, SV("12345"), 0, 1, S("1abcde")); - test(S("abcde"), 0, SV("12345"), 0, 2, S("12abcde")); - test(S("abcde"), 0, SV("12345"), 0, 4, S("1234abcde")); - test(S("abcde"), 0, SV("12345"), 0, 5, S("12345abcde")); - test(S("abcde"), 0, SV("12345"), 0, 6, S("12345abcde")); - test(S("abcde"), 0, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 0, SV("12345"), 1, 1, S("2abcde")); - test(S("abcde"), 0, SV("12345"), 1, 2, S("23abcde")); - test(S("abcde"), 0, SV("12345"), 1, 3, S("234abcde")); - test(S("abcde"), 0, SV("12345"), 1, 4, S("2345abcde")); - test(S("abcde"), 0, SV("12345"), 1, 5, S("2345abcde")); - test(S("abcde"), 0, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 0, SV("12345"), 2, 1, S("3abcde")); - test(S("abcde"), 0, SV("12345"), 2, 2, S("34abcde")); - test(S("abcde"), 0, SV("12345"), 2, 3, S("345abcde")); - test(S("abcde"), 0, SV("12345"), 2, 4, S("345abcde")); - test(S("abcde"), 0, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 0, SV("12345"), 4, 1, S("5abcde")); - test(S("abcde"), 0, SV("12345"), 4, 2, S("5abcde")); - test(S("abcde"), 0, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 0, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 0, SV("1234567890"), 0, 1, S("1abcde")); - test(S("abcde"), 0, SV("1234567890"), 0, 5, S("12345abcde")); - test(S("abcde"), 0, SV("1234567890"), 0, 9, S("123456789abcde")); - test(S("abcde"), 0, SV("1234567890"), 0, 10, S("1234567890abcde")); - test(S("abcde"), 0, SV("1234567890"), 0, 11, S("1234567890abcde")); - test(S("abcde"), 0, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 0, SV("1234567890"), 1, 1, S("2abcde")); - test(S("abcde"), 0, SV("1234567890"), 1, 4, S("2345abcde")); - test(S("abcde"), 0, SV("1234567890"), 1, 8, S("23456789abcde")); - test(S("abcde"), 0, SV("1234567890"), 1, 9, S("234567890abcde")); - test(S("abcde"), 0, SV("1234567890"), 1, 10, S("234567890abcde")); - test(S("abcde"), 0, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 0, SV("1234567890"), 5, 1, S("6abcde")); - test(S("abcde"), 0, SV("1234567890"), 5, 2, S("67abcde")); - test(S("abcde"), 0, SV("1234567890"), 5, 4, S("6789abcde")); - test(S("abcde"), 0, SV("1234567890"), 5, 5, S("67890abcde")); - test(S("abcde"), 0, SV("1234567890"), 5, 6, S("67890abcde")); - test(S("abcde"), 0, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 0, SV("1234567890"), 9, 1, S("0abcde")); - test(S("abcde"), 0, SV("1234567890"), 9, 2, S("0abcde")); - test(S("abcde"), 0, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 0, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 0, 1, S("1abcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcde"), 0, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 0, SV("12345"), 0, 1, S("1abcde")); + test(S("abcde"), 0, SV("12345"), 0, 2, S("12abcde")); + test(S("abcde"), 0, SV("12345"), 0, 4, S("1234abcde")); + test(S("abcde"), 0, SV("12345"), 0, 5, S("12345abcde")); + test(S("abcde"), 0, SV("12345"), 0, 6, S("12345abcde")); + test(S("abcde"), 0, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 0, SV("12345"), 1, 1, S("2abcde")); + test(S("abcde"), 0, SV("12345"), 1, 2, S("23abcde")); + test(S("abcde"), 0, SV("12345"), 1, 3, S("234abcde")); + test(S("abcde"), 0, SV("12345"), 1, 4, S("2345abcde")); + test(S("abcde"), 0, SV("12345"), 1, 5, S("2345abcde")); + test(S("abcde"), 0, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 0, SV("12345"), 2, 1, S("3abcde")); + test(S("abcde"), 0, SV("12345"), 2, 2, S("34abcde")); + test(S("abcde"), 0, SV("12345"), 2, 3, S("345abcde")); + test(S("abcde"), 0, SV("12345"), 2, 4, S("345abcde")); + test(S("abcde"), 0, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 0, SV("12345"), 4, 1, S("5abcde")); + test(S("abcde"), 0, SV("12345"), 4, 2, S("5abcde")); + test(S("abcde"), 0, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 0, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 0, SV("1234567890"), 0, 1, S("1abcde")); + test(S("abcde"), 0, SV("1234567890"), 0, 5, S("12345abcde")); + test(S("abcde"), 0, SV("1234567890"), 0, 9, S("123456789abcde")); + test(S("abcde"), 0, SV("1234567890"), 0, 10, S("1234567890abcde")); + test(S("abcde"), 0, SV("1234567890"), 0, 11, S("1234567890abcde")); + test(S("abcde"), 0, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 0, SV("1234567890"), 1, 1, S("2abcde")); + test(S("abcde"), 0, SV("1234567890"), 1, 4, S("2345abcde")); + test(S("abcde"), 0, SV("1234567890"), 1, 8, S("23456789abcde")); + test(S("abcde"), 0, SV("1234567890"), 1, 9, S("234567890abcde")); + test(S("abcde"), 0, SV("1234567890"), 1, 10, S("234567890abcde")); + test(S("abcde"), 0, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 0, SV("1234567890"), 5, 1, S("6abcde")); + test(S("abcde"), 0, SV("1234567890"), 5, 2, S("67abcde")); + test(S("abcde"), 0, SV("1234567890"), 5, 4, S("6789abcde")); + test(S("abcde"), 0, SV("1234567890"), 5, 5, S("67890abcde")); + test(S("abcde"), 0, SV("1234567890"), 5, 6, S("67890abcde")); + test(S("abcde"), 0, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 0, SV("1234567890"), 9, 1, S("0abcde")); + test(S("abcde"), 0, SV("1234567890"), 9, 2, S("0abcde")); + test(S("abcde"), 0, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 0, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 0, 1, S("1abcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcde"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 1, 1, S("2abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 10, 1, S("1abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 10, 5, S("12345abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 19, 1, S("0abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 19, 2, S("0abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 1, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 1, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 1, SV("12345"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, SV("12345"), 0, 2, S("a12bcde")); - test(S("abcde"), 1, SV("12345"), 0, 4, S("a1234bcde")); - test(S("abcde"), 1, SV("12345"), 0, 5, S("a12345bcde")); - test(S("abcde"), 1, SV("12345"), 0, 6, S("a12345bcde")); - test(S("abcde"), 1, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 1, SV("12345"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, SV("12345"), 1, 2, S("a23bcde")); - test(S("abcde"), 1, SV("12345"), 1, 3, S("a234bcde")); - test(S("abcde"), 1, SV("12345"), 1, 4, S("a2345bcde")); - test(S("abcde"), 1, SV("12345"), 1, 5, S("a2345bcde")); - test(S("abcde"), 1, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 1, SV("12345"), 2, 1, S("a3bcde")); - test(S("abcde"), 1, SV("12345"), 2, 2, S("a34bcde")); - test(S("abcde"), 1, SV("12345"), 2, 3, S("a345bcde")); - test(S("abcde"), 1, SV("12345"), 2, 4, S("a345bcde")); - test(S("abcde"), 1, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 1, SV("12345"), 4, 1, S("a5bcde")); - test(S("abcde"), 1, SV("12345"), 4, 2, S("a5bcde")); - test(S("abcde"), 1, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 1, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 1, SV("1234567890"), 0, 1, S("a1bcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcde"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 1, 1, S("2abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 10, 1, S("1abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 10, 5, S("12345abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 19, 1, S("0abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 19, 2, S("0abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 1, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 1, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 1, SV("12345"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, SV("12345"), 0, 2, S("a12bcde")); + test(S("abcde"), 1, SV("12345"), 0, 4, S("a1234bcde")); + test(S("abcde"), 1, SV("12345"), 0, 5, S("a12345bcde")); + test(S("abcde"), 1, SV("12345"), 0, 6, S("a12345bcde")); + test(S("abcde"), 1, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 1, SV("12345"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, SV("12345"), 1, 2, S("a23bcde")); + test(S("abcde"), 1, SV("12345"), 1, 3, S("a234bcde")); + test(S("abcde"), 1, SV("12345"), 1, 4, S("a2345bcde")); + test(S("abcde"), 1, SV("12345"), 1, 5, S("a2345bcde")); + test(S("abcde"), 1, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 1, SV("12345"), 2, 1, S("a3bcde")); + test(S("abcde"), 1, SV("12345"), 2, 2, S("a34bcde")); + test(S("abcde"), 1, SV("12345"), 2, 3, S("a345bcde")); + test(S("abcde"), 1, SV("12345"), 2, 4, S("a345bcde")); + test(S("abcde"), 1, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 1, SV("12345"), 4, 1, S("a5bcde")); + test(S("abcde"), 1, SV("12345"), 4, 2, S("a5bcde")); + test(S("abcde"), 1, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 1, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 1, SV("1234567890"), 0, 1, S("a1bcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcde"), 1, SV("1234567890"), 0, 5, S("a12345bcde")); - test(S("abcde"), 1, SV("1234567890"), 0, 9, S("a123456789bcde")); - test(S("abcde"), 1, SV("1234567890"), 0, 10, S("a1234567890bcde")); - test(S("abcde"), 1, SV("1234567890"), 0, 11, S("a1234567890bcde")); - test(S("abcde"), 1, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 1, SV("1234567890"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, SV("1234567890"), 1, 4, S("a2345bcde")); - test(S("abcde"), 1, SV("1234567890"), 1, 8, S("a23456789bcde")); - test(S("abcde"), 1, SV("1234567890"), 1, 9, S("a234567890bcde")); - test(S("abcde"), 1, SV("1234567890"), 1, 10, S("a234567890bcde")); - test(S("abcde"), 1, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 1, SV("1234567890"), 5, 1, S("a6bcde")); - test(S("abcde"), 1, SV("1234567890"), 5, 2, S("a67bcde")); - test(S("abcde"), 1, SV("1234567890"), 5, 4, S("a6789bcde")); - test(S("abcde"), 1, SV("1234567890"), 5, 5, S("a67890bcde")); - test(S("abcde"), 1, SV("1234567890"), 5, 6, S("a67890bcde")); - test(S("abcde"), 1, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 1, SV("1234567890"), 9, 1, S("a0bcde")); - test(S("abcde"), 1, SV("1234567890"), 9, 2, S("a0bcde")); - test(S("abcde"), 1, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 1, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 10, 1, S("a1bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 19, 1, S("a0bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 19, 2, S("a0bcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 2, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 2, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, SV("12345"), 0, 0, S("abcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcde"), 1, SV("1234567890"), 0, 5, S("a12345bcde")); + test(S("abcde"), 1, SV("1234567890"), 0, 9, S("a123456789bcde")); + test(S("abcde"), 1, SV("1234567890"), 0, 10, S("a1234567890bcde")); + test(S("abcde"), 1, SV("1234567890"), 0, 11, S("a1234567890bcde")); + test(S("abcde"), 1, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 1, SV("1234567890"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, SV("1234567890"), 1, 4, S("a2345bcde")); + test(S("abcde"), 1, SV("1234567890"), 1, 8, S("a23456789bcde")); + test(S("abcde"), 1, SV("1234567890"), 1, 9, S("a234567890bcde")); + test(S("abcde"), 1, SV("1234567890"), 1, 10, S("a234567890bcde")); + test(S("abcde"), 1, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 1, SV("1234567890"), 5, 1, S("a6bcde")); + test(S("abcde"), 1, SV("1234567890"), 5, 2, S("a67bcde")); + test(S("abcde"), 1, SV("1234567890"), 5, 4, S("a6789bcde")); + test(S("abcde"), 1, SV("1234567890"), 5, 5, S("a67890bcde")); + test(S("abcde"), 1, SV("1234567890"), 5, 6, S("a67890bcde")); + test(S("abcde"), 1, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 1, SV("1234567890"), 9, 1, S("a0bcde")); + test(S("abcde"), 1, SV("1234567890"), 9, 2, S("a0bcde")); + test(S("abcde"), 1, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 1, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 10, 1, S("a1bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 19, 1, S("a0bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 19, 2, S("a0bcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 2, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 2, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, SV("12345"), 0, 0, S("abcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcde"), 2, SV("12345"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, SV("12345"), 0, 2, S("ab12cde")); - test(S("abcde"), 2, SV("12345"), 0, 4, S("ab1234cde")); - test(S("abcde"), 2, SV("12345"), 0, 5, S("ab12345cde")); - test(S("abcde"), 2, SV("12345"), 0, 6, S("ab12345cde")); - test(S("abcde"), 2, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 2, SV("12345"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, SV("12345"), 1, 2, S("ab23cde")); - test(S("abcde"), 2, SV("12345"), 1, 3, S("ab234cde")); - test(S("abcde"), 2, SV("12345"), 1, 4, S("ab2345cde")); - test(S("abcde"), 2, SV("12345"), 1, 5, S("ab2345cde")); - test(S("abcde"), 2, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 2, SV("12345"), 2, 1, S("ab3cde")); - test(S("abcde"), 2, SV("12345"), 2, 2, S("ab34cde")); - test(S("abcde"), 2, SV("12345"), 2, 3, S("ab345cde")); - test(S("abcde"), 2, SV("12345"), 2, 4, S("ab345cde")); - test(S("abcde"), 2, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 2, SV("12345"), 4, 1, S("ab5cde")); - test(S("abcde"), 2, SV("12345"), 4, 2, S("ab5cde")); - test(S("abcde"), 2, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 2, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 2, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 2, SV("1234567890"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, SV("1234567890"), 0, 5, S("ab12345cde")); - test(S("abcde"), 2, SV("1234567890"), 0, 9, S("ab123456789cde")); - test(S("abcde"), 2, SV("1234567890"), 0, 10, S("ab1234567890cde")); - test(S("abcde"), 2, SV("1234567890"), 0, 11, S("ab1234567890cde")); - test(S("abcde"), 2, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 2, SV("1234567890"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, SV("1234567890"), 1, 4, S("ab2345cde")); - test(S("abcde"), 2, SV("1234567890"), 1, 8, S("ab23456789cde")); - test(S("abcde"), 2, SV("1234567890"), 1, 9, S("ab234567890cde")); - test(S("abcde"), 2, SV("1234567890"), 1, 10, S("ab234567890cde")); - test(S("abcde"), 2, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 2, SV("1234567890"), 5, 1, S("ab6cde")); - test(S("abcde"), 2, SV("1234567890"), 5, 2, S("ab67cde")); - test(S("abcde"), 2, SV("1234567890"), 5, 4, S("ab6789cde")); - test(S("abcde"), 2, SV("1234567890"), 5, 5, S("ab67890cde")); - test(S("abcde"), 2, SV("1234567890"), 5, 6, S("ab67890cde")); - test(S("abcde"), 2, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 2, SV("1234567890"), 9, 1, S("ab0cde")); - test(S("abcde"), 2, SV("1234567890"), 9, 2, S("ab0cde")); - test(S("abcde"), 2, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 2, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 2, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 2, SV("12345678901234567890"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 0, 10, S("ab1234567890cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcde"), 2, SV("12345"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, SV("12345"), 0, 2, S("ab12cde")); + test(S("abcde"), 2, SV("12345"), 0, 4, S("ab1234cde")); + test(S("abcde"), 2, SV("12345"), 0, 5, S("ab12345cde")); + test(S("abcde"), 2, SV("12345"), 0, 6, S("ab12345cde")); + test(S("abcde"), 2, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 2, SV("12345"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, SV("12345"), 1, 2, S("ab23cde")); + test(S("abcde"), 2, SV("12345"), 1, 3, S("ab234cde")); + test(S("abcde"), 2, SV("12345"), 1, 4, S("ab2345cde")); + test(S("abcde"), 2, SV("12345"), 1, 5, S("ab2345cde")); + test(S("abcde"), 2, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 2, SV("12345"), 2, 1, S("ab3cde")); + test(S("abcde"), 2, SV("12345"), 2, 2, S("ab34cde")); + test(S("abcde"), 2, SV("12345"), 2, 3, S("ab345cde")); + test(S("abcde"), 2, SV("12345"), 2, 4, S("ab345cde")); + test(S("abcde"), 2, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 2, SV("12345"), 4, 1, S("ab5cde")); + test(S("abcde"), 2, SV("12345"), 4, 2, S("ab5cde")); + test(S("abcde"), 2, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 2, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 2, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 2, SV("1234567890"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, SV("1234567890"), 0, 5, S("ab12345cde")); + test(S("abcde"), 2, SV("1234567890"), 0, 9, S("ab123456789cde")); + test(S("abcde"), 2, SV("1234567890"), 0, 10, S("ab1234567890cde")); + test(S("abcde"), 2, SV("1234567890"), 0, 11, S("ab1234567890cde")); + test(S("abcde"), 2, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 2, SV("1234567890"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, SV("1234567890"), 1, 4, S("ab2345cde")); + test(S("abcde"), 2, SV("1234567890"), 1, 8, S("ab23456789cde")); + test(S("abcde"), 2, SV("1234567890"), 1, 9, S("ab234567890cde")); + test(S("abcde"), 2, SV("1234567890"), 1, 10, S("ab234567890cde")); + test(S("abcde"), 2, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 2, SV("1234567890"), 5, 1, S("ab6cde")); + test(S("abcde"), 2, SV("1234567890"), 5, 2, S("ab67cde")); + test(S("abcde"), 2, SV("1234567890"), 5, 4, S("ab6789cde")); + test(S("abcde"), 2, SV("1234567890"), 5, 5, S("ab67890cde")); + test(S("abcde"), 2, SV("1234567890"), 5, 6, S("ab67890cde")); + test(S("abcde"), 2, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 2, SV("1234567890"), 9, 1, S("ab0cde")); + test(S("abcde"), 2, SV("1234567890"), 9, 2, S("ab0cde")); + test(S("abcde"), 2, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 2, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 2, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 2, SV("12345678901234567890"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 0, 10, S("ab1234567890cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcde"), 2, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 2, SV("12345678901234567890"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 1, 9, S("ab234567890cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 2, SV("12345678901234567890"), 10, 1, S("ab1cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 10, 5, S("ab12345cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 10, 9, S("ab123456789cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 10, 10, S("ab1234567890cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 10, 11, S("ab1234567890cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 2, SV("12345678901234567890"), 19, 1, S("ab0cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 19, 2, S("ab0cde")); - test(S("abcde"), 2, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 2, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 2, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 4, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 4, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 4, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 4, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 4, SV("12345"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, SV("12345"), 0, 2, S("abcd12e")); - test(S("abcde"), 4, SV("12345"), 0, 4, S("abcd1234e")); - test(S("abcde"), 4, SV("12345"), 0, 5, S("abcd12345e")); - test(S("abcde"), 4, SV("12345"), 0, 6, S("abcd12345e")); - test(S("abcde"), 4, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 4, SV("12345"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, SV("12345"), 1, 2, S("abcd23e")); - test(S("abcde"), 4, SV("12345"), 1, 3, S("abcd234e")); - test(S("abcde"), 4, SV("12345"), 1, 4, S("abcd2345e")); - test(S("abcde"), 4, SV("12345"), 1, 5, S("abcd2345e")); - test(S("abcde"), 4, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 4, SV("12345"), 2, 1, S("abcd3e")); - test(S("abcde"), 4, SV("12345"), 2, 2, S("abcd34e")); - test(S("abcde"), 4, SV("12345"), 2, 3, S("abcd345e")); - test(S("abcde"), 4, SV("12345"), 2, 4, S("abcd345e")); - test(S("abcde"), 4, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 4, SV("12345"), 4, 1, S("abcd5e")); - test(S("abcde"), 4, SV("12345"), 4, 2, S("abcd5e")); - test(S("abcde"), 4, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 4, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 4, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 4, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 4, SV("1234567890"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, SV("1234567890"), 0, 5, S("abcd12345e")); - test(S("abcde"), 4, SV("1234567890"), 0, 9, S("abcd123456789e")); - - return true; +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcde"), 2, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 2, SV("12345678901234567890"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 1, 9, S("ab234567890cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 2, SV("12345678901234567890"), 10, 1, S("ab1cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 10, 5, S("ab12345cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 10, 9, S("ab123456789cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 10, 10, S("ab1234567890cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 10, 11, S("ab1234567890cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 2, SV("12345678901234567890"), 19, 1, S("ab0cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 19, 2, S("ab0cde")); + test(S("abcde"), 2, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 2, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 2, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 4, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 4, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 4, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 4, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 4, SV("12345"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, SV("12345"), 0, 2, S("abcd12e")); + test(S("abcde"), 4, SV("12345"), 0, 4, S("abcd1234e")); + test(S("abcde"), 4, SV("12345"), 0, 5, S("abcd12345e")); + test(S("abcde"), 4, SV("12345"), 0, 6, S("abcd12345e")); + test(S("abcde"), 4, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 4, SV("12345"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, SV("12345"), 1, 2, S("abcd23e")); + test(S("abcde"), 4, SV("12345"), 1, 3, S("abcd234e")); + test(S("abcde"), 4, SV("12345"), 1, 4, S("abcd2345e")); + test(S("abcde"), 4, SV("12345"), 1, 5, S("abcd2345e")); + test(S("abcde"), 4, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 4, SV("12345"), 2, 1, S("abcd3e")); + test(S("abcde"), 4, SV("12345"), 2, 2, S("abcd34e")); + test(S("abcde"), 4, SV("12345"), 2, 3, S("abcd345e")); + test(S("abcde"), 4, SV("12345"), 2, 4, S("abcd345e")); + test(S("abcde"), 4, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 4, SV("12345"), 4, 1, S("abcd5e")); + test(S("abcde"), 4, SV("12345"), 4, 2, S("abcd5e")); + test(S("abcde"), 4, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 4, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 4, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 4, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 4, SV("1234567890"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, SV("1234567890"), 0, 5, S("abcd12345e")); + test(S("abcde"), 4, SV("1234567890"), 0, 9, S("abcd123456789e")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcde"), 4, SV("1234567890"), 0, 10, S("abcd1234567890e")); - test(S("abcde"), 4, SV("1234567890"), 0, 11, S("abcd1234567890e")); - test(S("abcde"), 4, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 4, SV("1234567890"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, SV("1234567890"), 1, 4, S("abcd2345e")); - test(S("abcde"), 4, SV("1234567890"), 1, 8, S("abcd23456789e")); - test(S("abcde"), 4, SV("1234567890"), 1, 9, S("abcd234567890e")); - test(S("abcde"), 4, SV("1234567890"), 1, 10, S("abcd234567890e")); - test(S("abcde"), 4, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 4, SV("1234567890"), 5, 1, S("abcd6e")); - test(S("abcde"), 4, SV("1234567890"), 5, 2, S("abcd67e")); - test(S("abcde"), 4, SV("1234567890"), 5, 4, S("abcd6789e")); - test(S("abcde"), 4, SV("1234567890"), 5, 5, S("abcd67890e")); - test(S("abcde"), 4, SV("1234567890"), 5, 6, S("abcd67890e")); - test(S("abcde"), 4, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 4, SV("1234567890"), 9, 1, S("abcd0e")); - test(S("abcde"), 4, SV("1234567890"), 9, 2, S("abcd0e")); - test(S("abcde"), 4, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 4, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 4, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 4, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 4, SV("12345678901234567890"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, SV("12345678901234567890"), 0, 10, S("abcd1234567890e")); - test(S("abcde"), 4, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); - test(S("abcde"), 4, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); - test(S("abcde"), 4, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); - test(S("abcde"), 4, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 4, SV("12345678901234567890"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, SV("12345678901234567890"), 1, 9, S("abcd234567890e")); - test(S("abcde"), 4, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); - test(S("abcde"), 4, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); - test(S("abcde"), 4, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); - test(S("abcde"), 4, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 4, SV("12345678901234567890"), 10, 1, S("abcd1e")); - test(S("abcde"), 4, SV("12345678901234567890"), 10, 5, S("abcd12345e")); - test(S("abcde"), 4, SV("12345678901234567890"), 10, 9, S("abcd123456789e")); - test(S("abcde"), 4, SV("12345678901234567890"), 10, 10, S("abcd1234567890e")); - test(S("abcde"), 4, SV("12345678901234567890"), 10, 11, S("abcd1234567890e")); - test(S("abcde"), 4, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 4, SV("12345678901234567890"), 19, 1, S("abcd0e")); - test(S("abcde"), 4, SV("12345678901234567890"), 19, 2, S("abcd0e")); - test(S("abcde"), 4, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 4, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 4, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 5, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 5, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 5, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 5, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 5, SV("12345"), 0, 1, S("abcde1")); - test(S("abcde"), 5, SV("12345"), 0, 2, S("abcde12")); - - return true; +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcde"), 4, SV("1234567890"), 0, 10, S("abcd1234567890e")); + test(S("abcde"), 4, SV("1234567890"), 0, 11, S("abcd1234567890e")); + test(S("abcde"), 4, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 4, SV("1234567890"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, SV("1234567890"), 1, 4, S("abcd2345e")); + test(S("abcde"), 4, SV("1234567890"), 1, 8, S("abcd23456789e")); + test(S("abcde"), 4, SV("1234567890"), 1, 9, S("abcd234567890e")); + test(S("abcde"), 4, SV("1234567890"), 1, 10, S("abcd234567890e")); + test(S("abcde"), 4, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 4, SV("1234567890"), 5, 1, S("abcd6e")); + test(S("abcde"), 4, SV("1234567890"), 5, 2, S("abcd67e")); + test(S("abcde"), 4, SV("1234567890"), 5, 4, S("abcd6789e")); + test(S("abcde"), 4, SV("1234567890"), 5, 5, S("abcd67890e")); + test(S("abcde"), 4, SV("1234567890"), 5, 6, S("abcd67890e")); + test(S("abcde"), 4, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 4, SV("1234567890"), 9, 1, S("abcd0e")); + test(S("abcde"), 4, SV("1234567890"), 9, 2, S("abcd0e")); + test(S("abcde"), 4, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 4, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 4, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 4, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 4, SV("12345678901234567890"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, SV("12345678901234567890"), 0, 10, S("abcd1234567890e")); + test(S("abcde"), 4, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); + test(S("abcde"), 4, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); + test(S("abcde"), 4, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); + test(S("abcde"), 4, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 4, SV("12345678901234567890"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, SV("12345678901234567890"), 1, 9, S("abcd234567890e")); + test(S("abcde"), 4, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); + test(S("abcde"), 4, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); + test(S("abcde"), 4, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); + test(S("abcde"), 4, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 4, SV("12345678901234567890"), 10, 1, S("abcd1e")); + test(S("abcde"), 4, SV("12345678901234567890"), 10, 5, S("abcd12345e")); + test(S("abcde"), 4, SV("12345678901234567890"), 10, 9, S("abcd123456789e")); + test(S("abcde"), 4, SV("12345678901234567890"), 10, 10, S("abcd1234567890e")); + test(S("abcde"), 4, SV("12345678901234567890"), 10, 11, S("abcd1234567890e")); + test(S("abcde"), 4, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 4, SV("12345678901234567890"), 19, 1, S("abcd0e")); + test(S("abcde"), 4, SV("12345678901234567890"), 19, 2, S("abcd0e")); + test(S("abcde"), 4, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 4, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 4, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 5, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 5, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 5, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 5, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 5, SV("12345"), 0, 1, S("abcde1")); + test(S("abcde"), 5, SV("12345"), 0, 2, S("abcde12")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test9() -{ - test(S("abcde"), 5, SV("12345"), 0, 4, S("abcde1234")); - test(S("abcde"), 5, SV("12345"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, SV("12345"), 0, 6, S("abcde12345")); - test(S("abcde"), 5, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 5, SV("12345"), 1, 1, S("abcde2")); - test(S("abcde"), 5, SV("12345"), 1, 2, S("abcde23")); - test(S("abcde"), 5, SV("12345"), 1, 3, S("abcde234")); - test(S("abcde"), 5, SV("12345"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, SV("12345"), 1, 5, S("abcde2345")); - test(S("abcde"), 5, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 5, SV("12345"), 2, 1, S("abcde3")); - test(S("abcde"), 5, SV("12345"), 2, 2, S("abcde34")); - test(S("abcde"), 5, SV("12345"), 2, 3, S("abcde345")); - test(S("abcde"), 5, SV("12345"), 2, 4, S("abcde345")); - test(S("abcde"), 5, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 5, SV("12345"), 4, 1, S("abcde5")); - test(S("abcde"), 5, SV("12345"), 4, 2, S("abcde5")); - test(S("abcde"), 5, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 5, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 5, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 5, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, SV("1234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, SV("1234567890"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, SV("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcde"), 5, SV("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, SV("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcde"), 5, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, SV("1234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, SV("1234567890"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, SV("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcde"), 5, SV("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, SV("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcde"), 5, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 5, SV("1234567890"), 5, 1, S("abcde6")); - test(S("abcde"), 5, SV("1234567890"), 5, 2, S("abcde67")); - test(S("abcde"), 5, SV("1234567890"), 5, 4, S("abcde6789")); - test(S("abcde"), 5, SV("1234567890"), 5, 5, S("abcde67890")); - test(S("abcde"), 5, SV("1234567890"), 5, 6, S("abcde67890")); - test(S("abcde"), 5, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 5, SV("1234567890"), 9, 1, S("abcde0")); - test(S("abcde"), 5, SV("1234567890"), 9, 2, S("abcde0")); - test(S("abcde"), 5, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 5, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 5, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, SV("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcde"), 5, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test9() { + test(S("abcde"), 5, SV("12345"), 0, 4, S("abcde1234")); + test(S("abcde"), 5, SV("12345"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, SV("12345"), 0, 6, S("abcde12345")); + test(S("abcde"), 5, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 5, SV("12345"), 1, 1, S("abcde2")); + test(S("abcde"), 5, SV("12345"), 1, 2, S("abcde23")); + test(S("abcde"), 5, SV("12345"), 1, 3, S("abcde234")); + test(S("abcde"), 5, SV("12345"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, SV("12345"), 1, 5, S("abcde2345")); + test(S("abcde"), 5, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 5, SV("12345"), 2, 1, S("abcde3")); + test(S("abcde"), 5, SV("12345"), 2, 2, S("abcde34")); + test(S("abcde"), 5, SV("12345"), 2, 3, S("abcde345")); + test(S("abcde"), 5, SV("12345"), 2, 4, S("abcde345")); + test(S("abcde"), 5, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 5, SV("12345"), 4, 1, S("abcde5")); + test(S("abcde"), 5, SV("12345"), 4, 2, S("abcde5")); + test(S("abcde"), 5, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 5, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 5, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 5, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, SV("1234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, SV("1234567890"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, SV("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcde"), 5, SV("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, SV("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcde"), 5, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, SV("1234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, SV("1234567890"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, SV("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcde"), 5, SV("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, SV("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcde"), 5, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 5, SV("1234567890"), 5, 1, S("abcde6")); + test(S("abcde"), 5, SV("1234567890"), 5, 2, S("abcde67")); + test(S("abcde"), 5, SV("1234567890"), 5, 4, S("abcde6789")); + test(S("abcde"), 5, SV("1234567890"), 5, 5, S("abcde67890")); + test(S("abcde"), 5, SV("1234567890"), 5, 6, S("abcde67890")); + test(S("abcde"), 5, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 5, SV("1234567890"), 9, 1, S("abcde0")); + test(S("abcde"), 5, SV("1234567890"), 9, 2, S("abcde0")); + test(S("abcde"), 5, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 5, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 5, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, SV("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcde"), 5, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test10() -{ - test(S("abcde"), 5, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, SV("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, SV("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcde"), 5, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcde"), 5, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcde"), 5, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, SV("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcde"), 5, SV("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcde"), 5, SV("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcde"), 5, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcde"), 5, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcde"), 5, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 5, SV("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcde"), 5, SV("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcde"), 5, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 5, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 5, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 6, SV(""), 0, 0, S("can't happen")); - test(S("abcde"), 6, SV(""), 0, 1, S("can't happen")); - test(S("abcde"), 6, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 0, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 0, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 0, 2, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 0, 4, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 0, 5, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 0, 6, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 1, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 1, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 1, 2, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 1, 3, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 1, 4, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 1, 5, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 2, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 2, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 2, 2, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 2, 3, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 2, 4, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 4, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 4, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 4, 2, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 5, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 5, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 0, 0, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 0, 1, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 0, 5, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 0, 9, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 0, 10, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 0, 11, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test10() { + test(S("abcde"), 5, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, SV("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, SV("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcde"), 5, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcde"), 5, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcde"), 5, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, SV("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcde"), 5, SV("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcde"), 5, SV("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcde"), 5, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcde"), 5, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcde"), 5, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 5, SV("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcde"), 5, SV("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcde"), 5, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 5, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 5, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 6, SV(""), 0, 0, S("can't happen")); + test(S("abcde"), 6, SV(""), 0, 1, S("can't happen")); + test(S("abcde"), 6, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 0, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 0, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 0, 2, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 0, 4, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 0, 5, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 0, 6, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 1, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 1, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 1, 2, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 1, 3, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 1, 4, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 1, 5, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 2, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 2, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 2, 2, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 2, 3, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 2, 4, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 4, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 4, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 4, 2, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 5, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 5, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 0, 0, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 0, 1, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 0, 5, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 0, 9, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 0, 10, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 0, 11, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test11() -{ - test(S("abcde"), 6, SV("1234567890"), 1, 0, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 1, 1, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 1, 4, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 1, 8, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 1, 9, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 1, 10, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 5, 0, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 5, 1, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 5, 2, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 5, 4, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 5, 5, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 5, 6, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 9, 0, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 9, 1, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 9, 2, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 10, 0, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 10, 1, S("can't happen")); - test(S("abcde"), 6, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcde"), 6, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 0, 2, S("12abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 0, 4, S("1234abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 0, 5, S("12345abcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test11() { + test(S("abcde"), 6, SV("1234567890"), 1, 0, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 1, 1, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 1, 4, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 1, 8, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 1, 9, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 1, 10, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 5, 0, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 5, 1, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 5, 2, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 5, 4, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 5, 5, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 5, 6, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 9, 0, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 9, 1, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 9, 2, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 10, 0, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 10, 1, S("can't happen")); + test(S("abcde"), 6, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcde"), 6, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 0, 2, S("12abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 0, 4, S("1234abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 0, 5, S("12345abcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test12() -{ - test(S("abcdefghij"), 0, SV("12345"), 0, 6, S("12345abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 1, 2, S("23abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 1, 3, S("234abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 1, 4, S("2345abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 1, 5, S("2345abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 2, 1, S("3abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 2, 2, S("34abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 2, 3, S("345abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 2, 4, S("345abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 4, 1, S("5abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 4, 2, S("5abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 0, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 0, 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 0, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 0, 11, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 1, 4, S("2345abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 1, 8, S("23456789abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 1, 9, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 1, 10, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 5, 1, S("6abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 5, 2, S("67abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 5, 4, S("6789abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 5, 5, S("67890abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 5, 6, S("67890abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 9, 1, S("0abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 9, 2, S("0abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 1, S("2abcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test12() { + test(S("abcdefghij"), 0, SV("12345"), 0, 6, S("12345abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 1, 2, S("23abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 1, 3, S("234abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 1, 4, S("2345abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 1, 5, S("2345abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 2, 1, S("3abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 2, 2, S("34abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 2, 3, S("345abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 2, 4, S("345abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 4, 1, S("5abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 4, 2, S("5abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 0, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 0, 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 0, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 0, 11, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 1, 4, S("2345abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 1, 8, S("23456789abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 1, 9, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 1, 10, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 5, 1, S("6abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 5, 2, S("67abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 5, 4, S("6789abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 5, 5, S("67890abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 5, 6, S("67890abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 9, 1, S("0abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 9, 2, S("0abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 1, S("2abcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test13() -{ - test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 1, S("0abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 2, S("0abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 0, 2, S("a12bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 0, 4, S("a1234bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 0, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 0, 6, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 1, 2, S("a23bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 1, 3, S("a234bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 1, 4, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 1, 5, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 2, 1, S("a3bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 2, 2, S("a34bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 2, 3, S("a345bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 2, 4, S("a345bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 4, 1, S("a5bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 4, 2, S("a5bcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 0, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 0, 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 0, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 0, 11, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 1, 1, S("a2bcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test13() { + test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 1, S("0abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 19, 2, S("0abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 0, 2, S("a12bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 0, 4, S("a1234bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 0, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 0, 6, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 1, 2, S("a23bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 1, 3, S("a234bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 1, 4, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 1, 5, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 2, 1, S("a3bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 2, 2, S("a34bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 2, 3, S("a345bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 2, 4, S("a345bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 4, 1, S("a5bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 4, 2, S("a5bcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 0, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 0, 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 0, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 0, 11, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 1, 1, S("a2bcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test14() -{ - test(S("abcdefghij"), 1, SV("1234567890"), 1, 4, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 1, 8, S("a23456789bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 1, 9, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 1, 10, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 5, 1, S("a6bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 5, 2, S("a67bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 5, 4, S("a6789bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 5, 5, S("a67890bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 5, 6, S("a67890bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 9, 1, S("a0bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 9, 2, S("a0bcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 1, S("a0bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 2, S("a0bcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, SV("12345"), 0, 2, S("abcde12fghij")); - test(S("abcdefghij"), 5, SV("12345"), 0, 4, S("abcde1234fghij")); - test(S("abcdefghij"), 5, SV("12345"), 0, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, SV("12345"), 0, 6, S("abcde12345fghij")); - test(S("abcdefghij"), 5, SV("12345"), 1, 0, S("abcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test14() { + test(S("abcdefghij"), 1, SV("1234567890"), 1, 4, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 1, 8, S("a23456789bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 1, 9, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 1, 10, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 5, 1, S("a6bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 5, 2, S("a67bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 5, 4, S("a6789bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 5, 5, S("a67890bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 5, 6, S("a67890bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 9, 1, S("a0bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 9, 2, S("a0bcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 1, S("a0bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 19, 2, S("a0bcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, SV("12345"), 0, 2, S("abcde12fghij")); + test(S("abcdefghij"), 5, SV("12345"), 0, 4, S("abcde1234fghij")); + test(S("abcdefghij"), 5, SV("12345"), 0, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, SV("12345"), 0, 6, S("abcde12345fghij")); + test(S("abcdefghij"), 5, SV("12345"), 1, 0, S("abcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test15() -{ - test(S("abcdefghij"), 5, SV("12345"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, SV("12345"), 1, 2, S("abcde23fghij")); - test(S("abcdefghij"), 5, SV("12345"), 1, 3, S("abcde234fghij")); - test(S("abcdefghij"), 5, SV("12345"), 1, 4, S("abcde2345fghij")); - test(S("abcdefghij"), 5, SV("12345"), 1, 5, S("abcde2345fghij")); - test(S("abcdefghij"), 5, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345"), 2, 1, S("abcde3fghij")); - test(S("abcdefghij"), 5, SV("12345"), 2, 2, S("abcde34fghij")); - test(S("abcdefghij"), 5, SV("12345"), 2, 3, S("abcde345fghij")); - test(S("abcdefghij"), 5, SV("12345"), 2, 4, S("abcde345fghij")); - test(S("abcdefghij"), 5, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345"), 4, 1, S("abcde5fghij")); - test(S("abcdefghij"), 5, SV("12345"), 4, 2, S("abcde5fghij")); - test(S("abcdefghij"), 5, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 0, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 0, 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 0, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 0, 11, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 1, 4, S("abcde2345fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 1, 8, S("abcde23456789fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 1, 9, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 1, 10, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 5, 1, S("abcde6fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 5, 2, S("abcde67fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 5, 4, S("abcde6789fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 5, 5, S("abcde67890fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 5, 6, S("abcde67890fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 9, 1, S("abcde0fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 9, 2, S("abcde0fghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 9, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test15() { + test(S("abcdefghij"), 5, SV("12345"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, SV("12345"), 1, 2, S("abcde23fghij")); + test(S("abcdefghij"), 5, SV("12345"), 1, 3, S("abcde234fghij")); + test(S("abcdefghij"), 5, SV("12345"), 1, 4, S("abcde2345fghij")); + test(S("abcdefghij"), 5, SV("12345"), 1, 5, S("abcde2345fghij")); + test(S("abcdefghij"), 5, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345"), 2, 1, S("abcde3fghij")); + test(S("abcdefghij"), 5, SV("12345"), 2, 2, S("abcde34fghij")); + test(S("abcdefghij"), 5, SV("12345"), 2, 3, S("abcde345fghij")); + test(S("abcdefghij"), 5, SV("12345"), 2, 4, S("abcde345fghij")); + test(S("abcdefghij"), 5, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345"), 4, 1, S("abcde5fghij")); + test(S("abcdefghij"), 5, SV("12345"), 4, 2, S("abcde5fghij")); + test(S("abcdefghij"), 5, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 0, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 0, 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 0, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 0, 11, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 1, 4, S("abcde2345fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 1, 8, S("abcde23456789fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 1, 9, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 1, 10, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 5, 1, S("abcde6fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 5, 2, S("abcde67fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 5, 4, S("abcde6789fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 5, 5, S("abcde67890fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 5, 6, S("abcde67890fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 9, 1, S("abcde0fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 9, 2, S("abcde0fghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 9, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test16() -{ - test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 1, S("abcde0fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 2, S("abcde0fghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 9, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 9, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, SV("12345"), 0, 2, S("abcdefghi12j")); - test(S("abcdefghij"), 9, SV("12345"), 0, 4, S("abcdefghi1234j")); - test(S("abcdefghij"), 9, SV("12345"), 0, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, SV("12345"), 0, 6, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, SV("12345"), 1, 2, S("abcdefghi23j")); - test(S("abcdefghij"), 9, SV("12345"), 1, 3, S("abcdefghi234j")); - test(S("abcdefghij"), 9, SV("12345"), 1, 4, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, SV("12345"), 1, 5, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345"), 2, 1, S("abcdefghi3j")); - test(S("abcdefghij"), 9, SV("12345"), 2, 2, S("abcdefghi34j")); - test(S("abcdefghij"), 9, SV("12345"), 2, 3, S("abcdefghi345j")); - test(S("abcdefghij"), 9, SV("12345"), 2, 4, S("abcdefghi345j")); - test(S("abcdefghij"), 9, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345"), 4, 1, S("abcdefghi5j")); - test(S("abcdefghij"), 9, SV("12345"), 4, 2, S("abcdefghi5j")); - test(S("abcdefghij"), 9, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 9, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("1234567890"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, SV("1234567890"), 0, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, SV("1234567890"), 0, 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, SV("1234567890"), 0, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, SV("1234567890"), 0, 11, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("1234567890"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, SV("1234567890"), 1, 4, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, SV("1234567890"), 1, 8, S("abcdefghi23456789j")); - - return true; +TEST_CONSTEXPR_CXX20 bool test16() { + test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 1, S("abcde0fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 19, 2, S("abcde0fghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 9, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 9, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, SV("12345"), 0, 2, S("abcdefghi12j")); + test(S("abcdefghij"), 9, SV("12345"), 0, 4, S("abcdefghi1234j")); + test(S("abcdefghij"), 9, SV("12345"), 0, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, SV("12345"), 0, 6, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, SV("12345"), 1, 2, S("abcdefghi23j")); + test(S("abcdefghij"), 9, SV("12345"), 1, 3, S("abcdefghi234j")); + test(S("abcdefghij"), 9, SV("12345"), 1, 4, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, SV("12345"), 1, 5, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345"), 2, 1, S("abcdefghi3j")); + test(S("abcdefghij"), 9, SV("12345"), 2, 2, S("abcdefghi34j")); + test(S("abcdefghij"), 9, SV("12345"), 2, 3, S("abcdefghi345j")); + test(S("abcdefghij"), 9, SV("12345"), 2, 4, S("abcdefghi345j")); + test(S("abcdefghij"), 9, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345"), 4, 1, S("abcdefghi5j")); + test(S("abcdefghij"), 9, SV("12345"), 4, 2, S("abcdefghi5j")); + test(S("abcdefghij"), 9, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 9, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("1234567890"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, SV("1234567890"), 0, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, SV("1234567890"), 0, 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, SV("1234567890"), 0, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, SV("1234567890"), 0, 11, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("1234567890"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, SV("1234567890"), 1, 4, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, SV("1234567890"), 1, 8, S("abcdefghi23456789j")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test17() -{ - test(S("abcdefghij"), 9, SV("1234567890"), 1, 9, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, SV("1234567890"), 1, 10, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("1234567890"), 5, 1, S("abcdefghi6j")); - test(S("abcdefghij"), 9, SV("1234567890"), 5, 2, S("abcdefghi67j")); - test(S("abcdefghij"), 9, SV("1234567890"), 5, 4, S("abcdefghi6789j")); - test(S("abcdefghij"), 9, SV("1234567890"), 5, 5, S("abcdefghi67890j")); - test(S("abcdefghij"), 9, SV("1234567890"), 5, 6, S("abcdefghi67890j")); - test(S("abcdefghij"), 9, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("1234567890"), 9, 1, S("abcdefghi0j")); - test(S("abcdefghij"), 9, SV("1234567890"), 9, 2, S("abcdefghi0j")); - test(S("abcdefghij"), 9, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 1, S("abcdefghi0j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 2, S("abcdefghi0j")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 10, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 10, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, SV("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, SV("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, SV("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, SV("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghij"), 10, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, SV("12345"), 1, 2, S("abcdefghij23")); - - return true; +TEST_CONSTEXPR_CXX20 bool test17() { + test(S("abcdefghij"), 9, SV("1234567890"), 1, 9, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, SV("1234567890"), 1, 10, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("1234567890"), 5, 1, S("abcdefghi6j")); + test(S("abcdefghij"), 9, SV("1234567890"), 5, 2, S("abcdefghi67j")); + test(S("abcdefghij"), 9, SV("1234567890"), 5, 4, S("abcdefghi6789j")); + test(S("abcdefghij"), 9, SV("1234567890"), 5, 5, S("abcdefghi67890j")); + test(S("abcdefghij"), 9, SV("1234567890"), 5, 6, S("abcdefghi67890j")); + test(S("abcdefghij"), 9, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("1234567890"), 9, 1, S("abcdefghi0j")); + test(S("abcdefghij"), 9, SV("1234567890"), 9, 2, S("abcdefghi0j")); + test(S("abcdefghij"), 9, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 1, S("abcdefghi0j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 19, 2, S("abcdefghi0j")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 10, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 10, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, SV("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, SV("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, SV("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, SV("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghij"), 10, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, SV("12345"), 1, 2, S("abcdefghij23")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test18() -{ - test(S("abcdefghij"), 10, SV("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghij"), 10, SV("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, SV("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghij"), 10, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghij"), 10, SV("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghij"), 10, SV("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghij"), 10, SV("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghij"), 10, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345"), 4, 1, S("abcdefghij5")); - test(S("abcdefghij"), 10, SV("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghij"), 10, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 10, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, SV("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, SV("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, SV("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, SV("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghij"), 10, SV("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, SV("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghij"), 10, SV("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghij"), 10, SV("1234567890"), 5, 4, S("abcdefghij6789")); - test(S("abcdefghij"), 10, SV("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghij"), 10, SV("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghij"), 10, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, SV("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test18() { + test(S("abcdefghij"), 10, SV("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghij"), 10, SV("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, SV("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghij"), 10, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghij"), 10, SV("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghij"), 10, SV("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghij"), 10, SV("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghij"), 10, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345"), 4, 1, S("abcdefghij5")); + test(S("abcdefghij"), 10, SV("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghij"), 10, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 10, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, SV("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, SV("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, SV("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, SV("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghij"), 10, SV("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, SV("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghij"), 10, SV("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghij"), 10, SV("1234567890"), 5, 4, S("abcdefghij6789")); + test(S("abcdefghij"), 10, SV("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghij"), 10, SV("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghij"), 10, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, SV("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test19() -{ - test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV(""), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV(""), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 0, 2, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 0, 4, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 0, 5, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 0, 6, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 1, 2, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 1, 3, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 1, 4, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 1, 5, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 2, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 2, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 2, 2, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 2, 3, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 2, 4, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 4, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 4, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 4, 2, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 5, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 5, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 0, 5, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 0, 9, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 0, 10, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 0, 11, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 1, 4, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 1, 8, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 1, 9, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 1, 10, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test19() { + test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV(""), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV(""), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 0, 2, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 0, 4, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 0, 5, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 0, 6, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 1, 2, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 1, 3, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 1, 4, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 1, 5, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 2, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 2, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 2, 2, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 2, 3, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 2, 4, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 4, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 4, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 4, 2, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 5, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 5, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 0, 5, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 0, 9, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 0, 10, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 0, 11, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 1, 4, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 1, 8, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 1, 9, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 1, 10, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test20() -{ - test(S("abcdefghij"), 11, SV("1234567890"), 5, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 5, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 5, 2, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 5, 4, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 5, 5, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 5, 6, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 9, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 9, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 9, 2, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 10, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 10, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcdefghij"), 11, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 2, S("12abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 2, S("23abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 3, S("234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test20() { + test(S("abcdefghij"), 11, SV("1234567890"), 5, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 5, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 5, 2, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 5, 4, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 5, 5, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 5, 6, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 9, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 9, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 9, 2, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 10, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 10, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcdefghij"), 11, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 2, S("12abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 2, S("23abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 3, S("234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test21() -{ - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 1, S("3abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 2, S("34abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 3, S("345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 4, S("345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 1, S("5abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 2, S("5abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test21() { + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 1, S("3abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 2, S("34abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 3, S("345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 2, 4, S("345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 1, S("5abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 4, 2, S("5abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test22() -{ - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test22() { + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test23() -{ - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 2, S("abcdefghij12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 2, S("abcdefghij23klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 3, S("abcdefghij234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test23() { + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 2, S("abcdefghij12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 2, S("abcdefghij23klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 3, S("abcdefghij234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test24() -{ - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 1, S("abcdefghij3klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 2, S("abcdefghij34klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 3, S("abcdefghij345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 4, S("abcdefghij345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 1, S("abcdefghij5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 2, S("abcdefghij5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test24() { + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 1, S("abcdefghij3klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 2, S("abcdefghij34klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 3, S("abcdefghij345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 2, 4, S("abcdefghij345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 1, S("abcdefghij5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 4, 2, S("abcdefghij5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test25() -{ - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); - - return true; +TEST_CONSTEXPR_CXX20 bool test25() { + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test26() -{ - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 2, S("abcdefghijklmnopqrst23")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 3, S("abcdefghijklmnopqrst234")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 1, S("abcdefghijklmnopqrst3")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 2, S("abcdefghijklmnopqrst34")); - - return true; +TEST_CONSTEXPR_CXX20 bool test26() { + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 2, S("abcdefghijklmnopqrst23")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 3, S("abcdefghijklmnopqrst234")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 1, S("abcdefghijklmnopqrst3")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 2, S("abcdefghijklmnopqrst34")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test27() -{ - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 3, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 4, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 1, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 2, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test27() { + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 3, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 2, 4, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 1, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 4, 2, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test28() -{ - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV(""), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV(""), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 6, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 3, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 3, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 5, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 5, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 11, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 8, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 6, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test28() { + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV(""), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV(""), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 0, 6, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 3, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 1, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 3, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 2, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 4, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 5, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 5, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 0, 11, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 8, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 1, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 5, 6, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test29() -{ - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 10, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 10, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 21, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test29() { + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 9, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 10, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 10, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, SV("12345678901234567890"), 21, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test30() -{ - test_npos(S(""), 0, SV("12345678901234567890"), 0, S("12345678901234567890")); - test_npos(S(""), 0, SV("12345678901234567890"), 1, S( "2345678901234567890")); - test_npos(S(""), 0, SV("12345678901234567890"), 2, S( "345678901234567890")); - test_npos(S(""), 0, SV("12345678901234567890"), 3, S( "45678901234567890")); - test_npos(S(""), 0, SV("12345678901234567890"), 5, S( "678901234567890")); - test_npos(S(""), 0, SV("12345678901234567890"), 10, S( "1234567890")); - test_npos(S(""), 0, SV("12345678901234567890"), 21, S("can't happen")); - test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, S("abcdefghij12345klmnopqrst")); - test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, S("abcdefghij2345klmnopqrst")); - test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 3, S("abcdefghij45klmnopqrst")); - test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, S("abcdefghijklmnopqrst")); - test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 6, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test30() { + test_npos(S(""), 0, SV("12345678901234567890"), 0, S("12345678901234567890")); + test_npos(S(""), 0, SV("12345678901234567890"), 1, S("2345678901234567890")); + test_npos(S(""), 0, SV("12345678901234567890"), 2, S("345678901234567890")); + test_npos(S(""), 0, SV("12345678901234567890"), 3, S("45678901234567890")); + test_npos(S(""), 0, SV("12345678901234567890"), 5, S("678901234567890")); + test_npos(S(""), 0, SV("12345678901234567890"), 10, S("1234567890")); + test_npos(S(""), 0, SV("12345678901234567890"), 21, S("can't happen")); + test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 0, S("abcdefghij12345klmnopqrst")); + test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 1, S("abcdefghij2345klmnopqrst")); + test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 3, S("abcdefghij45klmnopqrst")); + test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 5, S("abcdefghijklmnopqrst")); + test_npos(S("abcdefghijklmnopqrst"), 10, SV("12345"), 6, S("can't happen")); + + return true; } template TEST_CONSTEXPR_CXX20 bool test31() { - S s; - SV sv = "EFGH"; - char arr[] = "IJKL"; + S s; + SV sv = "EFGH"; + char arr[] = "IJKL"; - s.insert(0, "CDEF", 0); // calls insert(const char *, len) - assert(s == ""); - s.clear(); + s.insert(0, "CDEF", 0); // calls insert(const char *, len) + assert(s == ""); + s.clear(); - s.insert(0, "QRST", 0, std::string::npos); // calls insert(string("QRST"), pos, npos) - assert(s == "QRST"); - s.clear(); + s.insert(0, "QRST", 0, std::string::npos); // calls insert(string("QRST"), pos, npos) + assert(s == "QRST"); + s.clear(); - s.insert(0, sv, 0); // calls insert(T, pos, npos) - assert(s == sv); - s.clear(); + s.insert(0, sv, 0); // calls insert(T, pos, npos) + assert(s == sv); + s.clear(); - s.insert(0, sv, 0, std::string::npos); // calls insert(T, pos, npos) - assert(s == sv); - s.clear(); + s.insert(0, sv, 0, std::string::npos); // calls insert(T, pos, npos) + assert(s == sv); + s.clear(); - s.insert(0, arr, 0); // calls insert(const char *, len) - assert(s == ""); - s.clear(); + s.insert(0, arr, 0); // calls insert(const char *, len) + assert(s == ""); + s.clear(); - s.insert(0, arr, 0, std::string::npos); // calls insert(string("IJKL"), pos, npos) - assert(s == "IJKL"); - s.clear(); + s.insert(0, arr, 0, std::string::npos); // calls insert(string("IJKL"), pos, npos) + assert(s == "IJKL"); + s.clear(); - s.insert(0, arr, 0); // calls insert(const char *, len) - assert(s == ""); - s.clear(); + s.insert(0, arr, 0); // calls insert(const char *, len) + assert(s == ""); + s.clear(); - return true; + return true; } template @@ -1899,8 +1853,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>, diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer.pass.cpp @@ -19,31 +19,24 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, const typename S::value_type* str, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.insert(pos, str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos, const typename S::value_type* str, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.insert(pos, str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos, str); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } @@ -156,8 +149,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_pointer_size.pass.cpp @@ -20,31 +20,24 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, const typename S::value_type* str, - typename S::size_type n, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.insert(pos, str, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +test(S s, typename S::size_type pos, const typename S::value_type* str, typename S::size_type n, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.insert(pos, str, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos, str, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos, str, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } @@ -391,8 +384,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_size_char.pass.cpp @@ -20,31 +20,24 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, typename S::size_type n, - typename S::value_type str, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.insert(pos, n, str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +test(S s, typename S::size_type pos, typename S::size_type n, typename S::value_type str, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.insert(pos, n, str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos, n, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos, n, str); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } @@ -141,8 +134,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string.pass.cpp @@ -19,31 +19,24 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, S str, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.insert(pos, str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos, S str, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.insert(pos, str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos, str); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } @@ -138,7 +131,7 @@ #endif #if TEST_STD_VER >= 11 - { // LWG 2946 + { // LWG 2946 std::string s; s.insert(0, {"abc", 1}); assert(s.size() == 1); @@ -149,8 +142,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/size_string_size_size.pass.cpp @@ -22,1771 +22,1725 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, S str, typename S::size_type pos2, - typename S::size_type n, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos1 <= old_size && pos2 <= str.size()) - { - s.insert(pos1, str, pos2, n); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +test(S s, typename S::size_type pos1, S str, typename S::size_type pos2, typename S::size_type n, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos1 <= old_size && pos2 <= str.size()) { + s.insert(pos1, str, pos2, n); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos1, str, pos2, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size || pos2 > str.size()); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos1, str, pos2, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size || pos2 > str.size()); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test_npos(S s, typename S::size_type pos1, S str, typename S::size_type pos2, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos1 <= old_size && pos2 <= str.size()) - { - s.insert(pos1, str, pos2); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test_npos(S s, typename S::size_type pos1, S str, typename S::size_type pos2, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos1 <= old_size && pos2 <= str.size()) { + s.insert(pos1, str, pos2); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos1, str, pos2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size || pos2 > str.size()); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos1, str, pos2); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size || pos2 > str.size()); + assert(s == s0); } + } #endif } - template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, S(""), 0, 0, S("")); - test(S(""), 0, S(""), 0, 1, S("")); - test(S(""), 0, S(""), 1, 0, S("can't happen")); - test(S(""), 0, S("12345"), 0, 0, S("")); - test(S(""), 0, S("12345"), 0, 1, S("1")); - test(S(""), 0, S("12345"), 0, 2, S("12")); - test(S(""), 0, S("12345"), 0, 4, S("1234")); - test(S(""), 0, S("12345"), 0, 5, S("12345")); - test(S(""), 0, S("12345"), 0, 6, S("12345")); - test(S(""), 0, S("12345"), 1, 0, S("")); - test(S(""), 0, S("12345"), 1, 1, S("2")); - test(S(""), 0, S("12345"), 1, 2, S("23")); - test(S(""), 0, S("12345"), 1, 3, S("234")); - test(S(""), 0, S("12345"), 1, 4, S("2345")); - test(S(""), 0, S("12345"), 1, 5, S("2345")); - test(S(""), 0, S("12345"), 2, 0, S("")); - test(S(""), 0, S("12345"), 2, 1, S("3")); - test(S(""), 0, S("12345"), 2, 2, S("34")); - test(S(""), 0, S("12345"), 2, 3, S("345")); - test(S(""), 0, S("12345"), 2, 4, S("345")); - test(S(""), 0, S("12345"), 4, 0, S("")); - test(S(""), 0, S("12345"), 4, 1, S("5")); - test(S(""), 0, S("12345"), 4, 2, S("5")); - test(S(""), 0, S("12345"), 5, 0, S("")); - test(S(""), 0, S("12345"), 5, 1, S("")); - test(S(""), 0, S("12345"), 6, 0, S("can't happen")); - test(S(""), 0, S("1234567890"), 0, 0, S("")); - test(S(""), 0, S("1234567890"), 0, 1, S("1")); - test(S(""), 0, S("1234567890"), 0, 5, S("12345")); - test(S(""), 0, S("1234567890"), 0, 9, S("123456789")); - test(S(""), 0, S("1234567890"), 0, 10, S("1234567890")); - test(S(""), 0, S("1234567890"), 0, 11, S("1234567890")); - test(S(""), 0, S("1234567890"), 1, 0, S("")); - test(S(""), 0, S("1234567890"), 1, 1, S("2")); - test(S(""), 0, S("1234567890"), 1, 4, S("2345")); - test(S(""), 0, S("1234567890"), 1, 8, S("23456789")); - test(S(""), 0, S("1234567890"), 1, 9, S("234567890")); - test(S(""), 0, S("1234567890"), 1, 10, S("234567890")); - test(S(""), 0, S("1234567890"), 5, 0, S("")); - test(S(""), 0, S("1234567890"), 5, 1, S("6")); - test(S(""), 0, S("1234567890"), 5, 2, S("67")); - test(S(""), 0, S("1234567890"), 5, 4, S("6789")); - test(S(""), 0, S("1234567890"), 5, 5, S("67890")); - test(S(""), 0, S("1234567890"), 5, 6, S("67890")); - test(S(""), 0, S("1234567890"), 9, 0, S("")); - test(S(""), 0, S("1234567890"), 9, 1, S("0")); - test(S(""), 0, S("1234567890"), 9, 2, S("0")); - test(S(""), 0, S("1234567890"), 10, 0, S("")); - test(S(""), 0, S("1234567890"), 10, 1, S("")); - test(S(""), 0, S("1234567890"), 11, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, S(""), 0, 0, S("")); + test(S(""), 0, S(""), 0, 1, S("")); + test(S(""), 0, S(""), 1, 0, S("can't happen")); + test(S(""), 0, S("12345"), 0, 0, S("")); + test(S(""), 0, S("12345"), 0, 1, S("1")); + test(S(""), 0, S("12345"), 0, 2, S("12")); + test(S(""), 0, S("12345"), 0, 4, S("1234")); + test(S(""), 0, S("12345"), 0, 5, S("12345")); + test(S(""), 0, S("12345"), 0, 6, S("12345")); + test(S(""), 0, S("12345"), 1, 0, S("")); + test(S(""), 0, S("12345"), 1, 1, S("2")); + test(S(""), 0, S("12345"), 1, 2, S("23")); + test(S(""), 0, S("12345"), 1, 3, S("234")); + test(S(""), 0, S("12345"), 1, 4, S("2345")); + test(S(""), 0, S("12345"), 1, 5, S("2345")); + test(S(""), 0, S("12345"), 2, 0, S("")); + test(S(""), 0, S("12345"), 2, 1, S("3")); + test(S(""), 0, S("12345"), 2, 2, S("34")); + test(S(""), 0, S("12345"), 2, 3, S("345")); + test(S(""), 0, S("12345"), 2, 4, S("345")); + test(S(""), 0, S("12345"), 4, 0, S("")); + test(S(""), 0, S("12345"), 4, 1, S("5")); + test(S(""), 0, S("12345"), 4, 2, S("5")); + test(S(""), 0, S("12345"), 5, 0, S("")); + test(S(""), 0, S("12345"), 5, 1, S("")); + test(S(""), 0, S("12345"), 6, 0, S("can't happen")); + test(S(""), 0, S("1234567890"), 0, 0, S("")); + test(S(""), 0, S("1234567890"), 0, 1, S("1")); + test(S(""), 0, S("1234567890"), 0, 5, S("12345")); + test(S(""), 0, S("1234567890"), 0, 9, S("123456789")); + test(S(""), 0, S("1234567890"), 0, 10, S("1234567890")); + test(S(""), 0, S("1234567890"), 0, 11, S("1234567890")); + test(S(""), 0, S("1234567890"), 1, 0, S("")); + test(S(""), 0, S("1234567890"), 1, 1, S("2")); + test(S(""), 0, S("1234567890"), 1, 4, S("2345")); + test(S(""), 0, S("1234567890"), 1, 8, S("23456789")); + test(S(""), 0, S("1234567890"), 1, 9, S("234567890")); + test(S(""), 0, S("1234567890"), 1, 10, S("234567890")); + test(S(""), 0, S("1234567890"), 5, 0, S("")); + test(S(""), 0, S("1234567890"), 5, 1, S("6")); + test(S(""), 0, S("1234567890"), 5, 2, S("67")); + test(S(""), 0, S("1234567890"), 5, 4, S("6789")); + test(S(""), 0, S("1234567890"), 5, 5, S("67890")); + test(S(""), 0, S("1234567890"), 5, 6, S("67890")); + test(S(""), 0, S("1234567890"), 9, 0, S("")); + test(S(""), 0, S("1234567890"), 9, 1, S("0")); + test(S(""), 0, S("1234567890"), 9, 2, S("0")); + test(S(""), 0, S("1234567890"), 10, 0, S("")); + test(S(""), 0, S("1234567890"), 10, 1, S("")); + test(S(""), 0, S("1234567890"), 11, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S(""), 0, S("12345678901234567890"), 0, 0, S("")); - test(S(""), 0, S("12345678901234567890"), 0, 1, S("1")); - test(S(""), 0, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S(""), 0, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S(""), 0, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S(""), 0, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S(""), 0, S("12345678901234567890"), 1, 0, S("")); - test(S(""), 0, S("12345678901234567890"), 1, 1, S("2")); - test(S(""), 0, S("12345678901234567890"), 1, 9, S("234567890")); - test(S(""), 0, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S(""), 0, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S(""), 0, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S(""), 0, S("12345678901234567890"), 10, 0, S("")); - test(S(""), 0, S("12345678901234567890"), 10, 1, S("1")); - test(S(""), 0, S("12345678901234567890"), 10, 5, S("12345")); - test(S(""), 0, S("12345678901234567890"), 10, 9, S("123456789")); - test(S(""), 0, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S(""), 0, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S(""), 0, S("12345678901234567890"), 19, 0, S("")); - test(S(""), 0, S("12345678901234567890"), 19, 1, S("0")); - test(S(""), 0, S("12345678901234567890"), 19, 2, S("0")); - test(S(""), 0, S("12345678901234567890"), 20, 0, S("")); - test(S(""), 0, S("12345678901234567890"), 20, 1, S("")); - test(S(""), 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S(""), 1, S(""), 0, 0, S("can't happen")); - test(S(""), 1, S(""), 0, 1, S("can't happen")); - test(S(""), 1, S(""), 1, 0, S("can't happen")); - test(S(""), 1, S("12345"), 0, 0, S("can't happen")); - test(S(""), 1, S("12345"), 0, 1, S("can't happen")); - test(S(""), 1, S("12345"), 0, 2, S("can't happen")); - test(S(""), 1, S("12345"), 0, 4, S("can't happen")); - test(S(""), 1, S("12345"), 0, 5, S("can't happen")); - test(S(""), 1, S("12345"), 0, 6, S("can't happen")); - test(S(""), 1, S("12345"), 1, 0, S("can't happen")); - test(S(""), 1, S("12345"), 1, 1, S("can't happen")); - test(S(""), 1, S("12345"), 1, 2, S("can't happen")); - test(S(""), 1, S("12345"), 1, 3, S("can't happen")); - test(S(""), 1, S("12345"), 1, 4, S("can't happen")); - test(S(""), 1, S("12345"), 1, 5, S("can't happen")); - test(S(""), 1, S("12345"), 2, 0, S("can't happen")); - test(S(""), 1, S("12345"), 2, 1, S("can't happen")); - test(S(""), 1, S("12345"), 2, 2, S("can't happen")); - test(S(""), 1, S("12345"), 2, 3, S("can't happen")); - test(S(""), 1, S("12345"), 2, 4, S("can't happen")); - test(S(""), 1, S("12345"), 4, 0, S("can't happen")); - test(S(""), 1, S("12345"), 4, 1, S("can't happen")); - test(S(""), 1, S("12345"), 4, 2, S("can't happen")); - test(S(""), 1, S("12345"), 5, 0, S("can't happen")); - test(S(""), 1, S("12345"), 5, 1, S("can't happen")); - test(S(""), 1, S("12345"), 6, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test1() { + test(S(""), 0, S("12345678901234567890"), 0, 0, S("")); + test(S(""), 0, S("12345678901234567890"), 0, 1, S("1")); + test(S(""), 0, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S(""), 0, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S(""), 0, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S(""), 0, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S(""), 0, S("12345678901234567890"), 1, 0, S("")); + test(S(""), 0, S("12345678901234567890"), 1, 1, S("2")); + test(S(""), 0, S("12345678901234567890"), 1, 9, S("234567890")); + test(S(""), 0, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S(""), 0, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S(""), 0, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S(""), 0, S("12345678901234567890"), 10, 0, S("")); + test(S(""), 0, S("12345678901234567890"), 10, 1, S("1")); + test(S(""), 0, S("12345678901234567890"), 10, 5, S("12345")); + test(S(""), 0, S("12345678901234567890"), 10, 9, S("123456789")); + test(S(""), 0, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S(""), 0, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S(""), 0, S("12345678901234567890"), 19, 0, S("")); + test(S(""), 0, S("12345678901234567890"), 19, 1, S("0")); + test(S(""), 0, S("12345678901234567890"), 19, 2, S("0")); + test(S(""), 0, S("12345678901234567890"), 20, 0, S("")); + test(S(""), 0, S("12345678901234567890"), 20, 1, S("")); + test(S(""), 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S(""), 1, S(""), 0, 0, S("can't happen")); + test(S(""), 1, S(""), 0, 1, S("can't happen")); + test(S(""), 1, S(""), 1, 0, S("can't happen")); + test(S(""), 1, S("12345"), 0, 0, S("can't happen")); + test(S(""), 1, S("12345"), 0, 1, S("can't happen")); + test(S(""), 1, S("12345"), 0, 2, S("can't happen")); + test(S(""), 1, S("12345"), 0, 4, S("can't happen")); + test(S(""), 1, S("12345"), 0, 5, S("can't happen")); + test(S(""), 1, S("12345"), 0, 6, S("can't happen")); + test(S(""), 1, S("12345"), 1, 0, S("can't happen")); + test(S(""), 1, S("12345"), 1, 1, S("can't happen")); + test(S(""), 1, S("12345"), 1, 2, S("can't happen")); + test(S(""), 1, S("12345"), 1, 3, S("can't happen")); + test(S(""), 1, S("12345"), 1, 4, S("can't happen")); + test(S(""), 1, S("12345"), 1, 5, S("can't happen")); + test(S(""), 1, S("12345"), 2, 0, S("can't happen")); + test(S(""), 1, S("12345"), 2, 1, S("can't happen")); + test(S(""), 1, S("12345"), 2, 2, S("can't happen")); + test(S(""), 1, S("12345"), 2, 3, S("can't happen")); + test(S(""), 1, S("12345"), 2, 4, S("can't happen")); + test(S(""), 1, S("12345"), 4, 0, S("can't happen")); + test(S(""), 1, S("12345"), 4, 1, S("can't happen")); + test(S(""), 1, S("12345"), 4, 2, S("can't happen")); + test(S(""), 1, S("12345"), 5, 0, S("can't happen")); + test(S(""), 1, S("12345"), 5, 1, S("can't happen")); + test(S(""), 1, S("12345"), 6, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S(""), 1, S("1234567890"), 0, 0, S("can't happen")); - test(S(""), 1, S("1234567890"), 0, 1, S("can't happen")); - test(S(""), 1, S("1234567890"), 0, 5, S("can't happen")); - test(S(""), 1, S("1234567890"), 0, 9, S("can't happen")); - test(S(""), 1, S("1234567890"), 0, 10, S("can't happen")); - test(S(""), 1, S("1234567890"), 0, 11, S("can't happen")); - test(S(""), 1, S("1234567890"), 1, 0, S("can't happen")); - test(S(""), 1, S("1234567890"), 1, 1, S("can't happen")); - test(S(""), 1, S("1234567890"), 1, 4, S("can't happen")); - test(S(""), 1, S("1234567890"), 1, 8, S("can't happen")); - test(S(""), 1, S("1234567890"), 1, 9, S("can't happen")); - test(S(""), 1, S("1234567890"), 1, 10, S("can't happen")); - test(S(""), 1, S("1234567890"), 5, 0, S("can't happen")); - test(S(""), 1, S("1234567890"), 5, 1, S("can't happen")); - test(S(""), 1, S("1234567890"), 5, 2, S("can't happen")); - test(S(""), 1, S("1234567890"), 5, 4, S("can't happen")); - test(S(""), 1, S("1234567890"), 5, 5, S("can't happen")); - test(S(""), 1, S("1234567890"), 5, 6, S("can't happen")); - test(S(""), 1, S("1234567890"), 9, 0, S("can't happen")); - test(S(""), 1, S("1234567890"), 9, 1, S("can't happen")); - test(S(""), 1, S("1234567890"), 9, 2, S("can't happen")); - test(S(""), 1, S("1234567890"), 10, 0, S("can't happen")); - test(S(""), 1, S("1234567890"), 10, 1, S("can't happen")); - test(S(""), 1, S("1234567890"), 11, 0, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 0, 0, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 0, 1, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 0, 10, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 0, 19, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 0, 20, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 0, 21, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 1, 0, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 1, 1, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 1, 9, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 1, 18, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 1, 19, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 1, 20, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 10, 0, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 10, 1, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 10, 5, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 10, 9, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 10, 10, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 10, 11, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 19, 0, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 19, 1, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 19, 2, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 20, 0, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 20, 1, S("can't happen")); - test(S(""), 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, S(""), 0, 0, S("abcde")); - test(S("abcde"), 0, S(""), 0, 1, S("abcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test2() { + test(S(""), 1, S("1234567890"), 0, 0, S("can't happen")); + test(S(""), 1, S("1234567890"), 0, 1, S("can't happen")); + test(S(""), 1, S("1234567890"), 0, 5, S("can't happen")); + test(S(""), 1, S("1234567890"), 0, 9, S("can't happen")); + test(S(""), 1, S("1234567890"), 0, 10, S("can't happen")); + test(S(""), 1, S("1234567890"), 0, 11, S("can't happen")); + test(S(""), 1, S("1234567890"), 1, 0, S("can't happen")); + test(S(""), 1, S("1234567890"), 1, 1, S("can't happen")); + test(S(""), 1, S("1234567890"), 1, 4, S("can't happen")); + test(S(""), 1, S("1234567890"), 1, 8, S("can't happen")); + test(S(""), 1, S("1234567890"), 1, 9, S("can't happen")); + test(S(""), 1, S("1234567890"), 1, 10, S("can't happen")); + test(S(""), 1, S("1234567890"), 5, 0, S("can't happen")); + test(S(""), 1, S("1234567890"), 5, 1, S("can't happen")); + test(S(""), 1, S("1234567890"), 5, 2, S("can't happen")); + test(S(""), 1, S("1234567890"), 5, 4, S("can't happen")); + test(S(""), 1, S("1234567890"), 5, 5, S("can't happen")); + test(S(""), 1, S("1234567890"), 5, 6, S("can't happen")); + test(S(""), 1, S("1234567890"), 9, 0, S("can't happen")); + test(S(""), 1, S("1234567890"), 9, 1, S("can't happen")); + test(S(""), 1, S("1234567890"), 9, 2, S("can't happen")); + test(S(""), 1, S("1234567890"), 10, 0, S("can't happen")); + test(S(""), 1, S("1234567890"), 10, 1, S("can't happen")); + test(S(""), 1, S("1234567890"), 11, 0, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 0, 0, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 0, 1, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 0, 10, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 0, 19, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 0, 20, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 0, 21, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 1, 0, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 1, 1, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 1, 9, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 1, 18, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 1, 19, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 1, 20, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 10, 0, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 10, 1, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 10, 5, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 10, 9, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 10, 10, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 10, 11, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 19, 0, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 19, 1, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 19, 2, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 20, 0, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 20, 1, S("can't happen")); + test(S(""), 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, S(""), 0, 0, S("abcde")); + test(S("abcde"), 0, S(""), 0, 1, S("abcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcde"), 0, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 0, S("12345"), 0, 1, S("1abcde")); - test(S("abcde"), 0, S("12345"), 0, 2, S("12abcde")); - test(S("abcde"), 0, S("12345"), 0, 4, S("1234abcde")); - test(S("abcde"), 0, S("12345"), 0, 5, S("12345abcde")); - test(S("abcde"), 0, S("12345"), 0, 6, S("12345abcde")); - test(S("abcde"), 0, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 0, S("12345"), 1, 1, S("2abcde")); - test(S("abcde"), 0, S("12345"), 1, 2, S("23abcde")); - test(S("abcde"), 0, S("12345"), 1, 3, S("234abcde")); - test(S("abcde"), 0, S("12345"), 1, 4, S("2345abcde")); - test(S("abcde"), 0, S("12345"), 1, 5, S("2345abcde")); - test(S("abcde"), 0, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 0, S("12345"), 2, 1, S("3abcde")); - test(S("abcde"), 0, S("12345"), 2, 2, S("34abcde")); - test(S("abcde"), 0, S("12345"), 2, 3, S("345abcde")); - test(S("abcde"), 0, S("12345"), 2, 4, S("345abcde")); - test(S("abcde"), 0, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 0, S("12345"), 4, 1, S("5abcde")); - test(S("abcde"), 0, S("12345"), 4, 2, S("5abcde")); - test(S("abcde"), 0, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 0, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 0, S("1234567890"), 0, 1, S("1abcde")); - test(S("abcde"), 0, S("1234567890"), 0, 5, S("12345abcde")); - test(S("abcde"), 0, S("1234567890"), 0, 9, S("123456789abcde")); - test(S("abcde"), 0, S("1234567890"), 0, 10, S("1234567890abcde")); - test(S("abcde"), 0, S("1234567890"), 0, 11, S("1234567890abcde")); - test(S("abcde"), 0, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 0, S("1234567890"), 1, 1, S("2abcde")); - test(S("abcde"), 0, S("1234567890"), 1, 4, S("2345abcde")); - test(S("abcde"), 0, S("1234567890"), 1, 8, S("23456789abcde")); - test(S("abcde"), 0, S("1234567890"), 1, 9, S("234567890abcde")); - test(S("abcde"), 0, S("1234567890"), 1, 10, S("234567890abcde")); - test(S("abcde"), 0, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 0, S("1234567890"), 5, 1, S("6abcde")); - test(S("abcde"), 0, S("1234567890"), 5, 2, S("67abcde")); - test(S("abcde"), 0, S("1234567890"), 5, 4, S("6789abcde")); - test(S("abcde"), 0, S("1234567890"), 5, 5, S("67890abcde")); - test(S("abcde"), 0, S("1234567890"), 5, 6, S("67890abcde")); - test(S("abcde"), 0, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 0, S("1234567890"), 9, 1, S("0abcde")); - test(S("abcde"), 0, S("1234567890"), 9, 2, S("0abcde")); - test(S("abcde"), 0, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 0, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 0, 1, S("1abcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcde"), 0, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 0, S("12345"), 0, 1, S("1abcde")); + test(S("abcde"), 0, S("12345"), 0, 2, S("12abcde")); + test(S("abcde"), 0, S("12345"), 0, 4, S("1234abcde")); + test(S("abcde"), 0, S("12345"), 0, 5, S("12345abcde")); + test(S("abcde"), 0, S("12345"), 0, 6, S("12345abcde")); + test(S("abcde"), 0, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 0, S("12345"), 1, 1, S("2abcde")); + test(S("abcde"), 0, S("12345"), 1, 2, S("23abcde")); + test(S("abcde"), 0, S("12345"), 1, 3, S("234abcde")); + test(S("abcde"), 0, S("12345"), 1, 4, S("2345abcde")); + test(S("abcde"), 0, S("12345"), 1, 5, S("2345abcde")); + test(S("abcde"), 0, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 0, S("12345"), 2, 1, S("3abcde")); + test(S("abcde"), 0, S("12345"), 2, 2, S("34abcde")); + test(S("abcde"), 0, S("12345"), 2, 3, S("345abcde")); + test(S("abcde"), 0, S("12345"), 2, 4, S("345abcde")); + test(S("abcde"), 0, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 0, S("12345"), 4, 1, S("5abcde")); + test(S("abcde"), 0, S("12345"), 4, 2, S("5abcde")); + test(S("abcde"), 0, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 0, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 0, S("1234567890"), 0, 1, S("1abcde")); + test(S("abcde"), 0, S("1234567890"), 0, 5, S("12345abcde")); + test(S("abcde"), 0, S("1234567890"), 0, 9, S("123456789abcde")); + test(S("abcde"), 0, S("1234567890"), 0, 10, S("1234567890abcde")); + test(S("abcde"), 0, S("1234567890"), 0, 11, S("1234567890abcde")); + test(S("abcde"), 0, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 0, S("1234567890"), 1, 1, S("2abcde")); + test(S("abcde"), 0, S("1234567890"), 1, 4, S("2345abcde")); + test(S("abcde"), 0, S("1234567890"), 1, 8, S("23456789abcde")); + test(S("abcde"), 0, S("1234567890"), 1, 9, S("234567890abcde")); + test(S("abcde"), 0, S("1234567890"), 1, 10, S("234567890abcde")); + test(S("abcde"), 0, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 0, S("1234567890"), 5, 1, S("6abcde")); + test(S("abcde"), 0, S("1234567890"), 5, 2, S("67abcde")); + test(S("abcde"), 0, S("1234567890"), 5, 4, S("6789abcde")); + test(S("abcde"), 0, S("1234567890"), 5, 5, S("67890abcde")); + test(S("abcde"), 0, S("1234567890"), 5, 6, S("67890abcde")); + test(S("abcde"), 0, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 0, S("1234567890"), 9, 1, S("0abcde")); + test(S("abcde"), 0, S("1234567890"), 9, 2, S("0abcde")); + test(S("abcde"), 0, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 0, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 0, 1, S("1abcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcde"), 0, S("12345678901234567890"), 0, 10, S("1234567890abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 1, 1, S("2abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 1, 9, S("234567890abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 10, 1, S("1abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 10, 5, S("12345abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 10, 9, S("123456789abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 10, 10, S("1234567890abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 10, 11, S("1234567890abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 19, 1, S("0abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 19, 2, S("0abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, S(""), 0, 0, S("abcde")); - test(S("abcde"), 1, S(""), 0, 1, S("abcde")); - test(S("abcde"), 1, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 1, S("12345"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, S("12345"), 0, 2, S("a12bcde")); - test(S("abcde"), 1, S("12345"), 0, 4, S("a1234bcde")); - test(S("abcde"), 1, S("12345"), 0, 5, S("a12345bcde")); - test(S("abcde"), 1, S("12345"), 0, 6, S("a12345bcde")); - test(S("abcde"), 1, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 1, S("12345"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, S("12345"), 1, 2, S("a23bcde")); - test(S("abcde"), 1, S("12345"), 1, 3, S("a234bcde")); - test(S("abcde"), 1, S("12345"), 1, 4, S("a2345bcde")); - test(S("abcde"), 1, S("12345"), 1, 5, S("a2345bcde")); - test(S("abcde"), 1, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 1, S("12345"), 2, 1, S("a3bcde")); - test(S("abcde"), 1, S("12345"), 2, 2, S("a34bcde")); - test(S("abcde"), 1, S("12345"), 2, 3, S("a345bcde")); - test(S("abcde"), 1, S("12345"), 2, 4, S("a345bcde")); - test(S("abcde"), 1, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 1, S("12345"), 4, 1, S("a5bcde")); - test(S("abcde"), 1, S("12345"), 4, 2, S("a5bcde")); - test(S("abcde"), 1, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 1, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 1, S("1234567890"), 0, 1, S("a1bcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcde"), 0, S("12345678901234567890"), 0, 10, S("1234567890abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 1, 1, S("2abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 1, 9, S("234567890abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 10, 1, S("1abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 10, 5, S("12345abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 10, 9, S("123456789abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 10, 10, S("1234567890abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 10, 11, S("1234567890abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 19, 1, S("0abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 19, 2, S("0abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, S(""), 0, 0, S("abcde")); + test(S("abcde"), 1, S(""), 0, 1, S("abcde")); + test(S("abcde"), 1, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 1, S("12345"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, S("12345"), 0, 2, S("a12bcde")); + test(S("abcde"), 1, S("12345"), 0, 4, S("a1234bcde")); + test(S("abcde"), 1, S("12345"), 0, 5, S("a12345bcde")); + test(S("abcde"), 1, S("12345"), 0, 6, S("a12345bcde")); + test(S("abcde"), 1, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 1, S("12345"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, S("12345"), 1, 2, S("a23bcde")); + test(S("abcde"), 1, S("12345"), 1, 3, S("a234bcde")); + test(S("abcde"), 1, S("12345"), 1, 4, S("a2345bcde")); + test(S("abcde"), 1, S("12345"), 1, 5, S("a2345bcde")); + test(S("abcde"), 1, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 1, S("12345"), 2, 1, S("a3bcde")); + test(S("abcde"), 1, S("12345"), 2, 2, S("a34bcde")); + test(S("abcde"), 1, S("12345"), 2, 3, S("a345bcde")); + test(S("abcde"), 1, S("12345"), 2, 4, S("a345bcde")); + test(S("abcde"), 1, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 1, S("12345"), 4, 1, S("a5bcde")); + test(S("abcde"), 1, S("12345"), 4, 2, S("a5bcde")); + test(S("abcde"), 1, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 1, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 1, S("1234567890"), 0, 1, S("a1bcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcde"), 1, S("1234567890"), 0, 5, S("a12345bcde")); - test(S("abcde"), 1, S("1234567890"), 0, 9, S("a123456789bcde")); - test(S("abcde"), 1, S("1234567890"), 0, 10, S("a1234567890bcde")); - test(S("abcde"), 1, S("1234567890"), 0, 11, S("a1234567890bcde")); - test(S("abcde"), 1, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 1, S("1234567890"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, S("1234567890"), 1, 4, S("a2345bcde")); - test(S("abcde"), 1, S("1234567890"), 1, 8, S("a23456789bcde")); - test(S("abcde"), 1, S("1234567890"), 1, 9, S("a234567890bcde")); - test(S("abcde"), 1, S("1234567890"), 1, 10, S("a234567890bcde")); - test(S("abcde"), 1, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 1, S("1234567890"), 5, 1, S("a6bcde")); - test(S("abcde"), 1, S("1234567890"), 5, 2, S("a67bcde")); - test(S("abcde"), 1, S("1234567890"), 5, 4, S("a6789bcde")); - test(S("abcde"), 1, S("1234567890"), 5, 5, S("a67890bcde")); - test(S("abcde"), 1, S("1234567890"), 5, 6, S("a67890bcde")); - test(S("abcde"), 1, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 1, S("1234567890"), 9, 1, S("a0bcde")); - test(S("abcde"), 1, S("1234567890"), 9, 2, S("a0bcde")); - test(S("abcde"), 1, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 1, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 1, S("12345678901234567890"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 0, 10, S("a1234567890bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 1, S("12345678901234567890"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 1, 9, S("a234567890bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 1, S("12345678901234567890"), 10, 1, S("a1bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 10, 5, S("a12345bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 10, 9, S("a123456789bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 10, 10, S("a1234567890bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 10, 11, S("a1234567890bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 1, S("12345678901234567890"), 19, 1, S("a0bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 19, 2, S("a0bcde")); - test(S("abcde"), 1, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 1, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, S(""), 0, 0, S("abcde")); - test(S("abcde"), 2, S(""), 0, 1, S("abcde")); - test(S("abcde"), 2, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, S("12345"), 0, 0, S("abcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcde"), 1, S("1234567890"), 0, 5, S("a12345bcde")); + test(S("abcde"), 1, S("1234567890"), 0, 9, S("a123456789bcde")); + test(S("abcde"), 1, S("1234567890"), 0, 10, S("a1234567890bcde")); + test(S("abcde"), 1, S("1234567890"), 0, 11, S("a1234567890bcde")); + test(S("abcde"), 1, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 1, S("1234567890"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, S("1234567890"), 1, 4, S("a2345bcde")); + test(S("abcde"), 1, S("1234567890"), 1, 8, S("a23456789bcde")); + test(S("abcde"), 1, S("1234567890"), 1, 9, S("a234567890bcde")); + test(S("abcde"), 1, S("1234567890"), 1, 10, S("a234567890bcde")); + test(S("abcde"), 1, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 1, S("1234567890"), 5, 1, S("a6bcde")); + test(S("abcde"), 1, S("1234567890"), 5, 2, S("a67bcde")); + test(S("abcde"), 1, S("1234567890"), 5, 4, S("a6789bcde")); + test(S("abcde"), 1, S("1234567890"), 5, 5, S("a67890bcde")); + test(S("abcde"), 1, S("1234567890"), 5, 6, S("a67890bcde")); + test(S("abcde"), 1, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 1, S("1234567890"), 9, 1, S("a0bcde")); + test(S("abcde"), 1, S("1234567890"), 9, 2, S("a0bcde")); + test(S("abcde"), 1, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 1, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 1, S("12345678901234567890"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 0, 10, S("a1234567890bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 1, S("12345678901234567890"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 1, 9, S("a234567890bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 1, S("12345678901234567890"), 10, 1, S("a1bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 10, 5, S("a12345bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 10, 9, S("a123456789bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 10, 10, S("a1234567890bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 10, 11, S("a1234567890bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 1, S("12345678901234567890"), 19, 1, S("a0bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 19, 2, S("a0bcde")); + test(S("abcde"), 1, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 1, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, S(""), 0, 0, S("abcde")); + test(S("abcde"), 2, S(""), 0, 1, S("abcde")); + test(S("abcde"), 2, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, S("12345"), 0, 0, S("abcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcde"), 2, S("12345"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, S("12345"), 0, 2, S("ab12cde")); - test(S("abcde"), 2, S("12345"), 0, 4, S("ab1234cde")); - test(S("abcde"), 2, S("12345"), 0, 5, S("ab12345cde")); - test(S("abcde"), 2, S("12345"), 0, 6, S("ab12345cde")); - test(S("abcde"), 2, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 2, S("12345"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, S("12345"), 1, 2, S("ab23cde")); - test(S("abcde"), 2, S("12345"), 1, 3, S("ab234cde")); - test(S("abcde"), 2, S("12345"), 1, 4, S("ab2345cde")); - test(S("abcde"), 2, S("12345"), 1, 5, S("ab2345cde")); - test(S("abcde"), 2, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 2, S("12345"), 2, 1, S("ab3cde")); - test(S("abcde"), 2, S("12345"), 2, 2, S("ab34cde")); - test(S("abcde"), 2, S("12345"), 2, 3, S("ab345cde")); - test(S("abcde"), 2, S("12345"), 2, 4, S("ab345cde")); - test(S("abcde"), 2, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 2, S("12345"), 4, 1, S("ab5cde")); - test(S("abcde"), 2, S("12345"), 4, 2, S("ab5cde")); - test(S("abcde"), 2, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 2, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 2, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 2, S("1234567890"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, S("1234567890"), 0, 5, S("ab12345cde")); - test(S("abcde"), 2, S("1234567890"), 0, 9, S("ab123456789cde")); - test(S("abcde"), 2, S("1234567890"), 0, 10, S("ab1234567890cde")); - test(S("abcde"), 2, S("1234567890"), 0, 11, S("ab1234567890cde")); - test(S("abcde"), 2, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 2, S("1234567890"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, S("1234567890"), 1, 4, S("ab2345cde")); - test(S("abcde"), 2, S("1234567890"), 1, 8, S("ab23456789cde")); - test(S("abcde"), 2, S("1234567890"), 1, 9, S("ab234567890cde")); - test(S("abcde"), 2, S("1234567890"), 1, 10, S("ab234567890cde")); - test(S("abcde"), 2, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 2, S("1234567890"), 5, 1, S("ab6cde")); - test(S("abcde"), 2, S("1234567890"), 5, 2, S("ab67cde")); - test(S("abcde"), 2, S("1234567890"), 5, 4, S("ab6789cde")); - test(S("abcde"), 2, S("1234567890"), 5, 5, S("ab67890cde")); - test(S("abcde"), 2, S("1234567890"), 5, 6, S("ab67890cde")); - test(S("abcde"), 2, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 2, S("1234567890"), 9, 1, S("ab0cde")); - test(S("abcde"), 2, S("1234567890"), 9, 2, S("ab0cde")); - test(S("abcde"), 2, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 2, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 2, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 2, S("12345678901234567890"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, S("12345678901234567890"), 0, 10, S("ab1234567890cde")); - test(S("abcde"), 2, S("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcde"), 2, S("12345"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, S("12345"), 0, 2, S("ab12cde")); + test(S("abcde"), 2, S("12345"), 0, 4, S("ab1234cde")); + test(S("abcde"), 2, S("12345"), 0, 5, S("ab12345cde")); + test(S("abcde"), 2, S("12345"), 0, 6, S("ab12345cde")); + test(S("abcde"), 2, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 2, S("12345"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, S("12345"), 1, 2, S("ab23cde")); + test(S("abcde"), 2, S("12345"), 1, 3, S("ab234cde")); + test(S("abcde"), 2, S("12345"), 1, 4, S("ab2345cde")); + test(S("abcde"), 2, S("12345"), 1, 5, S("ab2345cde")); + test(S("abcde"), 2, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 2, S("12345"), 2, 1, S("ab3cde")); + test(S("abcde"), 2, S("12345"), 2, 2, S("ab34cde")); + test(S("abcde"), 2, S("12345"), 2, 3, S("ab345cde")); + test(S("abcde"), 2, S("12345"), 2, 4, S("ab345cde")); + test(S("abcde"), 2, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 2, S("12345"), 4, 1, S("ab5cde")); + test(S("abcde"), 2, S("12345"), 4, 2, S("ab5cde")); + test(S("abcde"), 2, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 2, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 2, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 2, S("1234567890"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, S("1234567890"), 0, 5, S("ab12345cde")); + test(S("abcde"), 2, S("1234567890"), 0, 9, S("ab123456789cde")); + test(S("abcde"), 2, S("1234567890"), 0, 10, S("ab1234567890cde")); + test(S("abcde"), 2, S("1234567890"), 0, 11, S("ab1234567890cde")); + test(S("abcde"), 2, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 2, S("1234567890"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, S("1234567890"), 1, 4, S("ab2345cde")); + test(S("abcde"), 2, S("1234567890"), 1, 8, S("ab23456789cde")); + test(S("abcde"), 2, S("1234567890"), 1, 9, S("ab234567890cde")); + test(S("abcde"), 2, S("1234567890"), 1, 10, S("ab234567890cde")); + test(S("abcde"), 2, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 2, S("1234567890"), 5, 1, S("ab6cde")); + test(S("abcde"), 2, S("1234567890"), 5, 2, S("ab67cde")); + test(S("abcde"), 2, S("1234567890"), 5, 4, S("ab6789cde")); + test(S("abcde"), 2, S("1234567890"), 5, 5, S("ab67890cde")); + test(S("abcde"), 2, S("1234567890"), 5, 6, S("ab67890cde")); + test(S("abcde"), 2, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 2, S("1234567890"), 9, 1, S("ab0cde")); + test(S("abcde"), 2, S("1234567890"), 9, 2, S("ab0cde")); + test(S("abcde"), 2, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 2, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 2, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 2, S("12345678901234567890"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, S("12345678901234567890"), 0, 10, S("ab1234567890cde")); + test(S("abcde"), 2, S("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcde"), 2, S("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); - test(S("abcde"), 2, S("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); - test(S("abcde"), 2, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 2, S("12345678901234567890"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, S("12345678901234567890"), 1, 9, S("ab234567890cde")); - test(S("abcde"), 2, S("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); - test(S("abcde"), 2, S("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); - test(S("abcde"), 2, S("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); - test(S("abcde"), 2, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 2, S("12345678901234567890"), 10, 1, S("ab1cde")); - test(S("abcde"), 2, S("12345678901234567890"), 10, 5, S("ab12345cde")); - test(S("abcde"), 2, S("12345678901234567890"), 10, 9, S("ab123456789cde")); - test(S("abcde"), 2, S("12345678901234567890"), 10, 10, S("ab1234567890cde")); - test(S("abcde"), 2, S("12345678901234567890"), 10, 11, S("ab1234567890cde")); - test(S("abcde"), 2, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 2, S("12345678901234567890"), 19, 1, S("ab0cde")); - test(S("abcde"), 2, S("12345678901234567890"), 19, 2, S("ab0cde")); - test(S("abcde"), 2, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 2, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 2, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 4, S(""), 0, 0, S("abcde")); - test(S("abcde"), 4, S(""), 0, 1, S("abcde")); - test(S("abcde"), 4, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 4, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 4, S("12345"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, S("12345"), 0, 2, S("abcd12e")); - test(S("abcde"), 4, S("12345"), 0, 4, S("abcd1234e")); - test(S("abcde"), 4, S("12345"), 0, 5, S("abcd12345e")); - test(S("abcde"), 4, S("12345"), 0, 6, S("abcd12345e")); - test(S("abcde"), 4, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 4, S("12345"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, S("12345"), 1, 2, S("abcd23e")); - test(S("abcde"), 4, S("12345"), 1, 3, S("abcd234e")); - test(S("abcde"), 4, S("12345"), 1, 4, S("abcd2345e")); - test(S("abcde"), 4, S("12345"), 1, 5, S("abcd2345e")); - test(S("abcde"), 4, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 4, S("12345"), 2, 1, S("abcd3e")); - test(S("abcde"), 4, S("12345"), 2, 2, S("abcd34e")); - test(S("abcde"), 4, S("12345"), 2, 3, S("abcd345e")); - test(S("abcde"), 4, S("12345"), 2, 4, S("abcd345e")); - test(S("abcde"), 4, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 4, S("12345"), 4, 1, S("abcd5e")); - test(S("abcde"), 4, S("12345"), 4, 2, S("abcd5e")); - test(S("abcde"), 4, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 4, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 4, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 4, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 4, S("1234567890"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, S("1234567890"), 0, 5, S("abcd12345e")); - test(S("abcde"), 4, S("1234567890"), 0, 9, S("abcd123456789e")); - - return true; +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcde"), 2, S("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); + test(S("abcde"), 2, S("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); + test(S("abcde"), 2, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 2, S("12345678901234567890"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, S("12345678901234567890"), 1, 9, S("ab234567890cde")); + test(S("abcde"), 2, S("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); + test(S("abcde"), 2, S("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); + test(S("abcde"), 2, S("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); + test(S("abcde"), 2, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 2, S("12345678901234567890"), 10, 1, S("ab1cde")); + test(S("abcde"), 2, S("12345678901234567890"), 10, 5, S("ab12345cde")); + test(S("abcde"), 2, S("12345678901234567890"), 10, 9, S("ab123456789cde")); + test(S("abcde"), 2, S("12345678901234567890"), 10, 10, S("ab1234567890cde")); + test(S("abcde"), 2, S("12345678901234567890"), 10, 11, S("ab1234567890cde")); + test(S("abcde"), 2, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 2, S("12345678901234567890"), 19, 1, S("ab0cde")); + test(S("abcde"), 2, S("12345678901234567890"), 19, 2, S("ab0cde")); + test(S("abcde"), 2, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 2, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 2, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 4, S(""), 0, 0, S("abcde")); + test(S("abcde"), 4, S(""), 0, 1, S("abcde")); + test(S("abcde"), 4, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 4, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 4, S("12345"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, S("12345"), 0, 2, S("abcd12e")); + test(S("abcde"), 4, S("12345"), 0, 4, S("abcd1234e")); + test(S("abcde"), 4, S("12345"), 0, 5, S("abcd12345e")); + test(S("abcde"), 4, S("12345"), 0, 6, S("abcd12345e")); + test(S("abcde"), 4, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 4, S("12345"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, S("12345"), 1, 2, S("abcd23e")); + test(S("abcde"), 4, S("12345"), 1, 3, S("abcd234e")); + test(S("abcde"), 4, S("12345"), 1, 4, S("abcd2345e")); + test(S("abcde"), 4, S("12345"), 1, 5, S("abcd2345e")); + test(S("abcde"), 4, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 4, S("12345"), 2, 1, S("abcd3e")); + test(S("abcde"), 4, S("12345"), 2, 2, S("abcd34e")); + test(S("abcde"), 4, S("12345"), 2, 3, S("abcd345e")); + test(S("abcde"), 4, S("12345"), 2, 4, S("abcd345e")); + test(S("abcde"), 4, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 4, S("12345"), 4, 1, S("abcd5e")); + test(S("abcde"), 4, S("12345"), 4, 2, S("abcd5e")); + test(S("abcde"), 4, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 4, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 4, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 4, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 4, S("1234567890"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, S("1234567890"), 0, 5, S("abcd12345e")); + test(S("abcde"), 4, S("1234567890"), 0, 9, S("abcd123456789e")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcde"), 4, S("1234567890"), 0, 10, S("abcd1234567890e")); - test(S("abcde"), 4, S("1234567890"), 0, 11, S("abcd1234567890e")); - test(S("abcde"), 4, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 4, S("1234567890"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, S("1234567890"), 1, 4, S("abcd2345e")); - test(S("abcde"), 4, S("1234567890"), 1, 8, S("abcd23456789e")); - test(S("abcde"), 4, S("1234567890"), 1, 9, S("abcd234567890e")); - test(S("abcde"), 4, S("1234567890"), 1, 10, S("abcd234567890e")); - test(S("abcde"), 4, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 4, S("1234567890"), 5, 1, S("abcd6e")); - test(S("abcde"), 4, S("1234567890"), 5, 2, S("abcd67e")); - test(S("abcde"), 4, S("1234567890"), 5, 4, S("abcd6789e")); - test(S("abcde"), 4, S("1234567890"), 5, 5, S("abcd67890e")); - test(S("abcde"), 4, S("1234567890"), 5, 6, S("abcd67890e")); - test(S("abcde"), 4, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 4, S("1234567890"), 9, 1, S("abcd0e")); - test(S("abcde"), 4, S("1234567890"), 9, 2, S("abcd0e")); - test(S("abcde"), 4, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 4, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 4, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 4, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 4, S("12345678901234567890"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, S("12345678901234567890"), 0, 10, S("abcd1234567890e")); - test(S("abcde"), 4, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); - test(S("abcde"), 4, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); - test(S("abcde"), 4, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); - test(S("abcde"), 4, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 4, S("12345678901234567890"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, S("12345678901234567890"), 1, 9, S("abcd234567890e")); - test(S("abcde"), 4, S("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); - test(S("abcde"), 4, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); - test(S("abcde"), 4, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); - test(S("abcde"), 4, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 4, S("12345678901234567890"), 10, 1, S("abcd1e")); - test(S("abcde"), 4, S("12345678901234567890"), 10, 5, S("abcd12345e")); - test(S("abcde"), 4, S("12345678901234567890"), 10, 9, S("abcd123456789e")); - test(S("abcde"), 4, S("12345678901234567890"), 10, 10, S("abcd1234567890e")); - test(S("abcde"), 4, S("12345678901234567890"), 10, 11, S("abcd1234567890e")); - test(S("abcde"), 4, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 4, S("12345678901234567890"), 19, 1, S("abcd0e")); - test(S("abcde"), 4, S("12345678901234567890"), 19, 2, S("abcd0e")); - test(S("abcde"), 4, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 4, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 4, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 5, S(""), 0, 0, S("abcde")); - test(S("abcde"), 5, S(""), 0, 1, S("abcde")); - test(S("abcde"), 5, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 5, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 5, S("12345"), 0, 1, S("abcde1")); - test(S("abcde"), 5, S("12345"), 0, 2, S("abcde12")); - - return true; +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcde"), 4, S("1234567890"), 0, 10, S("abcd1234567890e")); + test(S("abcde"), 4, S("1234567890"), 0, 11, S("abcd1234567890e")); + test(S("abcde"), 4, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 4, S("1234567890"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, S("1234567890"), 1, 4, S("abcd2345e")); + test(S("abcde"), 4, S("1234567890"), 1, 8, S("abcd23456789e")); + test(S("abcde"), 4, S("1234567890"), 1, 9, S("abcd234567890e")); + test(S("abcde"), 4, S("1234567890"), 1, 10, S("abcd234567890e")); + test(S("abcde"), 4, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 4, S("1234567890"), 5, 1, S("abcd6e")); + test(S("abcde"), 4, S("1234567890"), 5, 2, S("abcd67e")); + test(S("abcde"), 4, S("1234567890"), 5, 4, S("abcd6789e")); + test(S("abcde"), 4, S("1234567890"), 5, 5, S("abcd67890e")); + test(S("abcde"), 4, S("1234567890"), 5, 6, S("abcd67890e")); + test(S("abcde"), 4, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 4, S("1234567890"), 9, 1, S("abcd0e")); + test(S("abcde"), 4, S("1234567890"), 9, 2, S("abcd0e")); + test(S("abcde"), 4, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 4, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 4, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 4, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 4, S("12345678901234567890"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, S("12345678901234567890"), 0, 10, S("abcd1234567890e")); + test(S("abcde"), 4, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); + test(S("abcde"), 4, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); + test(S("abcde"), 4, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); + test(S("abcde"), 4, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 4, S("12345678901234567890"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, S("12345678901234567890"), 1, 9, S("abcd234567890e")); + test(S("abcde"), 4, S("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); + test(S("abcde"), 4, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); + test(S("abcde"), 4, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); + test(S("abcde"), 4, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 4, S("12345678901234567890"), 10, 1, S("abcd1e")); + test(S("abcde"), 4, S("12345678901234567890"), 10, 5, S("abcd12345e")); + test(S("abcde"), 4, S("12345678901234567890"), 10, 9, S("abcd123456789e")); + test(S("abcde"), 4, S("12345678901234567890"), 10, 10, S("abcd1234567890e")); + test(S("abcde"), 4, S("12345678901234567890"), 10, 11, S("abcd1234567890e")); + test(S("abcde"), 4, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 4, S("12345678901234567890"), 19, 1, S("abcd0e")); + test(S("abcde"), 4, S("12345678901234567890"), 19, 2, S("abcd0e")); + test(S("abcde"), 4, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 4, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 4, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 5, S(""), 0, 0, S("abcde")); + test(S("abcde"), 5, S(""), 0, 1, S("abcde")); + test(S("abcde"), 5, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 5, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 5, S("12345"), 0, 1, S("abcde1")); + test(S("abcde"), 5, S("12345"), 0, 2, S("abcde12")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test9() -{ - test(S("abcde"), 5, S("12345"), 0, 4, S("abcde1234")); - test(S("abcde"), 5, S("12345"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, S("12345"), 0, 6, S("abcde12345")); - test(S("abcde"), 5, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 5, S("12345"), 1, 1, S("abcde2")); - test(S("abcde"), 5, S("12345"), 1, 2, S("abcde23")); - test(S("abcde"), 5, S("12345"), 1, 3, S("abcde234")); - test(S("abcde"), 5, S("12345"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, S("12345"), 1, 5, S("abcde2345")); - test(S("abcde"), 5, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 5, S("12345"), 2, 1, S("abcde3")); - test(S("abcde"), 5, S("12345"), 2, 2, S("abcde34")); - test(S("abcde"), 5, S("12345"), 2, 3, S("abcde345")); - test(S("abcde"), 5, S("12345"), 2, 4, S("abcde345")); - test(S("abcde"), 5, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 5, S("12345"), 4, 1, S("abcde5")); - test(S("abcde"), 5, S("12345"), 4, 2, S("abcde5")); - test(S("abcde"), 5, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 5, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 5, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 5, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, S("1234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, S("1234567890"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, S("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcde"), 5, S("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, S("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcde"), 5, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, S("1234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, S("1234567890"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, S("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcde"), 5, S("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, S("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcde"), 5, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 5, S("1234567890"), 5, 1, S("abcde6")); - test(S("abcde"), 5, S("1234567890"), 5, 2, S("abcde67")); - test(S("abcde"), 5, S("1234567890"), 5, 4, S("abcde6789")); - test(S("abcde"), 5, S("1234567890"), 5, 5, S("abcde67890")); - test(S("abcde"), 5, S("1234567890"), 5, 6, S("abcde67890")); - test(S("abcde"), 5, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 5, S("1234567890"), 9, 1, S("abcde0")); - test(S("abcde"), 5, S("1234567890"), 9, 2, S("abcde0")); - test(S("abcde"), 5, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 5, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 5, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, S("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, S("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcde"), 5, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test9() { + test(S("abcde"), 5, S("12345"), 0, 4, S("abcde1234")); + test(S("abcde"), 5, S("12345"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, S("12345"), 0, 6, S("abcde12345")); + test(S("abcde"), 5, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 5, S("12345"), 1, 1, S("abcde2")); + test(S("abcde"), 5, S("12345"), 1, 2, S("abcde23")); + test(S("abcde"), 5, S("12345"), 1, 3, S("abcde234")); + test(S("abcde"), 5, S("12345"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, S("12345"), 1, 5, S("abcde2345")); + test(S("abcde"), 5, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 5, S("12345"), 2, 1, S("abcde3")); + test(S("abcde"), 5, S("12345"), 2, 2, S("abcde34")); + test(S("abcde"), 5, S("12345"), 2, 3, S("abcde345")); + test(S("abcde"), 5, S("12345"), 2, 4, S("abcde345")); + test(S("abcde"), 5, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 5, S("12345"), 4, 1, S("abcde5")); + test(S("abcde"), 5, S("12345"), 4, 2, S("abcde5")); + test(S("abcde"), 5, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 5, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 5, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 5, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, S("1234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, S("1234567890"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, S("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcde"), 5, S("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, S("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcde"), 5, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, S("1234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, S("1234567890"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, S("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcde"), 5, S("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, S("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcde"), 5, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 5, S("1234567890"), 5, 1, S("abcde6")); + test(S("abcde"), 5, S("1234567890"), 5, 2, S("abcde67")); + test(S("abcde"), 5, S("1234567890"), 5, 4, S("abcde6789")); + test(S("abcde"), 5, S("1234567890"), 5, 5, S("abcde67890")); + test(S("abcde"), 5, S("1234567890"), 5, 6, S("abcde67890")); + test(S("abcde"), 5, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 5, S("1234567890"), 9, 1, S("abcde0")); + test(S("abcde"), 5, S("1234567890"), 9, 2, S("abcde0")); + test(S("abcde"), 5, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 5, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 5, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, S("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, S("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcde"), 5, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test10() -{ - test(S("abcde"), 5, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, S("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, S("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcde"), 5, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcde"), 5, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcde"), 5, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, S("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcde"), 5, S("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcde"), 5, S("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcde"), 5, S("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcde"), 5, S("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcde"), 5, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 5, S("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcde"), 5, S("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcde"), 5, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 5, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 5, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 6, S(""), 0, 0, S("can't happen")); - test(S("abcde"), 6, S(""), 0, 1, S("can't happen")); - test(S("abcde"), 6, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 6, S("12345"), 0, 0, S("can't happen")); - test(S("abcde"), 6, S("12345"), 0, 1, S("can't happen")); - test(S("abcde"), 6, S("12345"), 0, 2, S("can't happen")); - test(S("abcde"), 6, S("12345"), 0, 4, S("can't happen")); - test(S("abcde"), 6, S("12345"), 0, 5, S("can't happen")); - test(S("abcde"), 6, S("12345"), 0, 6, S("can't happen")); - test(S("abcde"), 6, S("12345"), 1, 0, S("can't happen")); - test(S("abcde"), 6, S("12345"), 1, 1, S("can't happen")); - test(S("abcde"), 6, S("12345"), 1, 2, S("can't happen")); - test(S("abcde"), 6, S("12345"), 1, 3, S("can't happen")); - test(S("abcde"), 6, S("12345"), 1, 4, S("can't happen")); - test(S("abcde"), 6, S("12345"), 1, 5, S("can't happen")); - test(S("abcde"), 6, S("12345"), 2, 0, S("can't happen")); - test(S("abcde"), 6, S("12345"), 2, 1, S("can't happen")); - test(S("abcde"), 6, S("12345"), 2, 2, S("can't happen")); - test(S("abcde"), 6, S("12345"), 2, 3, S("can't happen")); - test(S("abcde"), 6, S("12345"), 2, 4, S("can't happen")); - test(S("abcde"), 6, S("12345"), 4, 0, S("can't happen")); - test(S("abcde"), 6, S("12345"), 4, 1, S("can't happen")); - test(S("abcde"), 6, S("12345"), 4, 2, S("can't happen")); - test(S("abcde"), 6, S("12345"), 5, 0, S("can't happen")); - test(S("abcde"), 6, S("12345"), 5, 1, S("can't happen")); - test(S("abcde"), 6, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 0, 0, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 0, 1, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 0, 5, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 0, 9, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 0, 10, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 0, 11, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test10() { + test(S("abcde"), 5, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, S("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, S("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcde"), 5, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcde"), 5, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcde"), 5, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, S("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcde"), 5, S("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcde"), 5, S("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcde"), 5, S("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcde"), 5, S("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcde"), 5, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 5, S("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcde"), 5, S("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcde"), 5, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 5, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 5, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 6, S(""), 0, 0, S("can't happen")); + test(S("abcde"), 6, S(""), 0, 1, S("can't happen")); + test(S("abcde"), 6, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 6, S("12345"), 0, 0, S("can't happen")); + test(S("abcde"), 6, S("12345"), 0, 1, S("can't happen")); + test(S("abcde"), 6, S("12345"), 0, 2, S("can't happen")); + test(S("abcde"), 6, S("12345"), 0, 4, S("can't happen")); + test(S("abcde"), 6, S("12345"), 0, 5, S("can't happen")); + test(S("abcde"), 6, S("12345"), 0, 6, S("can't happen")); + test(S("abcde"), 6, S("12345"), 1, 0, S("can't happen")); + test(S("abcde"), 6, S("12345"), 1, 1, S("can't happen")); + test(S("abcde"), 6, S("12345"), 1, 2, S("can't happen")); + test(S("abcde"), 6, S("12345"), 1, 3, S("can't happen")); + test(S("abcde"), 6, S("12345"), 1, 4, S("can't happen")); + test(S("abcde"), 6, S("12345"), 1, 5, S("can't happen")); + test(S("abcde"), 6, S("12345"), 2, 0, S("can't happen")); + test(S("abcde"), 6, S("12345"), 2, 1, S("can't happen")); + test(S("abcde"), 6, S("12345"), 2, 2, S("can't happen")); + test(S("abcde"), 6, S("12345"), 2, 3, S("can't happen")); + test(S("abcde"), 6, S("12345"), 2, 4, S("can't happen")); + test(S("abcde"), 6, S("12345"), 4, 0, S("can't happen")); + test(S("abcde"), 6, S("12345"), 4, 1, S("can't happen")); + test(S("abcde"), 6, S("12345"), 4, 2, S("can't happen")); + test(S("abcde"), 6, S("12345"), 5, 0, S("can't happen")); + test(S("abcde"), 6, S("12345"), 5, 1, S("can't happen")); + test(S("abcde"), 6, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 0, 0, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 0, 1, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 0, 5, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 0, 9, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 0, 10, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 0, 11, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test11() -{ - test(S("abcde"), 6, S("1234567890"), 1, 0, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 1, 1, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 1, 4, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 1, 8, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 1, 9, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 1, 10, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 5, 0, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 5, 1, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 5, 2, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 5, 4, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 5, 5, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 5, 6, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 9, 0, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 9, 1, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 9, 2, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 10, 0, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 10, 1, S("can't happen")); - test(S("abcde"), 6, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcde"), 6, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 0, 2, S("12abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 0, 4, S("1234abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 0, 5, S("12345abcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test11() { + test(S("abcde"), 6, S("1234567890"), 1, 0, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 1, 1, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 1, 4, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 1, 8, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 1, 9, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 1, 10, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 5, 0, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 5, 1, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 5, 2, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 5, 4, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 5, 5, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 5, 6, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 9, 0, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 9, 1, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 9, 2, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 10, 0, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 10, 1, S("can't happen")); + test(S("abcde"), 6, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcde"), 6, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 0, 2, S("12abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 0, 4, S("1234abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 0, 5, S("12345abcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test12() -{ - test(S("abcdefghij"), 0, S("12345"), 0, 6, S("12345abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 1, 2, S("23abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 1, 3, S("234abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 1, 4, S("2345abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 1, 5, S("2345abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 2, 1, S("3abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 2, 2, S("34abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 2, 3, S("345abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 2, 4, S("345abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 4, 1, S("5abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 4, 2, S("5abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 0, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 0, 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 0, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 0, 11, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 1, 4, S("2345abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 1, 8, S("23456789abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 1, 9, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 1, 10, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 5, 1, S("6abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 5, 2, S("67abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 5, 4, S("6789abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 5, 5, S("67890abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 5, 6, S("67890abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 9, 1, S("0abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 9, 2, S("0abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 1, S("2abcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test12() { + test(S("abcdefghij"), 0, S("12345"), 0, 6, S("12345abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 1, 2, S("23abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 1, 3, S("234abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 1, 4, S("2345abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 1, 5, S("2345abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 2, 1, S("3abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 2, 2, S("34abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 2, 3, S("345abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 2, 4, S("345abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 4, 1, S("5abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 4, 2, S("5abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 0, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 0, 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 0, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 0, 11, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 1, 4, S("2345abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 1, 8, S("23456789abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 1, 9, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 1, 10, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 5, 1, S("6abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 5, 2, S("67abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 5, 4, S("6789abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 5, 5, S("67890abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 5, 6, S("67890abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 9, 1, S("0abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 9, 2, S("0abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 1, S("2abcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test13() -{ - test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 19, 1, S("0abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 19, 2, S("0abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 0, 2, S("a12bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 0, 4, S("a1234bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 0, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 0, 6, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 1, 2, S("a23bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 1, 3, S("a234bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 1, 4, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 1, 5, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 2, 1, S("a3bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 2, 2, S("a34bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 2, 3, S("a345bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 2, 4, S("a345bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 4, 1, S("a5bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 4, 2, S("a5bcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 0, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 0, 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 0, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 0, 11, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 1, 1, S("a2bcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test13() { + test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 19, 1, S("0abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 19, 2, S("0abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 0, 2, S("a12bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 0, 4, S("a1234bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 0, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 0, 6, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 1, 2, S("a23bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 1, 3, S("a234bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 1, 4, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 1, 5, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 2, 1, S("a3bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 2, 2, S("a34bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 2, 3, S("a345bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 2, 4, S("a345bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 4, 1, S("a5bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 4, 2, S("a5bcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 0, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 0, 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 0, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 0, 11, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 1, 1, S("a2bcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test14() -{ - test(S("abcdefghij"), 1, S("1234567890"), 1, 4, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 1, 8, S("a23456789bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 1, 9, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 1, 10, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 5, 1, S("a6bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 5, 2, S("a67bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 5, 4, S("a6789bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 5, 5, S("a67890bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 5, 6, S("a67890bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 9, 1, S("a0bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 9, 2, S("a0bcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 19, 1, S("a0bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 19, 2, S("a0bcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, S("12345"), 0, 2, S("abcde12fghij")); - test(S("abcdefghij"), 5, S("12345"), 0, 4, S("abcde1234fghij")); - test(S("abcdefghij"), 5, S("12345"), 0, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, S("12345"), 0, 6, S("abcde12345fghij")); - test(S("abcdefghij"), 5, S("12345"), 1, 0, S("abcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test14() { + test(S("abcdefghij"), 1, S("1234567890"), 1, 4, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 1, 8, S("a23456789bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 1, 9, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 1, 10, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 5, 1, S("a6bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 5, 2, S("a67bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 5, 4, S("a6789bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 5, 5, S("a67890bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 5, 6, S("a67890bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 9, 1, S("a0bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 9, 2, S("a0bcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 19, 1, S("a0bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 19, 2, S("a0bcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, S("12345"), 0, 2, S("abcde12fghij")); + test(S("abcdefghij"), 5, S("12345"), 0, 4, S("abcde1234fghij")); + test(S("abcdefghij"), 5, S("12345"), 0, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, S("12345"), 0, 6, S("abcde12345fghij")); + test(S("abcdefghij"), 5, S("12345"), 1, 0, S("abcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test15() -{ - test(S("abcdefghij"), 5, S("12345"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, S("12345"), 1, 2, S("abcde23fghij")); - test(S("abcdefghij"), 5, S("12345"), 1, 3, S("abcde234fghij")); - test(S("abcdefghij"), 5, S("12345"), 1, 4, S("abcde2345fghij")); - test(S("abcdefghij"), 5, S("12345"), 1, 5, S("abcde2345fghij")); - test(S("abcdefghij"), 5, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345"), 2, 1, S("abcde3fghij")); - test(S("abcdefghij"), 5, S("12345"), 2, 2, S("abcde34fghij")); - test(S("abcdefghij"), 5, S("12345"), 2, 3, S("abcde345fghij")); - test(S("abcdefghij"), 5, S("12345"), 2, 4, S("abcde345fghij")); - test(S("abcdefghij"), 5, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345"), 4, 1, S("abcde5fghij")); - test(S("abcdefghij"), 5, S("12345"), 4, 2, S("abcde5fghij")); - test(S("abcdefghij"), 5, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("1234567890"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 0, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 0, 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 0, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 0, 11, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("1234567890"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 1, 4, S("abcde2345fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 1, 8, S("abcde23456789fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 1, 9, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 1, 10, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("1234567890"), 5, 1, S("abcde6fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 5, 2, S("abcde67fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 5, 4, S("abcde6789fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 5, 5, S("abcde67890fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 5, 6, S("abcde67890fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("1234567890"), 9, 1, S("abcde0fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 9, 2, S("abcde0fghij")); - test(S("abcdefghij"), 5, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 9, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test15() { + test(S("abcdefghij"), 5, S("12345"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, S("12345"), 1, 2, S("abcde23fghij")); + test(S("abcdefghij"), 5, S("12345"), 1, 3, S("abcde234fghij")); + test(S("abcdefghij"), 5, S("12345"), 1, 4, S("abcde2345fghij")); + test(S("abcdefghij"), 5, S("12345"), 1, 5, S("abcde2345fghij")); + test(S("abcdefghij"), 5, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345"), 2, 1, S("abcde3fghij")); + test(S("abcdefghij"), 5, S("12345"), 2, 2, S("abcde34fghij")); + test(S("abcdefghij"), 5, S("12345"), 2, 3, S("abcde345fghij")); + test(S("abcdefghij"), 5, S("12345"), 2, 4, S("abcde345fghij")); + test(S("abcdefghij"), 5, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345"), 4, 1, S("abcde5fghij")); + test(S("abcdefghij"), 5, S("12345"), 4, 2, S("abcde5fghij")); + test(S("abcdefghij"), 5, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("1234567890"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 0, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 0, 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 0, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 0, 11, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("1234567890"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 1, 4, S("abcde2345fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 1, 8, S("abcde23456789fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 1, 9, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 1, 10, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("1234567890"), 5, 1, S("abcde6fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 5, 2, S("abcde67fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 5, 4, S("abcde6789fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 5, 5, S("abcde67890fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 5, 6, S("abcde67890fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("1234567890"), 9, 1, S("abcde0fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 9, 2, S("abcde0fghij")); + test(S("abcdefghij"), 5, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 9, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test16() -{ - test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 19, 1, S("abcde0fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 19, 2, S("abcde0fghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 9, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 9, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, S("12345"), 0, 2, S("abcdefghi12j")); - test(S("abcdefghij"), 9, S("12345"), 0, 4, S("abcdefghi1234j")); - test(S("abcdefghij"), 9, S("12345"), 0, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, S("12345"), 0, 6, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, S("12345"), 1, 2, S("abcdefghi23j")); - test(S("abcdefghij"), 9, S("12345"), 1, 3, S("abcdefghi234j")); - test(S("abcdefghij"), 9, S("12345"), 1, 4, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, S("12345"), 1, 5, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345"), 2, 1, S("abcdefghi3j")); - test(S("abcdefghij"), 9, S("12345"), 2, 2, S("abcdefghi34j")); - test(S("abcdefghij"), 9, S("12345"), 2, 3, S("abcdefghi345j")); - test(S("abcdefghij"), 9, S("12345"), 2, 4, S("abcdefghi345j")); - test(S("abcdefghij"), 9, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345"), 4, 1, S("abcdefghi5j")); - test(S("abcdefghij"), 9, S("12345"), 4, 2, S("abcdefghi5j")); - test(S("abcdefghij"), 9, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 9, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("1234567890"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, S("1234567890"), 0, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, S("1234567890"), 0, 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, S("1234567890"), 0, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, S("1234567890"), 0, 11, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("1234567890"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, S("1234567890"), 1, 4, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, S("1234567890"), 1, 8, S("abcdefghi23456789j")); - - return true; +TEST_CONSTEXPR_CXX20 bool test16() { + test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 19, 1, S("abcde0fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 19, 2, S("abcde0fghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 9, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 9, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, S("12345"), 0, 2, S("abcdefghi12j")); + test(S("abcdefghij"), 9, S("12345"), 0, 4, S("abcdefghi1234j")); + test(S("abcdefghij"), 9, S("12345"), 0, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, S("12345"), 0, 6, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, S("12345"), 1, 2, S("abcdefghi23j")); + test(S("abcdefghij"), 9, S("12345"), 1, 3, S("abcdefghi234j")); + test(S("abcdefghij"), 9, S("12345"), 1, 4, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, S("12345"), 1, 5, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345"), 2, 1, S("abcdefghi3j")); + test(S("abcdefghij"), 9, S("12345"), 2, 2, S("abcdefghi34j")); + test(S("abcdefghij"), 9, S("12345"), 2, 3, S("abcdefghi345j")); + test(S("abcdefghij"), 9, S("12345"), 2, 4, S("abcdefghi345j")); + test(S("abcdefghij"), 9, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345"), 4, 1, S("abcdefghi5j")); + test(S("abcdefghij"), 9, S("12345"), 4, 2, S("abcdefghi5j")); + test(S("abcdefghij"), 9, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 9, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("1234567890"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, S("1234567890"), 0, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, S("1234567890"), 0, 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, S("1234567890"), 0, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, S("1234567890"), 0, 11, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("1234567890"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, S("1234567890"), 1, 4, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, S("1234567890"), 1, 8, S("abcdefghi23456789j")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test17() -{ - test(S("abcdefghij"), 9, S("1234567890"), 1, 9, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, S("1234567890"), 1, 10, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("1234567890"), 5, 1, S("abcdefghi6j")); - test(S("abcdefghij"), 9, S("1234567890"), 5, 2, S("abcdefghi67j")); - test(S("abcdefghij"), 9, S("1234567890"), 5, 4, S("abcdefghi6789j")); - test(S("abcdefghij"), 9, S("1234567890"), 5, 5, S("abcdefghi67890j")); - test(S("abcdefghij"), 9, S("1234567890"), 5, 6, S("abcdefghi67890j")); - test(S("abcdefghij"), 9, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("1234567890"), 9, 1, S("abcdefghi0j")); - test(S("abcdefghij"), 9, S("1234567890"), 9, 2, S("abcdefghi0j")); - test(S("abcdefghij"), 9, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 19, 1, S("abcdefghi0j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 19, 2, S("abcdefghi0j")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 10, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 10, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, S("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, S("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, S("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, S("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghij"), 10, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, S("12345"), 1, 2, S("abcdefghij23")); - - return true; +TEST_CONSTEXPR_CXX20 bool test17() { + test(S("abcdefghij"), 9, S("1234567890"), 1, 9, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, S("1234567890"), 1, 10, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("1234567890"), 5, 1, S("abcdefghi6j")); + test(S("abcdefghij"), 9, S("1234567890"), 5, 2, S("abcdefghi67j")); + test(S("abcdefghij"), 9, S("1234567890"), 5, 4, S("abcdefghi6789j")); + test(S("abcdefghij"), 9, S("1234567890"), 5, 5, S("abcdefghi67890j")); + test(S("abcdefghij"), 9, S("1234567890"), 5, 6, S("abcdefghi67890j")); + test(S("abcdefghij"), 9, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("1234567890"), 9, 1, S("abcdefghi0j")); + test(S("abcdefghij"), 9, S("1234567890"), 9, 2, S("abcdefghi0j")); + test(S("abcdefghij"), 9, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 19, 1, S("abcdefghi0j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 19, 2, S("abcdefghi0j")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 10, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 10, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, S("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, S("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, S("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, S("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghij"), 10, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, S("12345"), 1, 2, S("abcdefghij23")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test18() -{ - test(S("abcdefghij"), 10, S("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghij"), 10, S("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, S("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghij"), 10, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghij"), 10, S("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghij"), 10, S("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghij"), 10, S("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghij"), 10, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345"), 4, 1, S("abcdefghij5")); - test(S("abcdefghij"), 10, S("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghij"), 10, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 10, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, S("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, S("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, S("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, S("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, S("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, S("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghij"), 10, S("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, S("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghij"), 10, S("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghij"), 10, S("1234567890"), 5, 4, S("abcdefghij6789")); - test(S("abcdefghij"), 10, S("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghij"), 10, S("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghij"), 10, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, S("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test18() { + test(S("abcdefghij"), 10, S("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghij"), 10, S("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, S("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghij"), 10, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghij"), 10, S("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghij"), 10, S("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghij"), 10, S("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghij"), 10, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345"), 4, 1, S("abcdefghij5")); + test(S("abcdefghij"), 10, S("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghij"), 10, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 10, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, S("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, S("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, S("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, S("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, S("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, S("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghij"), 10, S("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, S("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghij"), 10, S("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghij"), 10, S("1234567890"), 5, 4, S("abcdefghij6789")); + test(S("abcdefghij"), 10, S("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghij"), 10, S("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghij"), 10, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, S("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test19() -{ - test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 11, S(""), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, S(""), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 0, 2, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 0, 4, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 0, 5, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 0, 6, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 1, 2, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 1, 3, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 1, 4, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 1, 5, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 2, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 2, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 2, 2, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 2, 3, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 2, 4, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 4, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 4, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 4, 2, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 5, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 5, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 0, 5, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 0, 9, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 0, 10, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 0, 11, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 1, 4, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 1, 8, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 1, 9, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 1, 10, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test19() { + test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 11, S(""), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, S(""), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 0, 2, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 0, 4, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 0, 5, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 0, 6, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 1, 2, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 1, 3, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 1, 4, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 1, 5, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 2, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 2, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 2, 2, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 2, 3, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 2, 4, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 4, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 4, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 4, 2, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 5, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 5, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 0, 5, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 0, 9, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 0, 10, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 0, 11, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 1, 4, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 1, 8, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 1, 9, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 1, 10, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test20() -{ - test(S("abcdefghij"), 11, S("1234567890"), 5, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 5, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 5, 2, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 5, 4, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 5, 5, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 5, 6, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 9, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 9, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 9, 2, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 10, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 10, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcdefghij"), 11, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 2, S("12abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 2, S("23abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 3, S("234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test20() { + test(S("abcdefghij"), 11, S("1234567890"), 5, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 5, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 5, 2, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 5, 4, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 5, 5, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 5, 6, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 9, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 9, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 9, 2, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 10, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 10, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcdefghij"), 11, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 2, S("12abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 2, S("23abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 3, S("234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test21() -{ - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 1, S("3abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 2, S("34abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 3, S("345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 4, S("345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 4, 1, S("5abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 4, 2, S("5abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test21() { + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 1, S("3abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 2, S("34abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 3, S("345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 2, 4, S("345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 4, 1, S("5abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 4, 2, S("5abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test22() -{ - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test22() { + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test23() -{ - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 2, S("abcdefghij12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 2, S("abcdefghij23klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 3, S("abcdefghij234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test23() { + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 2, S("abcdefghij12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 2, S("abcdefghij23klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 3, S("abcdefghij234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test24() -{ - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 1, S("abcdefghij3klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 2, S("abcdefghij34klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 3, S("abcdefghij345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 4, S("abcdefghij345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 4, 1, S("abcdefghij5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 4, 2, S("abcdefghij5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test24() { + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 1, S("abcdefghij3klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 2, S("abcdefghij34klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 3, S("abcdefghij345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 2, 4, S("abcdefghij345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 4, 1, S("abcdefghij5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 4, 2, S("abcdefghij5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test25() -{ - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); - - return true; +TEST_CONSTEXPR_CXX20 bool test25() { + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test26() -{ - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 2, S("abcdefghijklmnopqrst23")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 3, S("abcdefghijklmnopqrst234")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 1, S("abcdefghijklmnopqrst3")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 2, S("abcdefghijklmnopqrst34")); - - return true; +TEST_CONSTEXPR_CXX20 bool test26() { + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 2, S("abcdefghijklmnopqrst23")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 3, S("abcdefghijklmnopqrst234")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 1, S("abcdefghijklmnopqrst3")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 2, S("abcdefghijklmnopqrst34")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test27() -{ - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 3, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 4, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 4, 1, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 4, 2, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test27() { + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 3, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 2, 4, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 4, 1, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 4, 2, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test28() -{ - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S(""), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S(""), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 6, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 3, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 3, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 4, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 4, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 4, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 5, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 5, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 11, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 8, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 6, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test28() { + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S(""), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S(""), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 0, 6, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 3, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 1, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 3, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 2, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 4, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 4, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 4, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 5, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 5, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 0, 11, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 8, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 1, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 5, 6, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test29() -{ - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 9, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 9, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 9, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 10, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 10, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 21, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test29() { + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 9, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 9, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 9, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 10, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 10, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, S("12345678901234567890"), 21, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test30() -{ - test_npos(S(""), 0, S("12345678901234567890"), 0, S("12345678901234567890")); - test_npos(S(""), 0, S("12345678901234567890"), 1, S( "2345678901234567890")); - test_npos(S(""), 0, S("12345678901234567890"), 2, S( "345678901234567890")); - test_npos(S(""), 0, S("12345678901234567890"), 3, S( "45678901234567890")); - test_npos(S(""), 0, S("12345678901234567890"), 5, S( "678901234567890")); - test_npos(S(""), 0, S("12345678901234567890"), 10, S( "1234567890")); - test_npos(S(""), 0, S("12345678901234567890"), 21, S("can't happen")); - test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, S("abcdefghij12345klmnopqrst")); - test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, S("abcdefghij2345klmnopqrst")); - test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 3, S("abcdefghij45klmnopqrst")); - test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 5, S("abcdefghijklmnopqrst")); - test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 6, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test30() { + test_npos(S(""), 0, S("12345678901234567890"), 0, S("12345678901234567890")); + test_npos(S(""), 0, S("12345678901234567890"), 1, S("2345678901234567890")); + test_npos(S(""), 0, S("12345678901234567890"), 2, S("345678901234567890")); + test_npos(S(""), 0, S("12345678901234567890"), 3, S("45678901234567890")); + test_npos(S(""), 0, S("12345678901234567890"), 5, S("678901234567890")); + test_npos(S(""), 0, S("12345678901234567890"), 10, S("1234567890")); + test_npos(S(""), 0, S("12345678901234567890"), 21, S("can't happen")); + test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 0, S("abcdefghij12345klmnopqrst")); + test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 1, S("abcdefghij2345klmnopqrst")); + test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 3, S("abcdefghij45klmnopqrst")); + test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 5, S("abcdefghijklmnopqrst")); + test_npos(S("abcdefghijklmnopqrst"), 10, S("12345"), 6, S("can't happen")); + + return true; } template @@ -1858,8 +1812,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_insert/string_view.pass.cpp @@ -19,31 +19,24 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, SV sv, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.insert(pos, sv); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos, SV sv, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.insert(pos, sv); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.insert(pos, sv); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.insert(pos, sv); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } @@ -157,8 +150,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/char.pass.cpp @@ -17,12 +17,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::value_type str, S expected) -{ - s += str; - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::value_type str, S expected) { + s += str; + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } TEST_CONSTEXPR_CXX20 bool test() { @@ -46,8 +44,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/initializer_list.pass.cpp @@ -34,8 +34,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/pointer.pass.cpp @@ -17,12 +17,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, const typename S::value_type* str, S expected) -{ - s += str; - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, const typename S::value_type* str, S expected) { + s += str; + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -45,8 +43,7 @@ test(S("12345678901234567890"), "", S("12345678901234567890")); test(S("12345678901234567890"), "12345", S("1234567890123456789012345")); test(S("12345678901234567890"), "1234567890", S("123456789012345678901234567890")); - test(S("12345678901234567890"), "12345678901234567890", - S("1234567890123456789012345678901234567890")); + test(S("12345678901234567890"), "12345678901234567890", S("1234567890123456789012345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -58,8 +55,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_op_plus_equal/string.pass.cpp @@ -18,12 +18,10 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, S str, S expected) -{ - s += str; - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); +TEST_CONSTEXPR_CXX20 void test(S s, S str, S expected) { + s += str; + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); } template @@ -46,8 +44,7 @@ test(S("12345678901234567890"), S(), S("12345678901234567890")); test(S("12345678901234567890"), S("12345"), S("1234567890123456789012345")); test(S("12345678901234567890"), S("1234567890"), S("123456789012345678901234567890")); - test(S("12345678901234567890"), S("12345678901234567890"), - S("1234567890123456789012345678901234567890")); + test(S("12345678901234567890"), S("12345678901234567890"), S("1234567890123456789012345678901234567890")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -68,8 +65,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_initializer_list.pass.cpp @@ -34,8 +34,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_iter_iter.pass.cpp @@ -21,975 +21,965 @@ #include "test_iterators.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, It f, It l, S expected) -{ - typename S::size_type old_size = s.size(); - typename S::const_iterator first = s.begin() + pos1; - typename S::const_iterator last = s.begin() + pos1 + n1; - typename S::size_type xlen = last - first; - s.replace(first, last, f, l); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type rlen = std::distance(f, l); - assert(s.size() == old_size - xlen + rlen); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos1, typename S::size_type n1, It f, It l, S expected) { + typename S::size_type old_size = s.size(); + typename S::const_iterator first = s.begin() + pos1; + typename S::const_iterator last = s.begin() + pos1 + n1; + typename S::size_type xlen = last - first; + s.replace(first, last, f, l); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type rlen = std::distance(f, l); + assert(s.size() == old_size - xlen + rlen); } #ifndef TEST_HAS_NO_EXCEPTIONS -struct Widget { operator char() const { throw 42; } }; +struct Widget { + operator char() const { throw 42; } +}; template -TEST_CONSTEXPR_CXX20 void -test_exceptions(S s, typename S::size_type pos1, typename S::size_type n1, It f, It l) -{ - typename S::const_iterator first = s.begin() + pos1; - typename S::const_iterator last = s.begin() + pos1 + n1; +TEST_CONSTEXPR_CXX20 void test_exceptions(S s, typename S::size_type pos1, typename S::size_type n1, It f, It l) { + typename S::const_iterator first = s.begin() + pos1; + typename S::const_iterator last = s.begin() + pos1 + n1; - S original = s; - typename S::iterator begin = s.begin(); - typename S::iterator end = s.end(); + S original = s; + typename S::iterator begin = s.begin(); + typename S::iterator end = s.end(); - try { - s.replace(first, last, f, l); - assert(false); - } catch (...) {} + try { + s.replace(first, last, f, l); + assert(false); + } catch (...) { + } - // Part of "no effects" is that iterators and pointers - // into the string must not have been invalidated. - LIBCPP_ASSERT(s.__invariants()); - assert(s == original); - assert(s.begin() == begin); - assert(s.end() == end); + // Part of "no effects" is that iterators and pointers + // into the string must not have been invalidated. + LIBCPP_ASSERT(s.__invariants()); + assert(s == original); + assert(s.begin() == begin); + assert(s.end() == end); } #endif TEST_CONSTEXPR const char* str = "12345678901234567890"; template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, str, str+0, S("")); - test(S(""), 0, 0, str, str+0, S("")); - test(S(""), 0, 0, str, str+1, S("1")); - test(S(""), 0, 0, str, str+2, S("12")); - test(S(""), 0, 0, str, str+4, S("1234")); - test(S(""), 0, 0, str, str+5, S("12345")); - test(S(""), 0, 0, str, str+0, S("")); - test(S(""), 0, 0, str, str+1, S("1")); - test(S(""), 0, 0, str, str+5, S("12345")); - test(S(""), 0, 0, str, str+9, S("123456789")); - test(S(""), 0, 0, str, str+10, S("1234567890")); - test(S(""), 0, 0, str, str+0, S("")); - test(S(""), 0, 0, str, str+1, S("1")); - test(S(""), 0, 0, str, str+10, S("1234567890")); - test(S(""), 0, 0, str, str+19, S("1234567890123456789")); - test(S(""), 0, 0, str, str+20, S("12345678901234567890")); - test(S("abcde"), 0, 0, str, str+0, S("abcde")); - test(S("abcde"), 0, 0, str, str+0, S("abcde")); - test(S("abcde"), 0, 0, str, str+1, S("1abcde")); - test(S("abcde"), 0, 0, str, str+2, S("12abcde")); - test(S("abcde"), 0, 0, str, str+4, S("1234abcde")); - test(S("abcde"), 0, 0, str, str+5, S("12345abcde")); - test(S("abcde"), 0, 0, str, str+0, S("abcde")); - test(S("abcde"), 0, 0, str, str+1, S("1abcde")); - test(S("abcde"), 0, 0, str, str+5, S("12345abcde")); - test(S("abcde"), 0, 0, str, str+9, S("123456789abcde")); - test(S("abcde"), 0, 0, str, str+10, S("1234567890abcde")); - test(S("abcde"), 0, 0, str, str+0, S("abcde")); - test(S("abcde"), 0, 0, str, str+1, S("1abcde")); - test(S("abcde"), 0, 0, str, str+10, S("1234567890abcde")); - test(S("abcde"), 0, 0, str, str+19, S("1234567890123456789abcde")); - test(S("abcde"), 0, 0, str, str+20, S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, str, str+0, S("bcde")); - test(S("abcde"), 0, 1, str, str+0, S("bcde")); - test(S("abcde"), 0, 1, str, str+1, S("1bcde")); - test(S("abcde"), 0, 1, str, str+2, S("12bcde")); - test(S("abcde"), 0, 1, str, str+4, S("1234bcde")); - test(S("abcde"), 0, 1, str, str+5, S("12345bcde")); - test(S("abcde"), 0, 1, str, str+0, S("bcde")); - test(S("abcde"), 0, 1, str, str+1, S("1bcde")); - test(S("abcde"), 0, 1, str, str+5, S("12345bcde")); - test(S("abcde"), 0, 1, str, str+9, S("123456789bcde")); - test(S("abcde"), 0, 1, str, str+10, S("1234567890bcde")); - test(S("abcde"), 0, 1, str, str+0, S("bcde")); - test(S("abcde"), 0, 1, str, str+1, S("1bcde")); - test(S("abcde"), 0, 1, str, str+10, S("1234567890bcde")); - test(S("abcde"), 0, 1, str, str+19, S("1234567890123456789bcde")); - test(S("abcde"), 0, 1, str, str+20, S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, str, str+0, S("cde")); - test(S("abcde"), 0, 2, str, str+0, S("cde")); - test(S("abcde"), 0, 2, str, str+1, S("1cde")); - test(S("abcde"), 0, 2, str, str+2, S("12cde")); - test(S("abcde"), 0, 2, str, str+4, S("1234cde")); - test(S("abcde"), 0, 2, str, str+5, S("12345cde")); - test(S("abcde"), 0, 2, str, str+0, S("cde")); - test(S("abcde"), 0, 2, str, str+1, S("1cde")); - test(S("abcde"), 0, 2, str, str+5, S("12345cde")); - test(S("abcde"), 0, 2, str, str+9, S("123456789cde")); - test(S("abcde"), 0, 2, str, str+10, S("1234567890cde")); - test(S("abcde"), 0, 2, str, str+0, S("cde")); - test(S("abcde"), 0, 2, str, str+1, S("1cde")); - test(S("abcde"), 0, 2, str, str+10, S("1234567890cde")); - test(S("abcde"), 0, 2, str, str+19, S("1234567890123456789cde")); - test(S("abcde"), 0, 2, str, str+20, S("12345678901234567890cde")); - test(S("abcde"), 0, 4, str, str+0, S("e")); - test(S("abcde"), 0, 4, str, str+0, S("e")); - test(S("abcde"), 0, 4, str, str+1, S("1e")); - test(S("abcde"), 0, 4, str, str+2, S("12e")); - test(S("abcde"), 0, 4, str, str+4, S("1234e")); - test(S("abcde"), 0, 4, str, str+5, S("12345e")); - test(S("abcde"), 0, 4, str, str+0, S("e")); - test(S("abcde"), 0, 4, str, str+1, S("1e")); - test(S("abcde"), 0, 4, str, str+5, S("12345e")); - test(S("abcde"), 0, 4, str, str+9, S("123456789e")); - test(S("abcde"), 0, 4, str, str+10, S("1234567890e")); - test(S("abcde"), 0, 4, str, str+0, S("e")); - test(S("abcde"), 0, 4, str, str+1, S("1e")); - test(S("abcde"), 0, 4, str, str+10, S("1234567890e")); - test(S("abcde"), 0, 4, str, str+19, S("1234567890123456789e")); - test(S("abcde"), 0, 4, str, str+20, S("12345678901234567890e")); - test(S("abcde"), 0, 5, str, str+0, S("")); - test(S("abcde"), 0, 5, str, str+0, S("")); - test(S("abcde"), 0, 5, str, str+1, S("1")); - test(S("abcde"), 0, 5, str, str+2, S("12")); - test(S("abcde"), 0, 5, str, str+4, S("1234")); - test(S("abcde"), 0, 5, str, str+5, S("12345")); - test(S("abcde"), 0, 5, str, str+0, S("")); - test(S("abcde"), 0, 5, str, str+1, S("1")); - test(S("abcde"), 0, 5, str, str+5, S("12345")); - test(S("abcde"), 0, 5, str, str+9, S("123456789")); - test(S("abcde"), 0, 5, str, str+10, S("1234567890")); - test(S("abcde"), 0, 5, str, str+0, S("")); - test(S("abcde"), 0, 5, str, str+1, S("1")); - test(S("abcde"), 0, 5, str, str+10, S("1234567890")); - test(S("abcde"), 0, 5, str, str+19, S("1234567890123456789")); - test(S("abcde"), 0, 5, str, str+20, S("12345678901234567890")); - test(S("abcde"), 1, 0, str, str+0, S("abcde")); - test(S("abcde"), 1, 0, str, str+0, S("abcde")); - test(S("abcde"), 1, 0, str, str+1, S("a1bcde")); - test(S("abcde"), 1, 0, str, str+2, S("a12bcde")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, str, str + 0, S("")); + test(S(""), 0, 0, str, str + 0, S("")); + test(S(""), 0, 0, str, str + 1, S("1")); + test(S(""), 0, 0, str, str + 2, S("12")); + test(S(""), 0, 0, str, str + 4, S("1234")); + test(S(""), 0, 0, str, str + 5, S("12345")); + test(S(""), 0, 0, str, str + 0, S("")); + test(S(""), 0, 0, str, str + 1, S("1")); + test(S(""), 0, 0, str, str + 5, S("12345")); + test(S(""), 0, 0, str, str + 9, S("123456789")); + test(S(""), 0, 0, str, str + 10, S("1234567890")); + test(S(""), 0, 0, str, str + 0, S("")); + test(S(""), 0, 0, str, str + 1, S("1")); + test(S(""), 0, 0, str, str + 10, S("1234567890")); + test(S(""), 0, 0, str, str + 19, S("1234567890123456789")); + test(S(""), 0, 0, str, str + 20, S("12345678901234567890")); + test(S("abcde"), 0, 0, str, str + 0, S("abcde")); + test(S("abcde"), 0, 0, str, str + 0, S("abcde")); + test(S("abcde"), 0, 0, str, str + 1, S("1abcde")); + test(S("abcde"), 0, 0, str, str + 2, S("12abcde")); + test(S("abcde"), 0, 0, str, str + 4, S("1234abcde")); + test(S("abcde"), 0, 0, str, str + 5, S("12345abcde")); + test(S("abcde"), 0, 0, str, str + 0, S("abcde")); + test(S("abcde"), 0, 0, str, str + 1, S("1abcde")); + test(S("abcde"), 0, 0, str, str + 5, S("12345abcde")); + test(S("abcde"), 0, 0, str, str + 9, S("123456789abcde")); + test(S("abcde"), 0, 0, str, str + 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, str, str + 0, S("abcde")); + test(S("abcde"), 0, 0, str, str + 1, S("1abcde")); + test(S("abcde"), 0, 0, str, str + 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, str, str + 19, S("1234567890123456789abcde")); + test(S("abcde"), 0, 0, str, str + 20, S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, str, str + 0, S("bcde")); + test(S("abcde"), 0, 1, str, str + 0, S("bcde")); + test(S("abcde"), 0, 1, str, str + 1, S("1bcde")); + test(S("abcde"), 0, 1, str, str + 2, S("12bcde")); + test(S("abcde"), 0, 1, str, str + 4, S("1234bcde")); + test(S("abcde"), 0, 1, str, str + 5, S("12345bcde")); + test(S("abcde"), 0, 1, str, str + 0, S("bcde")); + test(S("abcde"), 0, 1, str, str + 1, S("1bcde")); + test(S("abcde"), 0, 1, str, str + 5, S("12345bcde")); + test(S("abcde"), 0, 1, str, str + 9, S("123456789bcde")); + test(S("abcde"), 0, 1, str, str + 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, str, str + 0, S("bcde")); + test(S("abcde"), 0, 1, str, str + 1, S("1bcde")); + test(S("abcde"), 0, 1, str, str + 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, str, str + 19, S("1234567890123456789bcde")); + test(S("abcde"), 0, 1, str, str + 20, S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, str, str + 0, S("cde")); + test(S("abcde"), 0, 2, str, str + 0, S("cde")); + test(S("abcde"), 0, 2, str, str + 1, S("1cde")); + test(S("abcde"), 0, 2, str, str + 2, S("12cde")); + test(S("abcde"), 0, 2, str, str + 4, S("1234cde")); + test(S("abcde"), 0, 2, str, str + 5, S("12345cde")); + test(S("abcde"), 0, 2, str, str + 0, S("cde")); + test(S("abcde"), 0, 2, str, str + 1, S("1cde")); + test(S("abcde"), 0, 2, str, str + 5, S("12345cde")); + test(S("abcde"), 0, 2, str, str + 9, S("123456789cde")); + test(S("abcde"), 0, 2, str, str + 10, S("1234567890cde")); + test(S("abcde"), 0, 2, str, str + 0, S("cde")); + test(S("abcde"), 0, 2, str, str + 1, S("1cde")); + test(S("abcde"), 0, 2, str, str + 10, S("1234567890cde")); + test(S("abcde"), 0, 2, str, str + 19, S("1234567890123456789cde")); + test(S("abcde"), 0, 2, str, str + 20, S("12345678901234567890cde")); + test(S("abcde"), 0, 4, str, str + 0, S("e")); + test(S("abcde"), 0, 4, str, str + 0, S("e")); + test(S("abcde"), 0, 4, str, str + 1, S("1e")); + test(S("abcde"), 0, 4, str, str + 2, S("12e")); + test(S("abcde"), 0, 4, str, str + 4, S("1234e")); + test(S("abcde"), 0, 4, str, str + 5, S("12345e")); + test(S("abcde"), 0, 4, str, str + 0, S("e")); + test(S("abcde"), 0, 4, str, str + 1, S("1e")); + test(S("abcde"), 0, 4, str, str + 5, S("12345e")); + test(S("abcde"), 0, 4, str, str + 9, S("123456789e")); + test(S("abcde"), 0, 4, str, str + 10, S("1234567890e")); + test(S("abcde"), 0, 4, str, str + 0, S("e")); + test(S("abcde"), 0, 4, str, str + 1, S("1e")); + test(S("abcde"), 0, 4, str, str + 10, S("1234567890e")); + test(S("abcde"), 0, 4, str, str + 19, S("1234567890123456789e")); + test(S("abcde"), 0, 4, str, str + 20, S("12345678901234567890e")); + test(S("abcde"), 0, 5, str, str + 0, S("")); + test(S("abcde"), 0, 5, str, str + 0, S("")); + test(S("abcde"), 0, 5, str, str + 1, S("1")); + test(S("abcde"), 0, 5, str, str + 2, S("12")); + test(S("abcde"), 0, 5, str, str + 4, S("1234")); + test(S("abcde"), 0, 5, str, str + 5, S("12345")); + test(S("abcde"), 0, 5, str, str + 0, S("")); + test(S("abcde"), 0, 5, str, str + 1, S("1")); + test(S("abcde"), 0, 5, str, str + 5, S("12345")); + test(S("abcde"), 0, 5, str, str + 9, S("123456789")); + test(S("abcde"), 0, 5, str, str + 10, S("1234567890")); + test(S("abcde"), 0, 5, str, str + 0, S("")); + test(S("abcde"), 0, 5, str, str + 1, S("1")); + test(S("abcde"), 0, 5, str, str + 10, S("1234567890")); + test(S("abcde"), 0, 5, str, str + 19, S("1234567890123456789")); + test(S("abcde"), 0, 5, str, str + 20, S("12345678901234567890")); + test(S("abcde"), 1, 0, str, str + 0, S("abcde")); + test(S("abcde"), 1, 0, str, str + 0, S("abcde")); + test(S("abcde"), 1, 0, str, str + 1, S("a1bcde")); + test(S("abcde"), 1, 0, str, str + 2, S("a12bcde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcde"), 1, 0, str, str+4, S("a1234bcde")); - test(S("abcde"), 1, 0, str, str+5, S("a12345bcde")); - test(S("abcde"), 1, 0, str, str+0, S("abcde")); - test(S("abcde"), 1, 0, str, str+1, S("a1bcde")); - test(S("abcde"), 1, 0, str, str+5, S("a12345bcde")); - test(S("abcde"), 1, 0, str, str+9, S("a123456789bcde")); - test(S("abcde"), 1, 0, str, str+10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, str, str+0, S("abcde")); - test(S("abcde"), 1, 0, str, str+1, S("a1bcde")); - test(S("abcde"), 1, 0, str, str+10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, str, str+19, S("a1234567890123456789bcde")); - test(S("abcde"), 1, 0, str, str+20, S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, str, str+0, S("acde")); - test(S("abcde"), 1, 1, str, str+0, S("acde")); - test(S("abcde"), 1, 1, str, str+1, S("a1cde")); - test(S("abcde"), 1, 1, str, str+2, S("a12cde")); - test(S("abcde"), 1, 1, str, str+4, S("a1234cde")); - test(S("abcde"), 1, 1, str, str+5, S("a12345cde")); - test(S("abcde"), 1, 1, str, str+0, S("acde")); - test(S("abcde"), 1, 1, str, str+1, S("a1cde")); - test(S("abcde"), 1, 1, str, str+5, S("a12345cde")); - test(S("abcde"), 1, 1, str, str+9, S("a123456789cde")); - test(S("abcde"), 1, 1, str, str+10, S("a1234567890cde")); - test(S("abcde"), 1, 1, str, str+0, S("acde")); - test(S("abcde"), 1, 1, str, str+1, S("a1cde")); - test(S("abcde"), 1, 1, str, str+10, S("a1234567890cde")); - test(S("abcde"), 1, 1, str, str+19, S("a1234567890123456789cde")); - test(S("abcde"), 1, 1, str, str+20, S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, str, str+0, S("ade")); - test(S("abcde"), 1, 2, str, str+0, S("ade")); - test(S("abcde"), 1, 2, str, str+1, S("a1de")); - test(S("abcde"), 1, 2, str, str+2, S("a12de")); - test(S("abcde"), 1, 2, str, str+4, S("a1234de")); - test(S("abcde"), 1, 2, str, str+5, S("a12345de")); - test(S("abcde"), 1, 2, str, str+0, S("ade")); - test(S("abcde"), 1, 2, str, str+1, S("a1de")); - test(S("abcde"), 1, 2, str, str+5, S("a12345de")); - test(S("abcde"), 1, 2, str, str+9, S("a123456789de")); - test(S("abcde"), 1, 2, str, str+10, S("a1234567890de")); - test(S("abcde"), 1, 2, str, str+0, S("ade")); - test(S("abcde"), 1, 2, str, str+1, S("a1de")); - test(S("abcde"), 1, 2, str, str+10, S("a1234567890de")); - test(S("abcde"), 1, 2, str, str+19, S("a1234567890123456789de")); - test(S("abcde"), 1, 2, str, str+20, S("a12345678901234567890de")); - test(S("abcde"), 1, 3, str, str+0, S("ae")); - test(S("abcde"), 1, 3, str, str+0, S("ae")); - test(S("abcde"), 1, 3, str, str+1, S("a1e")); - test(S("abcde"), 1, 3, str, str+2, S("a12e")); - test(S("abcde"), 1, 3, str, str+4, S("a1234e")); - test(S("abcde"), 1, 3, str, str+5, S("a12345e")); - test(S("abcde"), 1, 3, str, str+0, S("ae")); - test(S("abcde"), 1, 3, str, str+1, S("a1e")); - test(S("abcde"), 1, 3, str, str+5, S("a12345e")); - test(S("abcde"), 1, 3, str, str+9, S("a123456789e")); - test(S("abcde"), 1, 3, str, str+10, S("a1234567890e")); - test(S("abcde"), 1, 3, str, str+0, S("ae")); - test(S("abcde"), 1, 3, str, str+1, S("a1e")); - test(S("abcde"), 1, 3, str, str+10, S("a1234567890e")); - test(S("abcde"), 1, 3, str, str+19, S("a1234567890123456789e")); - test(S("abcde"), 1, 3, str, str+20, S("a12345678901234567890e")); - test(S("abcde"), 1, 4, str, str+0, S("a")); - test(S("abcde"), 1, 4, str, str+0, S("a")); - test(S("abcde"), 1, 4, str, str+1, S("a1")); - test(S("abcde"), 1, 4, str, str+2, S("a12")); - test(S("abcde"), 1, 4, str, str+4, S("a1234")); - test(S("abcde"), 1, 4, str, str+5, S("a12345")); - test(S("abcde"), 1, 4, str, str+0, S("a")); - test(S("abcde"), 1, 4, str, str+1, S("a1")); - test(S("abcde"), 1, 4, str, str+5, S("a12345")); - test(S("abcde"), 1, 4, str, str+9, S("a123456789")); - test(S("abcde"), 1, 4, str, str+10, S("a1234567890")); - test(S("abcde"), 1, 4, str, str+0, S("a")); - test(S("abcde"), 1, 4, str, str+1, S("a1")); - test(S("abcde"), 1, 4, str, str+10, S("a1234567890")); - test(S("abcde"), 1, 4, str, str+19, S("a1234567890123456789")); - test(S("abcde"), 1, 4, str, str+20, S("a12345678901234567890")); - test(S("abcde"), 2, 0, str, str+0, S("abcde")); - test(S("abcde"), 2, 0, str, str+0, S("abcde")); - test(S("abcde"), 2, 0, str, str+1, S("ab1cde")); - test(S("abcde"), 2, 0, str, str+2, S("ab12cde")); - test(S("abcde"), 2, 0, str, str+4, S("ab1234cde")); - test(S("abcde"), 2, 0, str, str+5, S("ab12345cde")); - test(S("abcde"), 2, 0, str, str+0, S("abcde")); - test(S("abcde"), 2, 0, str, str+1, S("ab1cde")); - test(S("abcde"), 2, 0, str, str+5, S("ab12345cde")); - test(S("abcde"), 2, 0, str, str+9, S("ab123456789cde")); - test(S("abcde"), 2, 0, str, str+10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, str, str+0, S("abcde")); - test(S("abcde"), 2, 0, str, str+1, S("ab1cde")); - test(S("abcde"), 2, 0, str, str+10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, str, str+19, S("ab1234567890123456789cde")); - test(S("abcde"), 2, 0, str, str+20, S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, str, str+0, S("abde")); - test(S("abcde"), 2, 1, str, str+0, S("abde")); - test(S("abcde"), 2, 1, str, str+1, S("ab1de")); - test(S("abcde"), 2, 1, str, str+2, S("ab12de")); - test(S("abcde"), 2, 1, str, str+4, S("ab1234de")); - test(S("abcde"), 2, 1, str, str+5, S("ab12345de")); - test(S("abcde"), 2, 1, str, str+0, S("abde")); - test(S("abcde"), 2, 1, str, str+1, S("ab1de")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcde"), 1, 0, str, str + 4, S("a1234bcde")); + test(S("abcde"), 1, 0, str, str + 5, S("a12345bcde")); + test(S("abcde"), 1, 0, str, str + 0, S("abcde")); + test(S("abcde"), 1, 0, str, str + 1, S("a1bcde")); + test(S("abcde"), 1, 0, str, str + 5, S("a12345bcde")); + test(S("abcde"), 1, 0, str, str + 9, S("a123456789bcde")); + test(S("abcde"), 1, 0, str, str + 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, str, str + 0, S("abcde")); + test(S("abcde"), 1, 0, str, str + 1, S("a1bcde")); + test(S("abcde"), 1, 0, str, str + 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, str, str + 19, S("a1234567890123456789bcde")); + test(S("abcde"), 1, 0, str, str + 20, S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, str, str + 0, S("acde")); + test(S("abcde"), 1, 1, str, str + 0, S("acde")); + test(S("abcde"), 1, 1, str, str + 1, S("a1cde")); + test(S("abcde"), 1, 1, str, str + 2, S("a12cde")); + test(S("abcde"), 1, 1, str, str + 4, S("a1234cde")); + test(S("abcde"), 1, 1, str, str + 5, S("a12345cde")); + test(S("abcde"), 1, 1, str, str + 0, S("acde")); + test(S("abcde"), 1, 1, str, str + 1, S("a1cde")); + test(S("abcde"), 1, 1, str, str + 5, S("a12345cde")); + test(S("abcde"), 1, 1, str, str + 9, S("a123456789cde")); + test(S("abcde"), 1, 1, str, str + 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, str, str + 0, S("acde")); + test(S("abcde"), 1, 1, str, str + 1, S("a1cde")); + test(S("abcde"), 1, 1, str, str + 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, str, str + 19, S("a1234567890123456789cde")); + test(S("abcde"), 1, 1, str, str + 20, S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, str, str + 0, S("ade")); + test(S("abcde"), 1, 2, str, str + 0, S("ade")); + test(S("abcde"), 1, 2, str, str + 1, S("a1de")); + test(S("abcde"), 1, 2, str, str + 2, S("a12de")); + test(S("abcde"), 1, 2, str, str + 4, S("a1234de")); + test(S("abcde"), 1, 2, str, str + 5, S("a12345de")); + test(S("abcde"), 1, 2, str, str + 0, S("ade")); + test(S("abcde"), 1, 2, str, str + 1, S("a1de")); + test(S("abcde"), 1, 2, str, str + 5, S("a12345de")); + test(S("abcde"), 1, 2, str, str + 9, S("a123456789de")); + test(S("abcde"), 1, 2, str, str + 10, S("a1234567890de")); + test(S("abcde"), 1, 2, str, str + 0, S("ade")); + test(S("abcde"), 1, 2, str, str + 1, S("a1de")); + test(S("abcde"), 1, 2, str, str + 10, S("a1234567890de")); + test(S("abcde"), 1, 2, str, str + 19, S("a1234567890123456789de")); + test(S("abcde"), 1, 2, str, str + 20, S("a12345678901234567890de")); + test(S("abcde"), 1, 3, str, str + 0, S("ae")); + test(S("abcde"), 1, 3, str, str + 0, S("ae")); + test(S("abcde"), 1, 3, str, str + 1, S("a1e")); + test(S("abcde"), 1, 3, str, str + 2, S("a12e")); + test(S("abcde"), 1, 3, str, str + 4, S("a1234e")); + test(S("abcde"), 1, 3, str, str + 5, S("a12345e")); + test(S("abcde"), 1, 3, str, str + 0, S("ae")); + test(S("abcde"), 1, 3, str, str + 1, S("a1e")); + test(S("abcde"), 1, 3, str, str + 5, S("a12345e")); + test(S("abcde"), 1, 3, str, str + 9, S("a123456789e")); + test(S("abcde"), 1, 3, str, str + 10, S("a1234567890e")); + test(S("abcde"), 1, 3, str, str + 0, S("ae")); + test(S("abcde"), 1, 3, str, str + 1, S("a1e")); + test(S("abcde"), 1, 3, str, str + 10, S("a1234567890e")); + test(S("abcde"), 1, 3, str, str + 19, S("a1234567890123456789e")); + test(S("abcde"), 1, 3, str, str + 20, S("a12345678901234567890e")); + test(S("abcde"), 1, 4, str, str + 0, S("a")); + test(S("abcde"), 1, 4, str, str + 0, S("a")); + test(S("abcde"), 1, 4, str, str + 1, S("a1")); + test(S("abcde"), 1, 4, str, str + 2, S("a12")); + test(S("abcde"), 1, 4, str, str + 4, S("a1234")); + test(S("abcde"), 1, 4, str, str + 5, S("a12345")); + test(S("abcde"), 1, 4, str, str + 0, S("a")); + test(S("abcde"), 1, 4, str, str + 1, S("a1")); + test(S("abcde"), 1, 4, str, str + 5, S("a12345")); + test(S("abcde"), 1, 4, str, str + 9, S("a123456789")); + test(S("abcde"), 1, 4, str, str + 10, S("a1234567890")); + test(S("abcde"), 1, 4, str, str + 0, S("a")); + test(S("abcde"), 1, 4, str, str + 1, S("a1")); + test(S("abcde"), 1, 4, str, str + 10, S("a1234567890")); + test(S("abcde"), 1, 4, str, str + 19, S("a1234567890123456789")); + test(S("abcde"), 1, 4, str, str + 20, S("a12345678901234567890")); + test(S("abcde"), 2, 0, str, str + 0, S("abcde")); + test(S("abcde"), 2, 0, str, str + 0, S("abcde")); + test(S("abcde"), 2, 0, str, str + 1, S("ab1cde")); + test(S("abcde"), 2, 0, str, str + 2, S("ab12cde")); + test(S("abcde"), 2, 0, str, str + 4, S("ab1234cde")); + test(S("abcde"), 2, 0, str, str + 5, S("ab12345cde")); + test(S("abcde"), 2, 0, str, str + 0, S("abcde")); + test(S("abcde"), 2, 0, str, str + 1, S("ab1cde")); + test(S("abcde"), 2, 0, str, str + 5, S("ab12345cde")); + test(S("abcde"), 2, 0, str, str + 9, S("ab123456789cde")); + test(S("abcde"), 2, 0, str, str + 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, str, str + 0, S("abcde")); + test(S("abcde"), 2, 0, str, str + 1, S("ab1cde")); + test(S("abcde"), 2, 0, str, str + 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, str, str + 19, S("ab1234567890123456789cde")); + test(S("abcde"), 2, 0, str, str + 20, S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, str, str + 0, S("abde")); + test(S("abcde"), 2, 1, str, str + 0, S("abde")); + test(S("abcde"), 2, 1, str, str + 1, S("ab1de")); + test(S("abcde"), 2, 1, str, str + 2, S("ab12de")); + test(S("abcde"), 2, 1, str, str + 4, S("ab1234de")); + test(S("abcde"), 2, 1, str, str + 5, S("ab12345de")); + test(S("abcde"), 2, 1, str, str + 0, S("abde")); + test(S("abcde"), 2, 1, str, str + 1, S("ab1de")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcde"), 2, 1, str, str+5, S("ab12345de")); - test(S("abcde"), 2, 1, str, str+9, S("ab123456789de")); - test(S("abcde"), 2, 1, str, str+10, S("ab1234567890de")); - test(S("abcde"), 2, 1, str, str+0, S("abde")); - test(S("abcde"), 2, 1, str, str+1, S("ab1de")); - test(S("abcde"), 2, 1, str, str+10, S("ab1234567890de")); - test(S("abcde"), 2, 1, str, str+19, S("ab1234567890123456789de")); - test(S("abcde"), 2, 1, str, str+20, S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, str, str+0, S("abe")); - test(S("abcde"), 2, 2, str, str+0, S("abe")); - test(S("abcde"), 2, 2, str, str+1, S("ab1e")); - test(S("abcde"), 2, 2, str, str+2, S("ab12e")); - test(S("abcde"), 2, 2, str, str+4, S("ab1234e")); - test(S("abcde"), 2, 2, str, str+5, S("ab12345e")); - test(S("abcde"), 2, 2, str, str+0, S("abe")); - test(S("abcde"), 2, 2, str, str+1, S("ab1e")); - test(S("abcde"), 2, 2, str, str+5, S("ab12345e")); - test(S("abcde"), 2, 2, str, str+9, S("ab123456789e")); - test(S("abcde"), 2, 2, str, str+10, S("ab1234567890e")); - test(S("abcde"), 2, 2, str, str+0, S("abe")); - test(S("abcde"), 2, 2, str, str+1, S("ab1e")); - test(S("abcde"), 2, 2, str, str+10, S("ab1234567890e")); - test(S("abcde"), 2, 2, str, str+19, S("ab1234567890123456789e")); - test(S("abcde"), 2, 2, str, str+20, S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, str, str+0, S("ab")); - test(S("abcde"), 2, 3, str, str+0, S("ab")); - test(S("abcde"), 2, 3, str, str+1, S("ab1")); - test(S("abcde"), 2, 3, str, str+2, S("ab12")); - test(S("abcde"), 2, 3, str, str+4, S("ab1234")); - test(S("abcde"), 2, 3, str, str+5, S("ab12345")); - test(S("abcde"), 2, 3, str, str+0, S("ab")); - test(S("abcde"), 2, 3, str, str+1, S("ab1")); - test(S("abcde"), 2, 3, str, str+5, S("ab12345")); - test(S("abcde"), 2, 3, str, str+9, S("ab123456789")); - test(S("abcde"), 2, 3, str, str+10, S("ab1234567890")); - test(S("abcde"), 2, 3, str, str+0, S("ab")); - test(S("abcde"), 2, 3, str, str+1, S("ab1")); - test(S("abcde"), 2, 3, str, str+10, S("ab1234567890")); - test(S("abcde"), 2, 3, str, str+19, S("ab1234567890123456789")); - test(S("abcde"), 2, 3, str, str+20, S("ab12345678901234567890")); - test(S("abcde"), 4, 0, str, str+0, S("abcde")); - test(S("abcde"), 4, 0, str, str+0, S("abcde")); - test(S("abcde"), 4, 0, str, str+1, S("abcd1e")); - test(S("abcde"), 4, 0, str, str+2, S("abcd12e")); - test(S("abcde"), 4, 0, str, str+4, S("abcd1234e")); - test(S("abcde"), 4, 0, str, str+5, S("abcd12345e")); - test(S("abcde"), 4, 0, str, str+0, S("abcde")); - test(S("abcde"), 4, 0, str, str+1, S("abcd1e")); - test(S("abcde"), 4, 0, str, str+5, S("abcd12345e")); - test(S("abcde"), 4, 0, str, str+9, S("abcd123456789e")); - test(S("abcde"), 4, 0, str, str+10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, str, str+0, S("abcde")); - test(S("abcde"), 4, 0, str, str+1, S("abcd1e")); - test(S("abcde"), 4, 0, str, str+10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, str, str+19, S("abcd1234567890123456789e")); - test(S("abcde"), 4, 0, str, str+20, S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, str, str+0, S("abcd")); - test(S("abcde"), 4, 1, str, str+0, S("abcd")); - test(S("abcde"), 4, 1, str, str+1, S("abcd1")); - test(S("abcde"), 4, 1, str, str+2, S("abcd12")); - test(S("abcde"), 4, 1, str, str+4, S("abcd1234")); - test(S("abcde"), 4, 1, str, str+5, S("abcd12345")); - test(S("abcde"), 4, 1, str, str+0, S("abcd")); - test(S("abcde"), 4, 1, str, str+1, S("abcd1")); - test(S("abcde"), 4, 1, str, str+5, S("abcd12345")); - test(S("abcde"), 4, 1, str, str+9, S("abcd123456789")); - test(S("abcde"), 4, 1, str, str+10, S("abcd1234567890")); - test(S("abcde"), 4, 1, str, str+0, S("abcd")); - test(S("abcde"), 4, 1, str, str+1, S("abcd1")); - test(S("abcde"), 4, 1, str, str+10, S("abcd1234567890")); - test(S("abcde"), 4, 1, str, str+19, S("abcd1234567890123456789")); - test(S("abcde"), 4, 1, str, str+20, S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, str, str+0, S("abcde")); - test(S("abcde"), 5, 0, str, str+0, S("abcde")); - test(S("abcde"), 5, 0, str, str+1, S("abcde1")); - test(S("abcde"), 5, 0, str, str+2, S("abcde12")); - test(S("abcde"), 5, 0, str, str+4, S("abcde1234")); - test(S("abcde"), 5, 0, str, str+5, S("abcde12345")); - test(S("abcde"), 5, 0, str, str+0, S("abcde")); - test(S("abcde"), 5, 0, str, str+1, S("abcde1")); - test(S("abcde"), 5, 0, str, str+5, S("abcde12345")); - test(S("abcde"), 5, 0, str, str+9, S("abcde123456789")); - test(S("abcde"), 5, 0, str, str+10, S("abcde1234567890")); - test(S("abcde"), 5, 0, str, str+0, S("abcde")); - test(S("abcde"), 5, 0, str, str+1, S("abcde1")); - test(S("abcde"), 5, 0, str, str+10, S("abcde1234567890")); - test(S("abcde"), 5, 0, str, str+19, S("abcde1234567890123456789")); - test(S("abcde"), 5, 0, str, str+20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 0, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+2, S("12abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+4, S("1234abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+0, S("abcdefghij")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcde"), 2, 1, str, str + 5, S("ab12345de")); + test(S("abcde"), 2, 1, str, str + 9, S("ab123456789de")); + test(S("abcde"), 2, 1, str, str + 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, str, str + 0, S("abde")); + test(S("abcde"), 2, 1, str, str + 1, S("ab1de")); + test(S("abcde"), 2, 1, str, str + 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, str, str + 19, S("ab1234567890123456789de")); + test(S("abcde"), 2, 1, str, str + 20, S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, str, str + 0, S("abe")); + test(S("abcde"), 2, 2, str, str + 0, S("abe")); + test(S("abcde"), 2, 2, str, str + 1, S("ab1e")); + test(S("abcde"), 2, 2, str, str + 2, S("ab12e")); + test(S("abcde"), 2, 2, str, str + 4, S("ab1234e")); + test(S("abcde"), 2, 2, str, str + 5, S("ab12345e")); + test(S("abcde"), 2, 2, str, str + 0, S("abe")); + test(S("abcde"), 2, 2, str, str + 1, S("ab1e")); + test(S("abcde"), 2, 2, str, str + 5, S("ab12345e")); + test(S("abcde"), 2, 2, str, str + 9, S("ab123456789e")); + test(S("abcde"), 2, 2, str, str + 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, str, str + 0, S("abe")); + test(S("abcde"), 2, 2, str, str + 1, S("ab1e")); + test(S("abcde"), 2, 2, str, str + 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, str, str + 19, S("ab1234567890123456789e")); + test(S("abcde"), 2, 2, str, str + 20, S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, str, str + 0, S("ab")); + test(S("abcde"), 2, 3, str, str + 0, S("ab")); + test(S("abcde"), 2, 3, str, str + 1, S("ab1")); + test(S("abcde"), 2, 3, str, str + 2, S("ab12")); + test(S("abcde"), 2, 3, str, str + 4, S("ab1234")); + test(S("abcde"), 2, 3, str, str + 5, S("ab12345")); + test(S("abcde"), 2, 3, str, str + 0, S("ab")); + test(S("abcde"), 2, 3, str, str + 1, S("ab1")); + test(S("abcde"), 2, 3, str, str + 5, S("ab12345")); + test(S("abcde"), 2, 3, str, str + 9, S("ab123456789")); + test(S("abcde"), 2, 3, str, str + 10, S("ab1234567890")); + test(S("abcde"), 2, 3, str, str + 0, S("ab")); + test(S("abcde"), 2, 3, str, str + 1, S("ab1")); + test(S("abcde"), 2, 3, str, str + 10, S("ab1234567890")); + test(S("abcde"), 2, 3, str, str + 19, S("ab1234567890123456789")); + test(S("abcde"), 2, 3, str, str + 20, S("ab12345678901234567890")); + test(S("abcde"), 4, 0, str, str + 0, S("abcde")); + test(S("abcde"), 4, 0, str, str + 0, S("abcde")); + test(S("abcde"), 4, 0, str, str + 1, S("abcd1e")); + test(S("abcde"), 4, 0, str, str + 2, S("abcd12e")); + test(S("abcde"), 4, 0, str, str + 4, S("abcd1234e")); + test(S("abcde"), 4, 0, str, str + 5, S("abcd12345e")); + test(S("abcde"), 4, 0, str, str + 0, S("abcde")); + test(S("abcde"), 4, 0, str, str + 1, S("abcd1e")); + test(S("abcde"), 4, 0, str, str + 5, S("abcd12345e")); + test(S("abcde"), 4, 0, str, str + 9, S("abcd123456789e")); + test(S("abcde"), 4, 0, str, str + 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, str, str + 0, S("abcde")); + test(S("abcde"), 4, 0, str, str + 1, S("abcd1e")); + test(S("abcde"), 4, 0, str, str + 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, str, str + 19, S("abcd1234567890123456789e")); + test(S("abcde"), 4, 0, str, str + 20, S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, str, str + 0, S("abcd")); + test(S("abcde"), 4, 1, str, str + 0, S("abcd")); + test(S("abcde"), 4, 1, str, str + 1, S("abcd1")); + test(S("abcde"), 4, 1, str, str + 2, S("abcd12")); + test(S("abcde"), 4, 1, str, str + 4, S("abcd1234")); + test(S("abcde"), 4, 1, str, str + 5, S("abcd12345")); + test(S("abcde"), 4, 1, str, str + 0, S("abcd")); + test(S("abcde"), 4, 1, str, str + 1, S("abcd1")); + test(S("abcde"), 4, 1, str, str + 5, S("abcd12345")); + test(S("abcde"), 4, 1, str, str + 9, S("abcd123456789")); + test(S("abcde"), 4, 1, str, str + 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, str, str + 0, S("abcd")); + test(S("abcde"), 4, 1, str, str + 1, S("abcd1")); + test(S("abcde"), 4, 1, str, str + 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, str, str + 19, S("abcd1234567890123456789")); + test(S("abcde"), 4, 1, str, str + 20, S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, str, str + 0, S("abcde")); + test(S("abcde"), 5, 0, str, str + 0, S("abcde")); + test(S("abcde"), 5, 0, str, str + 1, S("abcde1")); + test(S("abcde"), 5, 0, str, str + 2, S("abcde12")); + test(S("abcde"), 5, 0, str, str + 4, S("abcde1234")); + test(S("abcde"), 5, 0, str, str + 5, S("abcde12345")); + test(S("abcde"), 5, 0, str, str + 0, S("abcde")); + test(S("abcde"), 5, 0, str, str + 1, S("abcde1")); + test(S("abcde"), 5, 0, str, str + 5, S("abcde12345")); + test(S("abcde"), 5, 0, str, str + 9, S("abcde123456789")); + test(S("abcde"), 5, 0, str, str + 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, str, str + 0, S("abcde")); + test(S("abcde"), 5, 0, str, str + 1, S("abcde1")); + test(S("abcde"), 5, 0, str, str + 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, str, str + 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, 0, str, str + 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 0, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 2, S("12abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 4, S("1234abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 0, S("abcdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcdefghij"), 0, 0, str, str+1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+19, S("1234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, str, str+20, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+2, S("12bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+4, S("1234bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+9, S("123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+19, S("1234567890123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, str, str+20, S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, str, str+0, S("fghij")); - test(S("abcdefghij"), 0, 5, str, str+0, S("fghij")); - test(S("abcdefghij"), 0, 5, str, str+1, S("1fghij")); - test(S("abcdefghij"), 0, 5, str, str+2, S("12fghij")); - test(S("abcdefghij"), 0, 5, str, str+4, S("1234fghij")); - test(S("abcdefghij"), 0, 5, str, str+5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, str, str+0, S("fghij")); - test(S("abcdefghij"), 0, 5, str, str+1, S("1fghij")); - test(S("abcdefghij"), 0, 5, str, str+5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, str, str+9, S("123456789fghij")); - test(S("abcdefghij"), 0, 5, str, str+10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, str, str+0, S("fghij")); - test(S("abcdefghij"), 0, 5, str, str+1, S("1fghij")); - test(S("abcdefghij"), 0, 5, str, str+10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, str, str+19, S("1234567890123456789fghij")); - test(S("abcdefghij"), 0, 5, str, str+20, S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, str, str+0, S("j")); - test(S("abcdefghij"), 0, 9, str, str+0, S("j")); - test(S("abcdefghij"), 0, 9, str, str+1, S("1j")); - test(S("abcdefghij"), 0, 9, str, str+2, S("12j")); - test(S("abcdefghij"), 0, 9, str, str+4, S("1234j")); - test(S("abcdefghij"), 0, 9, str, str+5, S("12345j")); - test(S("abcdefghij"), 0, 9, str, str+0, S("j")); - test(S("abcdefghij"), 0, 9, str, str+1, S("1j")); - test(S("abcdefghij"), 0, 9, str, str+5, S("12345j")); - test(S("abcdefghij"), 0, 9, str, str+9, S("123456789j")); - test(S("abcdefghij"), 0, 9, str, str+10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, str, str+0, S("j")); - test(S("abcdefghij"), 0, 9, str, str+1, S("1j")); - test(S("abcdefghij"), 0, 9, str, str+10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, str, str+19, S("1234567890123456789j")); - test(S("abcdefghij"), 0, 9, str, str+20, S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, str, str+0, S("")); - test(S("abcdefghij"), 0, 10, str, str+0, S("")); - test(S("abcdefghij"), 0, 10, str, str+1, S("1")); - test(S("abcdefghij"), 0, 10, str, str+2, S("12")); - test(S("abcdefghij"), 0, 10, str, str+4, S("1234")); - test(S("abcdefghij"), 0, 10, str, str+5, S("12345")); - test(S("abcdefghij"), 0, 10, str, str+0, S("")); - test(S("abcdefghij"), 0, 10, str, str+1, S("1")); - test(S("abcdefghij"), 0, 10, str, str+5, S("12345")); - test(S("abcdefghij"), 0, 10, str, str+9, S("123456789")); - test(S("abcdefghij"), 0, 10, str, str+10, S("1234567890")); - test(S("abcdefghij"), 0, 10, str, str+0, S("")); - test(S("abcdefghij"), 0, 10, str, str+1, S("1")); - test(S("abcdefghij"), 0, 10, str, str+10, S("1234567890")); - test(S("abcdefghij"), 0, 10, str, str+19, S("1234567890123456789")); - test(S("abcdefghij"), 0, 10, str, str+20, S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+2, S("a12bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+4, S("a1234bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+19, S("a1234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, str, str+20, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, str, str+0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, str, str+0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, str, str+1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+2, S("a12cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+4, S("a1234cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, str, str+1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+9, S("a123456789cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, str, str+1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+19, S("a1234567890123456789cdefghij")); - test(S("abcdefghij"), 1, 1, str, str+20, S("a12345678901234567890cdefghij")); +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcdefghij"), 0, 0, str, str + 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 19, S("1234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, str, str + 20, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 2, S("12bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 4, S("1234bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 9, S("123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 19, S("1234567890123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, str, str + 20, S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, str, str + 0, S("fghij")); + test(S("abcdefghij"), 0, 5, str, str + 0, S("fghij")); + test(S("abcdefghij"), 0, 5, str, str + 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, str, str + 2, S("12fghij")); + test(S("abcdefghij"), 0, 5, str, str + 4, S("1234fghij")); + test(S("abcdefghij"), 0, 5, str, str + 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, str, str + 0, S("fghij")); + test(S("abcdefghij"), 0, 5, str, str + 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, str, str + 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, str, str + 9, S("123456789fghij")); + test(S("abcdefghij"), 0, 5, str, str + 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, str, str + 0, S("fghij")); + test(S("abcdefghij"), 0, 5, str, str + 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, str, str + 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, str, str + 19, S("1234567890123456789fghij")); + test(S("abcdefghij"), 0, 5, str, str + 20, S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, str, str + 0, S("j")); + test(S("abcdefghij"), 0, 9, str, str + 0, S("j")); + test(S("abcdefghij"), 0, 9, str, str + 1, S("1j")); + test(S("abcdefghij"), 0, 9, str, str + 2, S("12j")); + test(S("abcdefghij"), 0, 9, str, str + 4, S("1234j")); + test(S("abcdefghij"), 0, 9, str, str + 5, S("12345j")); + test(S("abcdefghij"), 0, 9, str, str + 0, S("j")); + test(S("abcdefghij"), 0, 9, str, str + 1, S("1j")); + test(S("abcdefghij"), 0, 9, str, str + 5, S("12345j")); + test(S("abcdefghij"), 0, 9, str, str + 9, S("123456789j")); + test(S("abcdefghij"), 0, 9, str, str + 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, str, str + 0, S("j")); + test(S("abcdefghij"), 0, 9, str, str + 1, S("1j")); + test(S("abcdefghij"), 0, 9, str, str + 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, str, str + 19, S("1234567890123456789j")); + test(S("abcdefghij"), 0, 9, str, str + 20, S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, str, str + 0, S("")); + test(S("abcdefghij"), 0, 10, str, str + 0, S("")); + test(S("abcdefghij"), 0, 10, str, str + 1, S("1")); + test(S("abcdefghij"), 0, 10, str, str + 2, S("12")); + test(S("abcdefghij"), 0, 10, str, str + 4, S("1234")); + test(S("abcdefghij"), 0, 10, str, str + 5, S("12345")); + test(S("abcdefghij"), 0, 10, str, str + 0, S("")); + test(S("abcdefghij"), 0, 10, str, str + 1, S("1")); + test(S("abcdefghij"), 0, 10, str, str + 5, S("12345")); + test(S("abcdefghij"), 0, 10, str, str + 9, S("123456789")); + test(S("abcdefghij"), 0, 10, str, str + 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, str, str + 0, S("")); + test(S("abcdefghij"), 0, 10, str, str + 1, S("1")); + test(S("abcdefghij"), 0, 10, str, str + 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, str, str + 19, S("1234567890123456789")); + test(S("abcdefghij"), 0, 10, str, str + 20, S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 2, S("a12bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 4, S("a1234bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 19, S("a1234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, str, str + 20, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 2, S("a12cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 4, S("a1234cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 9, S("a123456789cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 19, S("a1234567890123456789cdefghij")); + test(S("abcdefghij"), 1, 1, str, str + 20, S("a12345678901234567890cdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcdefghij"), 1, 4, str, str+0, S("afghij")); - test(S("abcdefghij"), 1, 4, str, str+0, S("afghij")); - test(S("abcdefghij"), 1, 4, str, str+1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, str, str+2, S("a12fghij")); - test(S("abcdefghij"), 1, 4, str, str+4, S("a1234fghij")); - test(S("abcdefghij"), 1, 4, str, str+5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, str, str+0, S("afghij")); - test(S("abcdefghij"), 1, 4, str, str+1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, str, str+5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, str, str+9, S("a123456789fghij")); - test(S("abcdefghij"), 1, 4, str, str+10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, str, str+0, S("afghij")); - test(S("abcdefghij"), 1, 4, str, str+1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, str, str+10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, str, str+19, S("a1234567890123456789fghij")); - test(S("abcdefghij"), 1, 4, str, str+20, S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, str, str+0, S("aj")); - test(S("abcdefghij"), 1, 8, str, str+0, S("aj")); - test(S("abcdefghij"), 1, 8, str, str+1, S("a1j")); - test(S("abcdefghij"), 1, 8, str, str+2, S("a12j")); - test(S("abcdefghij"), 1, 8, str, str+4, S("a1234j")); - test(S("abcdefghij"), 1, 8, str, str+5, S("a12345j")); - test(S("abcdefghij"), 1, 8, str, str+0, S("aj")); - test(S("abcdefghij"), 1, 8, str, str+1, S("a1j")); - test(S("abcdefghij"), 1, 8, str, str+5, S("a12345j")); - test(S("abcdefghij"), 1, 8, str, str+9, S("a123456789j")); - test(S("abcdefghij"), 1, 8, str, str+10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, str, str+0, S("aj")); - test(S("abcdefghij"), 1, 8, str, str+1, S("a1j")); - test(S("abcdefghij"), 1, 8, str, str+10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, str, str+19, S("a1234567890123456789j")); - test(S("abcdefghij"), 1, 8, str, str+20, S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, str, str+0, S("a")); - test(S("abcdefghij"), 1, 9, str, str+0, S("a")); - test(S("abcdefghij"), 1, 9, str, str+1, S("a1")); - test(S("abcdefghij"), 1, 9, str, str+2, S("a12")); - test(S("abcdefghij"), 1, 9, str, str+4, S("a1234")); - test(S("abcdefghij"), 1, 9, str, str+5, S("a12345")); - test(S("abcdefghij"), 1, 9, str, str+0, S("a")); - test(S("abcdefghij"), 1, 9, str, str+1, S("a1")); - test(S("abcdefghij"), 1, 9, str, str+5, S("a12345")); - test(S("abcdefghij"), 1, 9, str, str+9, S("a123456789")); - test(S("abcdefghij"), 1, 9, str, str+10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, str, str+0, S("a")); - test(S("abcdefghij"), 1, 9, str, str+1, S("a1")); - test(S("abcdefghij"), 1, 9, str, str+10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, str, str+19, S("a1234567890123456789")); - test(S("abcdefghij"), 1, 9, str, str+20, S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, str, str+1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, str, str+2, S("abcde12fghij")); - test(S("abcdefghij"), 5, 0, str, str+4, S("abcde1234fghij")); - test(S("abcdefghij"), 5, 0, str, str+5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, str, str+1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, str, str+5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, str, str+9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, 0, str, str+10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, str, str+1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, str, str+10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, str, str+19, S("abcde1234567890123456789fghij")); - test(S("abcdefghij"), 5, 0, str, str+20, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, str, str+0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, str, str+0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, str, str+1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, str, str+2, S("abcde12ghij")); - test(S("abcdefghij"), 5, 1, str, str+4, S("abcde1234ghij")); - test(S("abcdefghij"), 5, 1, str, str+5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, str, str+0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, str, str+1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, str, str+5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, str, str+9, S("abcde123456789ghij")); - test(S("abcdefghij"), 5, 1, str, str+10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, str, str+0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, str, str+1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, str, str+10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, str, str+19, S("abcde1234567890123456789ghij")); - test(S("abcdefghij"), 5, 1, str, str+20, S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, str, str+0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, str, str+0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, str, str+1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, str, str+2, S("abcde12hij")); - test(S("abcdefghij"), 5, 2, str, str+4, S("abcde1234hij")); - test(S("abcdefghij"), 5, 2, str, str+5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, str, str+0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, str, str+1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, str, str+5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, str, str+9, S("abcde123456789hij")); - test(S("abcdefghij"), 5, 2, str, str+10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, str, str+0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, str, str+1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, str, str+10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, str, str+19, S("abcde1234567890123456789hij")); - test(S("abcdefghij"), 5, 2, str, str+20, S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, str, str+0, S("abcdej")); - test(S("abcdefghij"), 5, 4, str, str+0, S("abcdej")); - test(S("abcdefghij"), 5, 4, str, str+1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, str, str+2, S("abcde12j")); +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcdefghij"), 1, 4, str, str + 0, S("afghij")); + test(S("abcdefghij"), 1, 4, str, str + 0, S("afghij")); + test(S("abcdefghij"), 1, 4, str, str + 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, str, str + 2, S("a12fghij")); + test(S("abcdefghij"), 1, 4, str, str + 4, S("a1234fghij")); + test(S("abcdefghij"), 1, 4, str, str + 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, str, str + 0, S("afghij")); + test(S("abcdefghij"), 1, 4, str, str + 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, str, str + 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, str, str + 9, S("a123456789fghij")); + test(S("abcdefghij"), 1, 4, str, str + 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, str, str + 0, S("afghij")); + test(S("abcdefghij"), 1, 4, str, str + 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, str, str + 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, str, str + 19, S("a1234567890123456789fghij")); + test(S("abcdefghij"), 1, 4, str, str + 20, S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, str, str + 0, S("aj")); + test(S("abcdefghij"), 1, 8, str, str + 0, S("aj")); + test(S("abcdefghij"), 1, 8, str, str + 1, S("a1j")); + test(S("abcdefghij"), 1, 8, str, str + 2, S("a12j")); + test(S("abcdefghij"), 1, 8, str, str + 4, S("a1234j")); + test(S("abcdefghij"), 1, 8, str, str + 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, str, str + 0, S("aj")); + test(S("abcdefghij"), 1, 8, str, str + 1, S("a1j")); + test(S("abcdefghij"), 1, 8, str, str + 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, str, str + 9, S("a123456789j")); + test(S("abcdefghij"), 1, 8, str, str + 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, str, str + 0, S("aj")); + test(S("abcdefghij"), 1, 8, str, str + 1, S("a1j")); + test(S("abcdefghij"), 1, 8, str, str + 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, str, str + 19, S("a1234567890123456789j")); + test(S("abcdefghij"), 1, 8, str, str + 20, S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, str, str + 0, S("a")); + test(S("abcdefghij"), 1, 9, str, str + 0, S("a")); + test(S("abcdefghij"), 1, 9, str, str + 1, S("a1")); + test(S("abcdefghij"), 1, 9, str, str + 2, S("a12")); + test(S("abcdefghij"), 1, 9, str, str + 4, S("a1234")); + test(S("abcdefghij"), 1, 9, str, str + 5, S("a12345")); + test(S("abcdefghij"), 1, 9, str, str + 0, S("a")); + test(S("abcdefghij"), 1, 9, str, str + 1, S("a1")); + test(S("abcdefghij"), 1, 9, str, str + 5, S("a12345")); + test(S("abcdefghij"), 1, 9, str, str + 9, S("a123456789")); + test(S("abcdefghij"), 1, 9, str, str + 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, str, str + 0, S("a")); + test(S("abcdefghij"), 1, 9, str, str + 1, S("a1")); + test(S("abcdefghij"), 1, 9, str, str + 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, str, str + 19, S("a1234567890123456789")); + test(S("abcdefghij"), 1, 9, str, str + 20, S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, str, str + 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, str, str + 2, S("abcde12fghij")); + test(S("abcdefghij"), 5, 0, str, str + 4, S("abcde1234fghij")); + test(S("abcdefghij"), 5, 0, str, str + 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, str, str + 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, str, str + 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, str, str + 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, 0, str, str + 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, str, str + 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, str, str + 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, str, str + 19, S("abcde1234567890123456789fghij")); + test(S("abcdefghij"), 5, 0, str, str + 20, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, str, str + 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, str, str + 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, str, str + 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, str, str + 2, S("abcde12ghij")); + test(S("abcdefghij"), 5, 1, str, str + 4, S("abcde1234ghij")); + test(S("abcdefghij"), 5, 1, str, str + 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, str, str + 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, str, str + 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, str, str + 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, str, str + 9, S("abcde123456789ghij")); + test(S("abcdefghij"), 5, 1, str, str + 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, str, str + 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, str, str + 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, str, str + 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, str, str + 19, S("abcde1234567890123456789ghij")); + test(S("abcdefghij"), 5, 1, str, str + 20, S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, str, str + 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, str, str + 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, str, str + 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, str, str + 2, S("abcde12hij")); + test(S("abcdefghij"), 5, 2, str, str + 4, S("abcde1234hij")); + test(S("abcdefghij"), 5, 2, str, str + 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, str, str + 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, str, str + 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, str, str + 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, str, str + 9, S("abcde123456789hij")); + test(S("abcdefghij"), 5, 2, str, str + 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, str, str + 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, str, str + 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, str, str + 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, str, str + 19, S("abcde1234567890123456789hij")); + test(S("abcdefghij"), 5, 2, str, str + 20, S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, str, str + 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, str, str + 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, str, str + 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, str, str + 2, S("abcde12j")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcdefghij"), 5, 4, str, str+4, S("abcde1234j")); - test(S("abcdefghij"), 5, 4, str, str+5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, str, str+0, S("abcdej")); - test(S("abcdefghij"), 5, 4, str, str+1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, str, str+5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, str, str+9, S("abcde123456789j")); - test(S("abcdefghij"), 5, 4, str, str+10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, str, str+0, S("abcdej")); - test(S("abcdefghij"), 5, 4, str, str+1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, str, str+10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, str, str+19, S("abcde1234567890123456789j")); - test(S("abcdefghij"), 5, 4, str, str+20, S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, str, str+0, S("abcde")); - test(S("abcdefghij"), 5, 5, str, str+0, S("abcde")); - test(S("abcdefghij"), 5, 5, str, str+1, S("abcde1")); - test(S("abcdefghij"), 5, 5, str, str+2, S("abcde12")); - test(S("abcdefghij"), 5, 5, str, str+4, S("abcde1234")); - test(S("abcdefghij"), 5, 5, str, str+5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, str, str+0, S("abcde")); - test(S("abcdefghij"), 5, 5, str, str+1, S("abcde1")); - test(S("abcdefghij"), 5, 5, str, str+5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, str, str+9, S("abcde123456789")); - test(S("abcdefghij"), 5, 5, str, str+10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, str, str+0, S("abcde")); - test(S("abcdefghij"), 5, 5, str, str+1, S("abcde1")); - test(S("abcdefghij"), 5, 5, str, str+10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, str, str+19, S("abcde1234567890123456789")); - test(S("abcdefghij"), 5, 5, str, str+20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, str, str+1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, str, str+2, S("abcdefghi12j")); - test(S("abcdefghij"), 9, 0, str, str+4, S("abcdefghi1234j")); - test(S("abcdefghij"), 9, 0, str, str+5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, str, str+1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, str, str+5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, str, str+9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, 0, str, str+10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, str, str+1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, str, str+10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, str, str+19, S("abcdefghi1234567890123456789j")); - test(S("abcdefghij"), 9, 0, str, str+20, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, str, str+0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, str, str+0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, str, str+1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, str, str+2, S("abcdefghi12")); - test(S("abcdefghij"), 9, 1, str, str+4, S("abcdefghi1234")); - test(S("abcdefghij"), 9, 1, str, str+5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, str, str+0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, str, str+1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, str, str+5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, str, str+9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 1, str, str+10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, str, str+0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, str, str+1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, str, str+10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, str, str+19, S("abcdefghi1234567890123456789")); - test(S("abcdefghij"), 9, 1, str, str+20, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, str, str+1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, str, str+2, S("abcdefghij12")); - test(S("abcdefghij"), 10, 0, str, str+4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, 0, str, str+5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, str, str+1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, str, str+5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, str, str+9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 0, str, str+10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, str, str+0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, str, str+1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, str, str+10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, str, str+19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, 0, str, str+20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+2, S("12abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+4, S("1234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+19, S("1234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, str, str+20, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+2, S("12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+4, S("1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+1, S("1bcdefghijklmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcdefghij"), 5, 4, str, str + 4, S("abcde1234j")); + test(S("abcdefghij"), 5, 4, str, str + 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, str, str + 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, str, str + 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, str, str + 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, str, str + 9, S("abcde123456789j")); + test(S("abcdefghij"), 5, 4, str, str + 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, str, str + 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, str, str + 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, str, str + 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, str, str + 19, S("abcde1234567890123456789j")); + test(S("abcdefghij"), 5, 4, str, str + 20, S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, str, str + 0, S("abcde")); + test(S("abcdefghij"), 5, 5, str, str + 0, S("abcde")); + test(S("abcdefghij"), 5, 5, str, str + 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, str, str + 2, S("abcde12")); + test(S("abcdefghij"), 5, 5, str, str + 4, S("abcde1234")); + test(S("abcdefghij"), 5, 5, str, str + 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, str, str + 0, S("abcde")); + test(S("abcdefghij"), 5, 5, str, str + 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, str, str + 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, str, str + 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 5, str, str + 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, str, str + 0, S("abcde")); + test(S("abcdefghij"), 5, 5, str, str + 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, str, str + 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, str, str + 19, S("abcde1234567890123456789")); + test(S("abcdefghij"), 5, 5, str, str + 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, str, str + 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, str, str + 2, S("abcdefghi12j")); + test(S("abcdefghij"), 9, 0, str, str + 4, S("abcdefghi1234j")); + test(S("abcdefghij"), 9, 0, str, str + 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, str, str + 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, str, str + 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, str, str + 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, 0, str, str + 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, str, str + 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, str, str + 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, str, str + 19, S("abcdefghi1234567890123456789j")); + test(S("abcdefghij"), 9, 0, str, str + 20, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, str, str + 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, str, str + 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, str, str + 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, str, str + 2, S("abcdefghi12")); + test(S("abcdefghij"), 9, 1, str, str + 4, S("abcdefghi1234")); + test(S("abcdefghij"), 9, 1, str, str + 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, str, str + 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, str, str + 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, str, str + 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, str, str + 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 1, str, str + 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, str, str + 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, str, str + 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, str, str + 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, str, str + 19, S("abcdefghi1234567890123456789")); + test(S("abcdefghij"), 9, 1, str, str + 20, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, str, str + 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, str, str + 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, 0, str, str + 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, 0, str, str + 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, str, str + 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, str, str + 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, str, str + 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 0, str, str + 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, str, str + 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, str, str + 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, str, str + 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, str, str + 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, 0, str, str + 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 2, S("12abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 4, S("1234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 19, S("1234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, str, str + 20, S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 2, S("12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 4, S("1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 1, S("1bcdefghijklmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+9, S("123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+19, S("1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, str, str+20, S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+2, S("12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+4, S("1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+9, S("123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+19, S("1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, str, str+20, S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+2, S("12t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+4, S("1234t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+9, S("123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+19, S("1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, str, str+20, S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+2, S("12")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+4, S("1234")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+19, S("1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, str, str+20, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+2, S("a12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+4, S("a1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+19, S("a1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, str, str+20, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+2, S("a12cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+4, S("a1234cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+9, S("a123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+19, S("a1234567890123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, str, str+20, S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+2, S("a12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+4, S("a1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+9, S("a123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+0, S("aklmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 9, S("123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 19, S("1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, str, str + 20, S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 2, S("12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 4, S("1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 9, S("123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 19, S("1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, str, str + 20, S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 2, S("12t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 4, S("1234t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 9, S("123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 19, S("1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, str, str + 20, S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 2, S("12")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 4, S("1234")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 19, S("1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, str, str + 20, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 2, S("a12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 4, S("a1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 19, S("a1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, str, str + 20, S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 2, S("a12cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 4, S("a1234cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 9, S("a123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 19, S("a1234567890123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, str, str + 20, S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 2, S("a12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 4, S("a1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 9, S("a123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 0, S("aklmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+19, S("a1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, str, str+20, S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+2, S("a12t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+4, S("a1234t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+9, S("a123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+19, S("a1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, str, str+20, S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+2, S("a12")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+4, S("a1234")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+19, S("a1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, str, str+20, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+2, S("abcdefghij12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+4, S("abcdefghij1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+19, S("abcdefghij1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, str, str+20, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+2, S("abcdefghij12lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+4, S("abcdefghij1234lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+9, S("abcdefghij123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+19, S("abcdefghij1234567890123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, str, str+20, S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+2, S("abcdefghij12pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+4, S("abcdefghij1234pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+9, S("abcdefghij123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+19, S("abcdefghij1234567890123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, str, str+20, S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+2, S("abcdefghij12t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+4, S("abcdefghij1234t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+9, S("abcdefghij123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+19, S("abcdefghij1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, str, str+20, S("abcdefghij12345678901234567890t")); +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 19, S("a1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, str, str + 20, S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 2, S("a12t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 4, S("a1234t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 9, S("a123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 19, S("a1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, str, str + 20, S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 2, S("a12")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 4, S("a1234")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 19, S("a1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, str, str + 20, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 2, S("abcdefghij12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 4, S("abcdefghij1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 19, S("abcdefghij1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, str, str + 20, S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 2, S("abcdefghij12lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 4, S("abcdefghij1234lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 9, S("abcdefghij123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 19, S("abcdefghij1234567890123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, str, str + 20, S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 2, S("abcdefghij12pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 4, S("abcdefghij1234pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 9, S("abcdefghij123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 19, S("abcdefghij1234567890123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, str, str + 20, S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 2, S("abcdefghij12t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 4, S("abcdefghij1234t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 9, S("abcdefghij123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 19, S("abcdefghij1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, str, str + 20, S("abcdefghij12345678901234567890t")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+2, S("abcdefghij12")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+4, S("abcdefghij1234")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+19, S("abcdefghij1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, str, str+20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+2, S("abcdefghijklmnopqrs12t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+4, S("abcdefghijklmnopqrs1234t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+19, S("abcdefghijklmnopqrs1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, str, str+20, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+2, S("abcdefghijklmnopqrs12")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+4, S("abcdefghijklmnopqrs1234")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+19, S("abcdefghijklmnopqrs1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, str, str+20, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, str, str+20, S("abcdefghijklmnopqrst12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 2, S("abcdefghij12")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 4, S("abcdefghij1234")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, str, str + 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 2, S("abcdefghijklmnopqrs12t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 4, S("abcdefghijklmnopqrs1234t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 19, S("abcdefghijklmnopqrs1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, str, str + 20, S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 2, S("abcdefghijklmnopqrs12")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 4, S("abcdefghijklmnopqrs1234")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 19, S("abcdefghijklmnopqrs1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, str, str + 20, S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 19, S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, str, str + 20, S("abcdefghijklmnopqrst12345678901234567890")); - return true; + return true; } template @@ -999,16 +989,16 @@ typedef ThrowingIterator TIter; typedef cpp17_input_iterator IIter; const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, IIter(TIter(s, s+10, 4, TIter::TAIncrement)), IIter(TIter())); - test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, IIter(TIter(s, s+10, 5, TIter::TADereference)), IIter(TIter())); - test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, IIter(TIter(s, s+10, 6, TIter::TAComparison)), IIter(TIter())); + test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, IIter(TIter(s, s + 10, 4, TIter::TAIncrement)), IIter(TIter())); + test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, IIter(TIter(s, s + 10, 5, TIter::TADereference)), IIter(TIter())); + test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, IIter(TIter(s, s + 10, 6, TIter::TAComparison)), IIter(TIter())); - test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, TIter(s, s+10, 4, TIter::TAIncrement), TIter()); - test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, TIter(s, s+10, 5, TIter::TADereference), TIter()); - test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, TIter(s, s+10, 6, TIter::TAComparison), TIter()); + test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, TIter(s, s + 10, 4, TIter::TAIncrement), TIter()); + test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, TIter(s, s + 10, 5, TIter::TADereference), TIter()); + test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, TIter(s, s + 10, 6, TIter::TAComparison), TIter()); Widget w[100]; - test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, w, w+100); + test_exceptions(S("abcdefghijklmnopqrst"), 10, 5, w, w + 100); } #endif @@ -1029,7 +1019,7 @@ { // test assigning a different type const std::uint8_t pc[] = "ABCD"; - std::uint8_t p[] = "EFGH"; + std::uint8_t p[] = "EFGH"; S s; s.replace(s.begin(), s.end(), pc, pc + 4); @@ -1070,8 +1060,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer.pass.cpp @@ -22,269 +22,265 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, const typename S::value_type* str, S expected) -{ - typename S::size_type old_size = s.size(); - typename S::const_iterator first = s.begin() + pos1; - typename S::const_iterator last = s.begin() + pos1 + n1; - typename S::size_type xlen = last - first; - s.replace(first, last, str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type rlen = S::traits_type::length(str); - assert(s.size() == old_size - xlen + rlen); +test(S s, typename S::size_type pos1, typename S::size_type n1, const typename S::value_type* str, S expected) { + typename S::size_type old_size = s.size(); + typename S::const_iterator first = s.begin() + pos1; + typename S::const_iterator last = s.begin() + pos1 + n1; + typename S::size_type xlen = last - first; + s.replace(first, last, str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type rlen = S::traits_type::length(str); + assert(s.size() == old_size - xlen + rlen); } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, "", S("")); - test(S(""), 0, 0, "12345", S("12345")); - test(S(""), 0, 0, "1234567890", S("1234567890")); - test(S(""), 0, 0, "12345678901234567890", S("12345678901234567890")); - test(S("abcde"), 0, 0, "", S("abcde")); - test(S("abcde"), 0, 0, "12345", S("12345abcde")); - test(S("abcde"), 0, 0, "1234567890", S("1234567890abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, "", S("bcde")); - test(S("abcde"), 0, 1, "12345", S("12345bcde")); - test(S("abcde"), 0, 1, "1234567890", S("1234567890bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, "", S("cde")); - test(S("abcde"), 0, 2, "12345", S("12345cde")); - test(S("abcde"), 0, 2, "1234567890", S("1234567890cde")); - test(S("abcde"), 0, 2, "12345678901234567890", S("12345678901234567890cde")); - test(S("abcde"), 0, 4, "", S("e")); - test(S("abcde"), 0, 4, "12345", S("12345e")); - test(S("abcde"), 0, 4, "1234567890", S("1234567890e")); - test(S("abcde"), 0, 4, "12345678901234567890", S("12345678901234567890e")); - test(S("abcde"), 0, 5, "", S("")); - test(S("abcde"), 0, 5, "12345", S("12345")); - test(S("abcde"), 0, 5, "1234567890", S("1234567890")); - test(S("abcde"), 0, 5, "12345678901234567890", S("12345678901234567890")); - test(S("abcde"), 1, 0, "", S("abcde")); - test(S("abcde"), 1, 0, "12345", S("a12345bcde")); - test(S("abcde"), 1, 0, "1234567890", S("a1234567890bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, "", S("acde")); - test(S("abcde"), 1, 1, "12345", S("a12345cde")); - test(S("abcde"), 1, 1, "1234567890", S("a1234567890cde")); - test(S("abcde"), 1, 1, "12345678901234567890", S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, "", S("ade")); - test(S("abcde"), 1, 2, "12345", S("a12345de")); - test(S("abcde"), 1, 2, "1234567890", S("a1234567890de")); - test(S("abcde"), 1, 2, "12345678901234567890", S("a12345678901234567890de")); - test(S("abcde"), 1, 3, "", S("ae")); - test(S("abcde"), 1, 3, "12345", S("a12345e")); - test(S("abcde"), 1, 3, "1234567890", S("a1234567890e")); - test(S("abcde"), 1, 3, "12345678901234567890", S("a12345678901234567890e")); - test(S("abcde"), 1, 4, "", S("a")); - test(S("abcde"), 1, 4, "12345", S("a12345")); - test(S("abcde"), 1, 4, "1234567890", S("a1234567890")); - test(S("abcde"), 1, 4, "12345678901234567890", S("a12345678901234567890")); - test(S("abcde"), 2, 0, "", S("abcde")); - test(S("abcde"), 2, 0, "12345", S("ab12345cde")); - test(S("abcde"), 2, 0, "1234567890", S("ab1234567890cde")); - test(S("abcde"), 2, 0, "12345678901234567890", S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, "", S("abde")); - test(S("abcde"), 2, 1, "12345", S("ab12345de")); - test(S("abcde"), 2, 1, "1234567890", S("ab1234567890de")); - test(S("abcde"), 2, 1, "12345678901234567890", S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, "", S("abe")); - test(S("abcde"), 2, 2, "12345", S("ab12345e")); - test(S("abcde"), 2, 2, "1234567890", S("ab1234567890e")); - test(S("abcde"), 2, 2, "12345678901234567890", S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, "", S("ab")); - test(S("abcde"), 2, 3, "12345", S("ab12345")); - test(S("abcde"), 2, 3, "1234567890", S("ab1234567890")); - test(S("abcde"), 2, 3, "12345678901234567890", S("ab12345678901234567890")); - test(S("abcde"), 4, 0, "", S("abcde")); - test(S("abcde"), 4, 0, "12345", S("abcd12345e")); - test(S("abcde"), 4, 0, "1234567890", S("abcd1234567890e")); - test(S("abcde"), 4, 0, "12345678901234567890", S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, "", S("abcd")); - test(S("abcde"), 4, 1, "12345", S("abcd12345")); - test(S("abcde"), 4, 1, "1234567890", S("abcd1234567890")); - test(S("abcde"), 4, 1, "12345678901234567890", S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, "", S("abcde")); - test(S("abcde"), 5, 0, "12345", S("abcde12345")); - test(S("abcde"), 5, 0, "1234567890", S("abcde1234567890")); - test(S("abcde"), 5, 0, "12345678901234567890", S("abcde12345678901234567890")); - test(S("abcdefghij"), 0, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, "", S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, "", S("fghij")); - test(S("abcdefghij"), 0, 5, "12345", S("12345fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, "", S("j")); - test(S("abcdefghij"), 0, 9, "12345", S("12345j")); - test(S("abcdefghij"), 0, 9, "1234567890", S("1234567890j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, "", S("")); - test(S("abcdefghij"), 0, 10, "12345", S("12345")); - test(S("abcdefghij"), 0, 10, "1234567890", S("1234567890")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, "", S("acdefghij")); - test(S("abcdefghij"), 1, 1, "12345", S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghij")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, "", S("")); + test(S(""), 0, 0, "12345", S("12345")); + test(S(""), 0, 0, "1234567890", S("1234567890")); + test(S(""), 0, 0, "12345678901234567890", S("12345678901234567890")); + test(S("abcde"), 0, 0, "", S("abcde")); + test(S("abcde"), 0, 0, "12345", S("12345abcde")); + test(S("abcde"), 0, 0, "1234567890", S("1234567890abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, "", S("bcde")); + test(S("abcde"), 0, 1, "12345", S("12345bcde")); + test(S("abcde"), 0, 1, "1234567890", S("1234567890bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, "", S("cde")); + test(S("abcde"), 0, 2, "12345", S("12345cde")); + test(S("abcde"), 0, 2, "1234567890", S("1234567890cde")); + test(S("abcde"), 0, 2, "12345678901234567890", S("12345678901234567890cde")); + test(S("abcde"), 0, 4, "", S("e")); + test(S("abcde"), 0, 4, "12345", S("12345e")); + test(S("abcde"), 0, 4, "1234567890", S("1234567890e")); + test(S("abcde"), 0, 4, "12345678901234567890", S("12345678901234567890e")); + test(S("abcde"), 0, 5, "", S("")); + test(S("abcde"), 0, 5, "12345", S("12345")); + test(S("abcde"), 0, 5, "1234567890", S("1234567890")); + test(S("abcde"), 0, 5, "12345678901234567890", S("12345678901234567890")); + test(S("abcde"), 1, 0, "", S("abcde")); + test(S("abcde"), 1, 0, "12345", S("a12345bcde")); + test(S("abcde"), 1, 0, "1234567890", S("a1234567890bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, "", S("acde")); + test(S("abcde"), 1, 1, "12345", S("a12345cde")); + test(S("abcde"), 1, 1, "1234567890", S("a1234567890cde")); + test(S("abcde"), 1, 1, "12345678901234567890", S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, "", S("ade")); + test(S("abcde"), 1, 2, "12345", S("a12345de")); + test(S("abcde"), 1, 2, "1234567890", S("a1234567890de")); + test(S("abcde"), 1, 2, "12345678901234567890", S("a12345678901234567890de")); + test(S("abcde"), 1, 3, "", S("ae")); + test(S("abcde"), 1, 3, "12345", S("a12345e")); + test(S("abcde"), 1, 3, "1234567890", S("a1234567890e")); + test(S("abcde"), 1, 3, "12345678901234567890", S("a12345678901234567890e")); + test(S("abcde"), 1, 4, "", S("a")); + test(S("abcde"), 1, 4, "12345", S("a12345")); + test(S("abcde"), 1, 4, "1234567890", S("a1234567890")); + test(S("abcde"), 1, 4, "12345678901234567890", S("a12345678901234567890")); + test(S("abcde"), 2, 0, "", S("abcde")); + test(S("abcde"), 2, 0, "12345", S("ab12345cde")); + test(S("abcde"), 2, 0, "1234567890", S("ab1234567890cde")); + test(S("abcde"), 2, 0, "12345678901234567890", S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, "", S("abde")); + test(S("abcde"), 2, 1, "12345", S("ab12345de")); + test(S("abcde"), 2, 1, "1234567890", S("ab1234567890de")); + test(S("abcde"), 2, 1, "12345678901234567890", S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, "", S("abe")); + test(S("abcde"), 2, 2, "12345", S("ab12345e")); + test(S("abcde"), 2, 2, "1234567890", S("ab1234567890e")); + test(S("abcde"), 2, 2, "12345678901234567890", S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, "", S("ab")); + test(S("abcde"), 2, 3, "12345", S("ab12345")); + test(S("abcde"), 2, 3, "1234567890", S("ab1234567890")); + test(S("abcde"), 2, 3, "12345678901234567890", S("ab12345678901234567890")); + test(S("abcde"), 4, 0, "", S("abcde")); + test(S("abcde"), 4, 0, "12345", S("abcd12345e")); + test(S("abcde"), 4, 0, "1234567890", S("abcd1234567890e")); + test(S("abcde"), 4, 0, "12345678901234567890", S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, "", S("abcd")); + test(S("abcde"), 4, 1, "12345", S("abcd12345")); + test(S("abcde"), 4, 1, "1234567890", S("abcd1234567890")); + test(S("abcde"), 4, 1, "12345678901234567890", S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, "", S("abcde")); + test(S("abcde"), 5, 0, "12345", S("abcde12345")); + test(S("abcde"), 5, 0, "1234567890", S("abcde1234567890")); + test(S("abcde"), 5, 0, "12345678901234567890", S("abcde12345678901234567890")); + test(S("abcdefghij"), 0, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, "", S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, "", S("fghij")); + test(S("abcdefghij"), 0, 5, "12345", S("12345fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, "", S("j")); + test(S("abcdefghij"), 0, 9, "12345", S("12345j")); + test(S("abcdefghij"), 0, 9, "1234567890", S("1234567890j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, "", S("")); + test(S("abcdefghij"), 0, 10, "12345", S("12345")); + test(S("abcdefghij"), 0, 10, "1234567890", S("1234567890")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, "", S("acdefghij")); + test(S("abcdefghij"), 1, 1, "12345", S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcdefghij"), 1, 4, "", S("afghij")); - test(S("abcdefghij"), 1, 4, "12345", S("a12345fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, "", S("aj")); - test(S("abcdefghij"), 1, 8, "12345", S("a12345j")); - test(S("abcdefghij"), 1, 8, "1234567890", S("a1234567890j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, "", S("a")); - test(S("abcdefghij"), 1, 9, "12345", S("a12345")); - test(S("abcdefghij"), 1, 9, "1234567890", S("a1234567890")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "12345", S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, "", S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "12345", S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, "", S("abcdehij")); - test(S("abcdefghij"), 5, 2, "12345", S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, "1234567890", S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, "", S("abcdej")); - test(S("abcdefghij"), 5, 4, "12345", S("abcde12345j")); - test(S("abcdefghij"), 5, 4, "1234567890", S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, "", S("abcde")); - test(S("abcdefghij"), 5, 5, "12345", S("abcde12345")); - test(S("abcdefghij"), 5, 5, "1234567890", S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "12345", S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, "1234567890", S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, "", S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "12345", S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, "1234567890", S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "12345", S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, "1234567890", S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "", S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "", S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, "", S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, "", S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "", S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "", S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, "", S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, "", S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "", S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "", S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, "", S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", S("abcdefghij12345678901234567890t")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcdefghij"), 1, 4, "", S("afghij")); + test(S("abcdefghij"), 1, 4, "12345", S("a12345fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, "", S("aj")); + test(S("abcdefghij"), 1, 8, "12345", S("a12345j")); + test(S("abcdefghij"), 1, 8, "1234567890", S("a1234567890j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, "", S("a")); + test(S("abcdefghij"), 1, 9, "12345", S("a12345")); + test(S("abcdefghij"), 1, 9, "1234567890", S("a1234567890")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "12345", S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, "", S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "12345", S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, "", S("abcdehij")); + test(S("abcdefghij"), 5, 2, "12345", S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, "1234567890", S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, "", S("abcdej")); + test(S("abcdefghij"), 5, 4, "12345", S("abcde12345j")); + test(S("abcdefghij"), 5, 4, "1234567890", S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, "", S("abcde")); + test(S("abcdefghij"), 5, 5, "12345", S("abcde12345")); + test(S("abcdefghij"), 5, 5, "1234567890", S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "12345", S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, "1234567890", S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, "", S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "12345", S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, "1234567890", S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "12345", S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, "1234567890", S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "", S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "", S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, "", S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, "", S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "", S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "", S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, "", S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, "", S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "", S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "", S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, "", S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", S("abcdefghij12345678901234567890t")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, "", S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, "", S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcdefghijklmnopqrst"), 10, 10, "", S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, "", S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); - { // test replacing into self - S s_short = "123/"; - S s_long = "Lorem ipsum dolor sit amet, consectetur/"; + { // test replacing into self + S s_short = "123/"; + S s_long = "Lorem ipsum dolor sit amet, consectetur/"; - s_short.replace(s_short.begin(), s_short.begin(), s_short.c_str()); - assert(s_short == "123/123/"); - s_short.replace(s_short.begin(), s_short.begin(), s_short.c_str()); - assert(s_short == "123/123/123/123/"); - s_short.replace(s_short.begin(), s_short.begin(), s_short.c_str()); - assert(s_short == "123/123/123/123/123/123/123/123/"); + s_short.replace(s_short.begin(), s_short.begin(), s_short.c_str()); + assert(s_short == "123/123/"); + s_short.replace(s_short.begin(), s_short.begin(), s_short.c_str()); + assert(s_short == "123/123/123/123/"); + s_short.replace(s_short.begin(), s_short.begin(), s_short.c_str()); + assert(s_short == "123/123/123/123/123/123/123/123/"); - s_long.replace(s_long.begin(), s_long.begin(), s_long.c_str()); - assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/"); - } + s_long.replace(s_long.begin(), s_long.begin(), s_long.c_str()); + assert(s_long == "Lorem ipsum dolor sit amet, consectetur/Lorem ipsum dolor sit amet, consectetur/"); + } - return true; + return true; } TEST_CONSTEXPR_CXX20 void test() { @@ -305,17 +301,16 @@ test0(); test1(); test2(); -#if TEST_STD_VER > 17 +# if TEST_STD_VER > 17 static_assert(test0()); static_assert(test1()); static_assert(test2()); -#endif +# endif } #endif } -int main(int, char**) -{ +int main(int, char**) { test(); return 0; diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_pointer_size.pass.cpp @@ -20,945 +20,939 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, const typename S::value_type* str, - typename S::size_type n2, S expected) -{ - typename S::size_type old_size = s.size(); - typename S::const_iterator first = s.begin() + pos1; - typename S::const_iterator last = s.begin() + pos1 + n1; - typename S::size_type xlen = last - first; - s.replace(first, last, str, n2); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type rlen = n2; - assert(s.size() == old_size - xlen + rlen); +test(S s, + typename S::size_type pos1, + typename S::size_type n1, + const typename S::value_type* str, + typename S::size_type n2, + S expected) { + typename S::size_type old_size = s.size(); + typename S::const_iterator first = s.begin() + pos1; + typename S::const_iterator last = s.begin() + pos1 + n1; + typename S::size_type xlen = last - first; + s.replace(first, last, str, n2); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type rlen = n2; + assert(s.size() == old_size - xlen + rlen); } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, "", 0, S("")); - test(S(""), 0, 0, "12345", 0, S("")); - test(S(""), 0, 0, "12345", 1, S("1")); - test(S(""), 0, 0, "12345", 2, S("12")); - test(S(""), 0, 0, "12345", 4, S("1234")); - test(S(""), 0, 0, "12345", 5, S("12345")); - test(S(""), 0, 0, "1234567890", 0, S("")); - test(S(""), 0, 0, "1234567890", 1, S("1")); - test(S(""), 0, 0, "1234567890", 5, S("12345")); - test(S(""), 0, 0, "1234567890", 9, S("123456789")); - test(S(""), 0, 0, "1234567890", 10, S("1234567890")); - test(S(""), 0, 0, "12345678901234567890", 0, S("")); - test(S(""), 0, 0, "12345678901234567890", 1, S("1")); - test(S(""), 0, 0, "12345678901234567890", 10, S("1234567890")); - test(S(""), 0, 0, "12345678901234567890", 19, S("1234567890123456789")); - test(S(""), 0, 0, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcde"), 0, 0, "", 0, S("abcde")); - test(S("abcde"), 0, 0, "12345", 0, S("abcde")); - test(S("abcde"), 0, 0, "12345", 1, S("1abcde")); - test(S("abcde"), 0, 0, "12345", 2, S("12abcde")); - test(S("abcde"), 0, 0, "12345", 4, S("1234abcde")); - test(S("abcde"), 0, 0, "12345", 5, S("12345abcde")); - test(S("abcde"), 0, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 0, 0, "1234567890", 1, S("1abcde")); - test(S("abcde"), 0, 0, "1234567890", 5, S("12345abcde")); - test(S("abcde"), 0, 0, "1234567890", 9, S("123456789abcde")); - test(S("abcde"), 0, 0, "1234567890", 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 1, S("1abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, "", 0, S("bcde")); - test(S("abcde"), 0, 1, "12345", 0, S("bcde")); - test(S("abcde"), 0, 1, "12345", 1, S("1bcde")); - test(S("abcde"), 0, 1, "12345", 2, S("12bcde")); - test(S("abcde"), 0, 1, "12345", 4, S("1234bcde")); - test(S("abcde"), 0, 1, "12345", 5, S("12345bcde")); - test(S("abcde"), 0, 1, "1234567890", 0, S("bcde")); - test(S("abcde"), 0, 1, "1234567890", 1, S("1bcde")); - test(S("abcde"), 0, 1, "1234567890", 5, S("12345bcde")); - test(S("abcde"), 0, 1, "1234567890", 9, S("123456789bcde")); - test(S("abcde"), 0, 1, "1234567890", 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 0, S("bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 1, S("1bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, "", 0, S("cde")); - test(S("abcde"), 0, 2, "12345", 0, S("cde")); - test(S("abcde"), 0, 2, "12345", 1, S("1cde")); - test(S("abcde"), 0, 2, "12345", 2, S("12cde")); - test(S("abcde"), 0, 2, "12345", 4, S("1234cde")); - test(S("abcde"), 0, 2, "12345", 5, S("12345cde")); - test(S("abcde"), 0, 2, "1234567890", 0, S("cde")); - test(S("abcde"), 0, 2, "1234567890", 1, S("1cde")); - test(S("abcde"), 0, 2, "1234567890", 5, S("12345cde")); - test(S("abcde"), 0, 2, "1234567890", 9, S("123456789cde")); - test(S("abcde"), 0, 2, "1234567890", 10, S("1234567890cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 0, S("cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 1, S("1cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 10, S("1234567890cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 19, S("1234567890123456789cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 20, S("12345678901234567890cde")); - test(S("abcde"), 0, 4, "", 0, S("e")); - test(S("abcde"), 0, 4, "12345", 0, S("e")); - test(S("abcde"), 0, 4, "12345", 1, S("1e")); - test(S("abcde"), 0, 4, "12345", 2, S("12e")); - test(S("abcde"), 0, 4, "12345", 4, S("1234e")); - test(S("abcde"), 0, 4, "12345", 5, S("12345e")); - test(S("abcde"), 0, 4, "1234567890", 0, S("e")); - test(S("abcde"), 0, 4, "1234567890", 1, S("1e")); - test(S("abcde"), 0, 4, "1234567890", 5, S("12345e")); - test(S("abcde"), 0, 4, "1234567890", 9, S("123456789e")); - test(S("abcde"), 0, 4, "1234567890", 10, S("1234567890e")); - test(S("abcde"), 0, 4, "12345678901234567890", 0, S("e")); - test(S("abcde"), 0, 4, "12345678901234567890", 1, S("1e")); - test(S("abcde"), 0, 4, "12345678901234567890", 10, S("1234567890e")); - test(S("abcde"), 0, 4, "12345678901234567890", 19, S("1234567890123456789e")); - test(S("abcde"), 0, 4, "12345678901234567890", 20, S("12345678901234567890e")); - test(S("abcde"), 0, 5, "", 0, S("")); - test(S("abcde"), 0, 5, "12345", 0, S("")); - test(S("abcde"), 0, 5, "12345", 1, S("1")); - test(S("abcde"), 0, 5, "12345", 2, S("12")); - test(S("abcde"), 0, 5, "12345", 4, S("1234")); - test(S("abcde"), 0, 5, "12345", 5, S("12345")); - test(S("abcde"), 0, 5, "1234567890", 0, S("")); - test(S("abcde"), 0, 5, "1234567890", 1, S("1")); - test(S("abcde"), 0, 5, "1234567890", 5, S("12345")); - test(S("abcde"), 0, 5, "1234567890", 9, S("123456789")); - test(S("abcde"), 0, 5, "1234567890", 10, S("1234567890")); - test(S("abcde"), 0, 5, "12345678901234567890", 0, S("")); - test(S("abcde"), 0, 5, "12345678901234567890", 1, S("1")); - test(S("abcde"), 0, 5, "12345678901234567890", 10, S("1234567890")); - test(S("abcde"), 0, 5, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcde"), 0, 5, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcde"), 1, 0, "", 0, S("abcde")); - test(S("abcde"), 1, 0, "12345", 0, S("abcde")); - test(S("abcde"), 1, 0, "12345", 1, S("a1bcde")); - test(S("abcde"), 1, 0, "12345", 2, S("a12bcde")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, "", 0, S("")); + test(S(""), 0, 0, "12345", 0, S("")); + test(S(""), 0, 0, "12345", 1, S("1")); + test(S(""), 0, 0, "12345", 2, S("12")); + test(S(""), 0, 0, "12345", 4, S("1234")); + test(S(""), 0, 0, "12345", 5, S("12345")); + test(S(""), 0, 0, "1234567890", 0, S("")); + test(S(""), 0, 0, "1234567890", 1, S("1")); + test(S(""), 0, 0, "1234567890", 5, S("12345")); + test(S(""), 0, 0, "1234567890", 9, S("123456789")); + test(S(""), 0, 0, "1234567890", 10, S("1234567890")); + test(S(""), 0, 0, "12345678901234567890", 0, S("")); + test(S(""), 0, 0, "12345678901234567890", 1, S("1")); + test(S(""), 0, 0, "12345678901234567890", 10, S("1234567890")); + test(S(""), 0, 0, "12345678901234567890", 19, S("1234567890123456789")); + test(S(""), 0, 0, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcde"), 0, 0, "", 0, S("abcde")); + test(S("abcde"), 0, 0, "12345", 0, S("abcde")); + test(S("abcde"), 0, 0, "12345", 1, S("1abcde")); + test(S("abcde"), 0, 0, "12345", 2, S("12abcde")); + test(S("abcde"), 0, 0, "12345", 4, S("1234abcde")); + test(S("abcde"), 0, 0, "12345", 5, S("12345abcde")); + test(S("abcde"), 0, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 0, 0, "1234567890", 1, S("1abcde")); + test(S("abcde"), 0, 0, "1234567890", 5, S("12345abcde")); + test(S("abcde"), 0, 0, "1234567890", 9, S("123456789abcde")); + test(S("abcde"), 0, 0, "1234567890", 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 1, S("1abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, "", 0, S("bcde")); + test(S("abcde"), 0, 1, "12345", 0, S("bcde")); + test(S("abcde"), 0, 1, "12345", 1, S("1bcde")); + test(S("abcde"), 0, 1, "12345", 2, S("12bcde")); + test(S("abcde"), 0, 1, "12345", 4, S("1234bcde")); + test(S("abcde"), 0, 1, "12345", 5, S("12345bcde")); + test(S("abcde"), 0, 1, "1234567890", 0, S("bcde")); + test(S("abcde"), 0, 1, "1234567890", 1, S("1bcde")); + test(S("abcde"), 0, 1, "1234567890", 5, S("12345bcde")); + test(S("abcde"), 0, 1, "1234567890", 9, S("123456789bcde")); + test(S("abcde"), 0, 1, "1234567890", 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 0, S("bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 1, S("1bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, "", 0, S("cde")); + test(S("abcde"), 0, 2, "12345", 0, S("cde")); + test(S("abcde"), 0, 2, "12345", 1, S("1cde")); + test(S("abcde"), 0, 2, "12345", 2, S("12cde")); + test(S("abcde"), 0, 2, "12345", 4, S("1234cde")); + test(S("abcde"), 0, 2, "12345", 5, S("12345cde")); + test(S("abcde"), 0, 2, "1234567890", 0, S("cde")); + test(S("abcde"), 0, 2, "1234567890", 1, S("1cde")); + test(S("abcde"), 0, 2, "1234567890", 5, S("12345cde")); + test(S("abcde"), 0, 2, "1234567890", 9, S("123456789cde")); + test(S("abcde"), 0, 2, "1234567890", 10, S("1234567890cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 0, S("cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 1, S("1cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 10, S("1234567890cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 19, S("1234567890123456789cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 20, S("12345678901234567890cde")); + test(S("abcde"), 0, 4, "", 0, S("e")); + test(S("abcde"), 0, 4, "12345", 0, S("e")); + test(S("abcde"), 0, 4, "12345", 1, S("1e")); + test(S("abcde"), 0, 4, "12345", 2, S("12e")); + test(S("abcde"), 0, 4, "12345", 4, S("1234e")); + test(S("abcde"), 0, 4, "12345", 5, S("12345e")); + test(S("abcde"), 0, 4, "1234567890", 0, S("e")); + test(S("abcde"), 0, 4, "1234567890", 1, S("1e")); + test(S("abcde"), 0, 4, "1234567890", 5, S("12345e")); + test(S("abcde"), 0, 4, "1234567890", 9, S("123456789e")); + test(S("abcde"), 0, 4, "1234567890", 10, S("1234567890e")); + test(S("abcde"), 0, 4, "12345678901234567890", 0, S("e")); + test(S("abcde"), 0, 4, "12345678901234567890", 1, S("1e")); + test(S("abcde"), 0, 4, "12345678901234567890", 10, S("1234567890e")); + test(S("abcde"), 0, 4, "12345678901234567890", 19, S("1234567890123456789e")); + test(S("abcde"), 0, 4, "12345678901234567890", 20, S("12345678901234567890e")); + test(S("abcde"), 0, 5, "", 0, S("")); + test(S("abcde"), 0, 5, "12345", 0, S("")); + test(S("abcde"), 0, 5, "12345", 1, S("1")); + test(S("abcde"), 0, 5, "12345", 2, S("12")); + test(S("abcde"), 0, 5, "12345", 4, S("1234")); + test(S("abcde"), 0, 5, "12345", 5, S("12345")); + test(S("abcde"), 0, 5, "1234567890", 0, S("")); + test(S("abcde"), 0, 5, "1234567890", 1, S("1")); + test(S("abcde"), 0, 5, "1234567890", 5, S("12345")); + test(S("abcde"), 0, 5, "1234567890", 9, S("123456789")); + test(S("abcde"), 0, 5, "1234567890", 10, S("1234567890")); + test(S("abcde"), 0, 5, "12345678901234567890", 0, S("")); + test(S("abcde"), 0, 5, "12345678901234567890", 1, S("1")); + test(S("abcde"), 0, 5, "12345678901234567890", 10, S("1234567890")); + test(S("abcde"), 0, 5, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcde"), 0, 5, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcde"), 1, 0, "", 0, S("abcde")); + test(S("abcde"), 1, 0, "12345", 0, S("abcde")); + test(S("abcde"), 1, 0, "12345", 1, S("a1bcde")); + test(S("abcde"), 1, 0, "12345", 2, S("a12bcde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcde"), 1, 0, "12345", 4, S("a1234bcde")); - test(S("abcde"), 1, 0, "12345", 5, S("a12345bcde")); - test(S("abcde"), 1, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 1, 0, "1234567890", 1, S("a1bcde")); - test(S("abcde"), 1, 0, "1234567890", 5, S("a12345bcde")); - test(S("abcde"), 1, 0, "1234567890", 9, S("a123456789bcde")); - test(S("abcde"), 1, 0, "1234567890", 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 1, S("a1bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, "", 0, S("acde")); - test(S("abcde"), 1, 1, "12345", 0, S("acde")); - test(S("abcde"), 1, 1, "12345", 1, S("a1cde")); - test(S("abcde"), 1, 1, "12345", 2, S("a12cde")); - test(S("abcde"), 1, 1, "12345", 4, S("a1234cde")); - test(S("abcde"), 1, 1, "12345", 5, S("a12345cde")); - test(S("abcde"), 1, 1, "1234567890", 0, S("acde")); - test(S("abcde"), 1, 1, "1234567890", 1, S("a1cde")); - test(S("abcde"), 1, 1, "1234567890", 5, S("a12345cde")); - test(S("abcde"), 1, 1, "1234567890", 9, S("a123456789cde")); - test(S("abcde"), 1, 1, "1234567890", 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, "12345678901234567890", 0, S("acde")); - test(S("abcde"), 1, 1, "12345678901234567890", 1, S("a1cde")); - test(S("abcde"), 1, 1, "12345678901234567890", 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cde")); - test(S("abcde"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, "", 0, S("ade")); - test(S("abcde"), 1, 2, "12345", 0, S("ade")); - test(S("abcde"), 1, 2, "12345", 1, S("a1de")); - test(S("abcde"), 1, 2, "12345", 2, S("a12de")); - test(S("abcde"), 1, 2, "12345", 4, S("a1234de")); - test(S("abcde"), 1, 2, "12345", 5, S("a12345de")); - test(S("abcde"), 1, 2, "1234567890", 0, S("ade")); - test(S("abcde"), 1, 2, "1234567890", 1, S("a1de")); - test(S("abcde"), 1, 2, "1234567890", 5, S("a12345de")); - test(S("abcde"), 1, 2, "1234567890", 9, S("a123456789de")); - test(S("abcde"), 1, 2, "1234567890", 10, S("a1234567890de")); - test(S("abcde"), 1, 2, "12345678901234567890", 0, S("ade")); - test(S("abcde"), 1, 2, "12345678901234567890", 1, S("a1de")); - test(S("abcde"), 1, 2, "12345678901234567890", 10, S("a1234567890de")); - test(S("abcde"), 1, 2, "12345678901234567890", 19, S("a1234567890123456789de")); - test(S("abcde"), 1, 2, "12345678901234567890", 20, S("a12345678901234567890de")); - test(S("abcde"), 1, 3, "", 0, S("ae")); - test(S("abcde"), 1, 3, "12345", 0, S("ae")); - test(S("abcde"), 1, 3, "12345", 1, S("a1e")); - test(S("abcde"), 1, 3, "12345", 2, S("a12e")); - test(S("abcde"), 1, 3, "12345", 4, S("a1234e")); - test(S("abcde"), 1, 3, "12345", 5, S("a12345e")); - test(S("abcde"), 1, 3, "1234567890", 0, S("ae")); - test(S("abcde"), 1, 3, "1234567890", 1, S("a1e")); - test(S("abcde"), 1, 3, "1234567890", 5, S("a12345e")); - test(S("abcde"), 1, 3, "1234567890", 9, S("a123456789e")); - test(S("abcde"), 1, 3, "1234567890", 10, S("a1234567890e")); - test(S("abcde"), 1, 3, "12345678901234567890", 0, S("ae")); - test(S("abcde"), 1, 3, "12345678901234567890", 1, S("a1e")); - test(S("abcde"), 1, 3, "12345678901234567890", 10, S("a1234567890e")); - test(S("abcde"), 1, 3, "12345678901234567890", 19, S("a1234567890123456789e")); - test(S("abcde"), 1, 3, "12345678901234567890", 20, S("a12345678901234567890e")); - test(S("abcde"), 1, 4, "", 0, S("a")); - test(S("abcde"), 1, 4, "12345", 0, S("a")); - test(S("abcde"), 1, 4, "12345", 1, S("a1")); - test(S("abcde"), 1, 4, "12345", 2, S("a12")); - test(S("abcde"), 1, 4, "12345", 4, S("a1234")); - test(S("abcde"), 1, 4, "12345", 5, S("a12345")); - test(S("abcde"), 1, 4, "1234567890", 0, S("a")); - test(S("abcde"), 1, 4, "1234567890", 1, S("a1")); - test(S("abcde"), 1, 4, "1234567890", 5, S("a12345")); - test(S("abcde"), 1, 4, "1234567890", 9, S("a123456789")); - test(S("abcde"), 1, 4, "1234567890", 10, S("a1234567890")); - test(S("abcde"), 1, 4, "12345678901234567890", 0, S("a")); - test(S("abcde"), 1, 4, "12345678901234567890", 1, S("a1")); - test(S("abcde"), 1, 4, "12345678901234567890", 10, S("a1234567890")); - test(S("abcde"), 1, 4, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcde"), 1, 4, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcde"), 2, 0, "", 0, S("abcde")); - test(S("abcde"), 2, 0, "12345", 0, S("abcde")); - test(S("abcde"), 2, 0, "12345", 1, S("ab1cde")); - test(S("abcde"), 2, 0, "12345", 2, S("ab12cde")); - test(S("abcde"), 2, 0, "12345", 4, S("ab1234cde")); - test(S("abcde"), 2, 0, "12345", 5, S("ab12345cde")); - test(S("abcde"), 2, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 2, 0, "1234567890", 1, S("ab1cde")); - test(S("abcde"), 2, 0, "1234567890", 5, S("ab12345cde")); - test(S("abcde"), 2, 0, "1234567890", 9, S("ab123456789cde")); - test(S("abcde"), 2, 0, "1234567890", 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 2, 0, "12345678901234567890", 1, S("ab1cde")); - test(S("abcde"), 2, 0, "12345678901234567890", 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, "12345678901234567890", 19, S("ab1234567890123456789cde")); - test(S("abcde"), 2, 0, "12345678901234567890", 20, S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, "", 0, S("abde")); - test(S("abcde"), 2, 1, "12345", 0, S("abde")); - test(S("abcde"), 2, 1, "12345", 1, S("ab1de")); - test(S("abcde"), 2, 1, "12345", 2, S("ab12de")); - test(S("abcde"), 2, 1, "12345", 4, S("ab1234de")); - test(S("abcde"), 2, 1, "12345", 5, S("ab12345de")); - test(S("abcde"), 2, 1, "1234567890", 0, S("abde")); - test(S("abcde"), 2, 1, "1234567890", 1, S("ab1de")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcde"), 1, 0, "12345", 4, S("a1234bcde")); + test(S("abcde"), 1, 0, "12345", 5, S("a12345bcde")); + test(S("abcde"), 1, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 1, 0, "1234567890", 1, S("a1bcde")); + test(S("abcde"), 1, 0, "1234567890", 5, S("a12345bcde")); + test(S("abcde"), 1, 0, "1234567890", 9, S("a123456789bcde")); + test(S("abcde"), 1, 0, "1234567890", 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 1, S("a1bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, "", 0, S("acde")); + test(S("abcde"), 1, 1, "12345", 0, S("acde")); + test(S("abcde"), 1, 1, "12345", 1, S("a1cde")); + test(S("abcde"), 1, 1, "12345", 2, S("a12cde")); + test(S("abcde"), 1, 1, "12345", 4, S("a1234cde")); + test(S("abcde"), 1, 1, "12345", 5, S("a12345cde")); + test(S("abcde"), 1, 1, "1234567890", 0, S("acde")); + test(S("abcde"), 1, 1, "1234567890", 1, S("a1cde")); + test(S("abcde"), 1, 1, "1234567890", 5, S("a12345cde")); + test(S("abcde"), 1, 1, "1234567890", 9, S("a123456789cde")); + test(S("abcde"), 1, 1, "1234567890", 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, "12345678901234567890", 0, S("acde")); + test(S("abcde"), 1, 1, "12345678901234567890", 1, S("a1cde")); + test(S("abcde"), 1, 1, "12345678901234567890", 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cde")); + test(S("abcde"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, "", 0, S("ade")); + test(S("abcde"), 1, 2, "12345", 0, S("ade")); + test(S("abcde"), 1, 2, "12345", 1, S("a1de")); + test(S("abcde"), 1, 2, "12345", 2, S("a12de")); + test(S("abcde"), 1, 2, "12345", 4, S("a1234de")); + test(S("abcde"), 1, 2, "12345", 5, S("a12345de")); + test(S("abcde"), 1, 2, "1234567890", 0, S("ade")); + test(S("abcde"), 1, 2, "1234567890", 1, S("a1de")); + test(S("abcde"), 1, 2, "1234567890", 5, S("a12345de")); + test(S("abcde"), 1, 2, "1234567890", 9, S("a123456789de")); + test(S("abcde"), 1, 2, "1234567890", 10, S("a1234567890de")); + test(S("abcde"), 1, 2, "12345678901234567890", 0, S("ade")); + test(S("abcde"), 1, 2, "12345678901234567890", 1, S("a1de")); + test(S("abcde"), 1, 2, "12345678901234567890", 10, S("a1234567890de")); + test(S("abcde"), 1, 2, "12345678901234567890", 19, S("a1234567890123456789de")); + test(S("abcde"), 1, 2, "12345678901234567890", 20, S("a12345678901234567890de")); + test(S("abcde"), 1, 3, "", 0, S("ae")); + test(S("abcde"), 1, 3, "12345", 0, S("ae")); + test(S("abcde"), 1, 3, "12345", 1, S("a1e")); + test(S("abcde"), 1, 3, "12345", 2, S("a12e")); + test(S("abcde"), 1, 3, "12345", 4, S("a1234e")); + test(S("abcde"), 1, 3, "12345", 5, S("a12345e")); + test(S("abcde"), 1, 3, "1234567890", 0, S("ae")); + test(S("abcde"), 1, 3, "1234567890", 1, S("a1e")); + test(S("abcde"), 1, 3, "1234567890", 5, S("a12345e")); + test(S("abcde"), 1, 3, "1234567890", 9, S("a123456789e")); + test(S("abcde"), 1, 3, "1234567890", 10, S("a1234567890e")); + test(S("abcde"), 1, 3, "12345678901234567890", 0, S("ae")); + test(S("abcde"), 1, 3, "12345678901234567890", 1, S("a1e")); + test(S("abcde"), 1, 3, "12345678901234567890", 10, S("a1234567890e")); + test(S("abcde"), 1, 3, "12345678901234567890", 19, S("a1234567890123456789e")); + test(S("abcde"), 1, 3, "12345678901234567890", 20, S("a12345678901234567890e")); + test(S("abcde"), 1, 4, "", 0, S("a")); + test(S("abcde"), 1, 4, "12345", 0, S("a")); + test(S("abcde"), 1, 4, "12345", 1, S("a1")); + test(S("abcde"), 1, 4, "12345", 2, S("a12")); + test(S("abcde"), 1, 4, "12345", 4, S("a1234")); + test(S("abcde"), 1, 4, "12345", 5, S("a12345")); + test(S("abcde"), 1, 4, "1234567890", 0, S("a")); + test(S("abcde"), 1, 4, "1234567890", 1, S("a1")); + test(S("abcde"), 1, 4, "1234567890", 5, S("a12345")); + test(S("abcde"), 1, 4, "1234567890", 9, S("a123456789")); + test(S("abcde"), 1, 4, "1234567890", 10, S("a1234567890")); + test(S("abcde"), 1, 4, "12345678901234567890", 0, S("a")); + test(S("abcde"), 1, 4, "12345678901234567890", 1, S("a1")); + test(S("abcde"), 1, 4, "12345678901234567890", 10, S("a1234567890")); + test(S("abcde"), 1, 4, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcde"), 1, 4, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcde"), 2, 0, "", 0, S("abcde")); + test(S("abcde"), 2, 0, "12345", 0, S("abcde")); + test(S("abcde"), 2, 0, "12345", 1, S("ab1cde")); + test(S("abcde"), 2, 0, "12345", 2, S("ab12cde")); + test(S("abcde"), 2, 0, "12345", 4, S("ab1234cde")); + test(S("abcde"), 2, 0, "12345", 5, S("ab12345cde")); + test(S("abcde"), 2, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 2, 0, "1234567890", 1, S("ab1cde")); + test(S("abcde"), 2, 0, "1234567890", 5, S("ab12345cde")); + test(S("abcde"), 2, 0, "1234567890", 9, S("ab123456789cde")); + test(S("abcde"), 2, 0, "1234567890", 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 2, 0, "12345678901234567890", 1, S("ab1cde")); + test(S("abcde"), 2, 0, "12345678901234567890", 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, "12345678901234567890", 19, S("ab1234567890123456789cde")); + test(S("abcde"), 2, 0, "12345678901234567890", 20, S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, "", 0, S("abde")); + test(S("abcde"), 2, 1, "12345", 0, S("abde")); + test(S("abcde"), 2, 1, "12345", 1, S("ab1de")); + test(S("abcde"), 2, 1, "12345", 2, S("ab12de")); + test(S("abcde"), 2, 1, "12345", 4, S("ab1234de")); + test(S("abcde"), 2, 1, "12345", 5, S("ab12345de")); + test(S("abcde"), 2, 1, "1234567890", 0, S("abde")); + test(S("abcde"), 2, 1, "1234567890", 1, S("ab1de")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcde"), 2, 1, "1234567890", 5, S("ab12345de")); - test(S("abcde"), 2, 1, "1234567890", 9, S("ab123456789de")); - test(S("abcde"), 2, 1, "1234567890", 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, "12345678901234567890", 0, S("abde")); - test(S("abcde"), 2, 1, "12345678901234567890", 1, S("ab1de")); - test(S("abcde"), 2, 1, "12345678901234567890", 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, "12345678901234567890", 19, S("ab1234567890123456789de")); - test(S("abcde"), 2, 1, "12345678901234567890", 20, S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, "", 0, S("abe")); - test(S("abcde"), 2, 2, "12345", 0, S("abe")); - test(S("abcde"), 2, 2, "12345", 1, S("ab1e")); - test(S("abcde"), 2, 2, "12345", 2, S("ab12e")); - test(S("abcde"), 2, 2, "12345", 4, S("ab1234e")); - test(S("abcde"), 2, 2, "12345", 5, S("ab12345e")); - test(S("abcde"), 2, 2, "1234567890", 0, S("abe")); - test(S("abcde"), 2, 2, "1234567890", 1, S("ab1e")); - test(S("abcde"), 2, 2, "1234567890", 5, S("ab12345e")); - test(S("abcde"), 2, 2, "1234567890", 9, S("ab123456789e")); - test(S("abcde"), 2, 2, "1234567890", 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, "12345678901234567890", 0, S("abe")); - test(S("abcde"), 2, 2, "12345678901234567890", 1, S("ab1e")); - test(S("abcde"), 2, 2, "12345678901234567890", 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, "12345678901234567890", 19, S("ab1234567890123456789e")); - test(S("abcde"), 2, 2, "12345678901234567890", 20, S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, "", 0, S("ab")); - test(S("abcde"), 2, 3, "12345", 0, S("ab")); - test(S("abcde"), 2, 3, "12345", 1, S("ab1")); - test(S("abcde"), 2, 3, "12345", 2, S("ab12")); - test(S("abcde"), 2, 3, "12345", 4, S("ab1234")); - test(S("abcde"), 2, 3, "12345", 5, S("ab12345")); - test(S("abcde"), 2, 3, "1234567890", 0, S("ab")); - test(S("abcde"), 2, 3, "1234567890", 1, S("ab1")); - test(S("abcde"), 2, 3, "1234567890", 5, S("ab12345")); - test(S("abcde"), 2, 3, "1234567890", 9, S("ab123456789")); - test(S("abcde"), 2, 3, "1234567890", 10, S("ab1234567890")); - test(S("abcde"), 2, 3, "12345678901234567890", 0, S("ab")); - test(S("abcde"), 2, 3, "12345678901234567890", 1, S("ab1")); - test(S("abcde"), 2, 3, "12345678901234567890", 10, S("ab1234567890")); - test(S("abcde"), 2, 3, "12345678901234567890", 19, S("ab1234567890123456789")); - test(S("abcde"), 2, 3, "12345678901234567890", 20, S("ab12345678901234567890")); - test(S("abcde"), 4, 0, "", 0, S("abcde")); - test(S("abcde"), 4, 0, "12345", 0, S("abcde")); - test(S("abcde"), 4, 0, "12345", 1, S("abcd1e")); - test(S("abcde"), 4, 0, "12345", 2, S("abcd12e")); - test(S("abcde"), 4, 0, "12345", 4, S("abcd1234e")); - test(S("abcde"), 4, 0, "12345", 5, S("abcd12345e")); - test(S("abcde"), 4, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 4, 0, "1234567890", 1, S("abcd1e")); - test(S("abcde"), 4, 0, "1234567890", 5, S("abcd12345e")); - test(S("abcde"), 4, 0, "1234567890", 9, S("abcd123456789e")); - test(S("abcde"), 4, 0, "1234567890", 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 4, 0, "12345678901234567890", 1, S("abcd1e")); - test(S("abcde"), 4, 0, "12345678901234567890", 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, "12345678901234567890", 19, S("abcd1234567890123456789e")); - test(S("abcde"), 4, 0, "12345678901234567890", 20, S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, "", 0, S("abcd")); - test(S("abcde"), 4, 1, "12345", 0, S("abcd")); - test(S("abcde"), 4, 1, "12345", 1, S("abcd1")); - test(S("abcde"), 4, 1, "12345", 2, S("abcd12")); - test(S("abcde"), 4, 1, "12345", 4, S("abcd1234")); - test(S("abcde"), 4, 1, "12345", 5, S("abcd12345")); - test(S("abcde"), 4, 1, "1234567890", 0, S("abcd")); - test(S("abcde"), 4, 1, "1234567890", 1, S("abcd1")); - test(S("abcde"), 4, 1, "1234567890", 5, S("abcd12345")); - test(S("abcde"), 4, 1, "1234567890", 9, S("abcd123456789")); - test(S("abcde"), 4, 1, "1234567890", 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, "12345678901234567890", 0, S("abcd")); - test(S("abcde"), 4, 1, "12345678901234567890", 1, S("abcd1")); - test(S("abcde"), 4, 1, "12345678901234567890", 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, "12345678901234567890", 19, S("abcd1234567890123456789")); - test(S("abcde"), 4, 1, "12345678901234567890", 20, S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, "", 0, S("abcde")); - test(S("abcde"), 5, 0, "12345", 0, S("abcde")); - test(S("abcde"), 5, 0, "12345", 1, S("abcde1")); - test(S("abcde"), 5, 0, "12345", 2, S("abcde12")); - test(S("abcde"), 5, 0, "12345", 4, S("abcde1234")); - test(S("abcde"), 5, 0, "12345", 5, S("abcde12345")); - test(S("abcde"), 5, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 5, 0, "1234567890", 1, S("abcde1")); - test(S("abcde"), 5, 0, "1234567890", 5, S("abcde12345")); - test(S("abcde"), 5, 0, "1234567890", 9, S("abcde123456789")); - test(S("abcde"), 5, 0, "1234567890", 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 5, 0, "12345678901234567890", 1, S("abcde1")); - test(S("abcde"), 5, 0, "12345678901234567890", 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 0, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 2, S("12abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 4, S("1234abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 0, S("abcdefghij")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcde"), 2, 1, "1234567890", 5, S("ab12345de")); + test(S("abcde"), 2, 1, "1234567890", 9, S("ab123456789de")); + test(S("abcde"), 2, 1, "1234567890", 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, "12345678901234567890", 0, S("abde")); + test(S("abcde"), 2, 1, "12345678901234567890", 1, S("ab1de")); + test(S("abcde"), 2, 1, "12345678901234567890", 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, "12345678901234567890", 19, S("ab1234567890123456789de")); + test(S("abcde"), 2, 1, "12345678901234567890", 20, S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, "", 0, S("abe")); + test(S("abcde"), 2, 2, "12345", 0, S("abe")); + test(S("abcde"), 2, 2, "12345", 1, S("ab1e")); + test(S("abcde"), 2, 2, "12345", 2, S("ab12e")); + test(S("abcde"), 2, 2, "12345", 4, S("ab1234e")); + test(S("abcde"), 2, 2, "12345", 5, S("ab12345e")); + test(S("abcde"), 2, 2, "1234567890", 0, S("abe")); + test(S("abcde"), 2, 2, "1234567890", 1, S("ab1e")); + test(S("abcde"), 2, 2, "1234567890", 5, S("ab12345e")); + test(S("abcde"), 2, 2, "1234567890", 9, S("ab123456789e")); + test(S("abcde"), 2, 2, "1234567890", 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, "12345678901234567890", 0, S("abe")); + test(S("abcde"), 2, 2, "12345678901234567890", 1, S("ab1e")); + test(S("abcde"), 2, 2, "12345678901234567890", 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, "12345678901234567890", 19, S("ab1234567890123456789e")); + test(S("abcde"), 2, 2, "12345678901234567890", 20, S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, "", 0, S("ab")); + test(S("abcde"), 2, 3, "12345", 0, S("ab")); + test(S("abcde"), 2, 3, "12345", 1, S("ab1")); + test(S("abcde"), 2, 3, "12345", 2, S("ab12")); + test(S("abcde"), 2, 3, "12345", 4, S("ab1234")); + test(S("abcde"), 2, 3, "12345", 5, S("ab12345")); + test(S("abcde"), 2, 3, "1234567890", 0, S("ab")); + test(S("abcde"), 2, 3, "1234567890", 1, S("ab1")); + test(S("abcde"), 2, 3, "1234567890", 5, S("ab12345")); + test(S("abcde"), 2, 3, "1234567890", 9, S("ab123456789")); + test(S("abcde"), 2, 3, "1234567890", 10, S("ab1234567890")); + test(S("abcde"), 2, 3, "12345678901234567890", 0, S("ab")); + test(S("abcde"), 2, 3, "12345678901234567890", 1, S("ab1")); + test(S("abcde"), 2, 3, "12345678901234567890", 10, S("ab1234567890")); + test(S("abcde"), 2, 3, "12345678901234567890", 19, S("ab1234567890123456789")); + test(S("abcde"), 2, 3, "12345678901234567890", 20, S("ab12345678901234567890")); + test(S("abcde"), 4, 0, "", 0, S("abcde")); + test(S("abcde"), 4, 0, "12345", 0, S("abcde")); + test(S("abcde"), 4, 0, "12345", 1, S("abcd1e")); + test(S("abcde"), 4, 0, "12345", 2, S("abcd12e")); + test(S("abcde"), 4, 0, "12345", 4, S("abcd1234e")); + test(S("abcde"), 4, 0, "12345", 5, S("abcd12345e")); + test(S("abcde"), 4, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 4, 0, "1234567890", 1, S("abcd1e")); + test(S("abcde"), 4, 0, "1234567890", 5, S("abcd12345e")); + test(S("abcde"), 4, 0, "1234567890", 9, S("abcd123456789e")); + test(S("abcde"), 4, 0, "1234567890", 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 4, 0, "12345678901234567890", 1, S("abcd1e")); + test(S("abcde"), 4, 0, "12345678901234567890", 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, "12345678901234567890", 19, S("abcd1234567890123456789e")); + test(S("abcde"), 4, 0, "12345678901234567890", 20, S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, "", 0, S("abcd")); + test(S("abcde"), 4, 1, "12345", 0, S("abcd")); + test(S("abcde"), 4, 1, "12345", 1, S("abcd1")); + test(S("abcde"), 4, 1, "12345", 2, S("abcd12")); + test(S("abcde"), 4, 1, "12345", 4, S("abcd1234")); + test(S("abcde"), 4, 1, "12345", 5, S("abcd12345")); + test(S("abcde"), 4, 1, "1234567890", 0, S("abcd")); + test(S("abcde"), 4, 1, "1234567890", 1, S("abcd1")); + test(S("abcde"), 4, 1, "1234567890", 5, S("abcd12345")); + test(S("abcde"), 4, 1, "1234567890", 9, S("abcd123456789")); + test(S("abcde"), 4, 1, "1234567890", 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, "12345678901234567890", 0, S("abcd")); + test(S("abcde"), 4, 1, "12345678901234567890", 1, S("abcd1")); + test(S("abcde"), 4, 1, "12345678901234567890", 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, "12345678901234567890", 19, S("abcd1234567890123456789")); + test(S("abcde"), 4, 1, "12345678901234567890", 20, S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, "", 0, S("abcde")); + test(S("abcde"), 5, 0, "12345", 0, S("abcde")); + test(S("abcde"), 5, 0, "12345", 1, S("abcde1")); + test(S("abcde"), 5, 0, "12345", 2, S("abcde12")); + test(S("abcde"), 5, 0, "12345", 4, S("abcde1234")); + test(S("abcde"), 5, 0, "12345", 5, S("abcde12345")); + test(S("abcde"), 5, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 5, 0, "1234567890", 1, S("abcde1")); + test(S("abcde"), 5, 0, "1234567890", 5, S("abcde12345")); + test(S("abcde"), 5, 0, "1234567890", 9, S("abcde123456789")); + test(S("abcde"), 5, 0, "1234567890", 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 5, 0, "12345678901234567890", 1, S("abcde1")); + test(S("abcde"), 5, 0, "12345678901234567890", 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 0, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 2, S("12abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 4, S("1234abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 0, S("abcdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcdefghij"), 0, 0, "12345678901234567890", 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, "", 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 2, S("12bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 4, S("1234bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 9, S("123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, "", 0, S("fghij")); - test(S("abcdefghij"), 0, 5, "12345", 0, S("fghij")); - test(S("abcdefghij"), 0, 5, "12345", 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, "12345", 2, S("12fghij")); - test(S("abcdefghij"), 0, 5, "12345", 4, S("1234fghij")); - test(S("abcdefghij"), 0, 5, "12345", 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 0, S("fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 9, S("123456789fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 0, S("fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 19, S("1234567890123456789fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 20, S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, "", 0, S("j")); - test(S("abcdefghij"), 0, 9, "12345", 0, S("j")); - test(S("abcdefghij"), 0, 9, "12345", 1, S("1j")); - test(S("abcdefghij"), 0, 9, "12345", 2, S("12j")); - test(S("abcdefghij"), 0, 9, "12345", 4, S("1234j")); - test(S("abcdefghij"), 0, 9, "12345", 5, S("12345j")); - test(S("abcdefghij"), 0, 9, "1234567890", 0, S("j")); - test(S("abcdefghij"), 0, 9, "1234567890", 1, S("1j")); - test(S("abcdefghij"), 0, 9, "1234567890", 5, S("12345j")); - test(S("abcdefghij"), 0, 9, "1234567890", 9, S("123456789j")); - test(S("abcdefghij"), 0, 9, "1234567890", 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 0, S("j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 1, S("1j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 19, S("1234567890123456789j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 20, S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, "", 0, S("")); - test(S("abcdefghij"), 0, 10, "12345", 0, S("")); - test(S("abcdefghij"), 0, 10, "12345", 1, S("1")); - test(S("abcdefghij"), 0, 10, "12345", 2, S("12")); - test(S("abcdefghij"), 0, 10, "12345", 4, S("1234")); - test(S("abcdefghij"), 0, 10, "12345", 5, S("12345")); - test(S("abcdefghij"), 0, 10, "1234567890", 0, S("")); - test(S("abcdefghij"), 0, 10, "1234567890", 1, S("1")); - test(S("abcdefghij"), 0, 10, "1234567890", 5, S("12345")); - test(S("abcdefghij"), 0, 10, "1234567890", 9, S("123456789")); - test(S("abcdefghij"), 0, 10, "1234567890", 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 0, S("")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 1, S("1")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 2, S("a12bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 4, S("a1234bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, "", 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 2, S("a12cdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 4, S("a1234cdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 9, S("a123456789cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghij")); +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcdefghij"), 0, 0, "12345678901234567890", 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, "", 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 2, S("12bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 4, S("1234bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 9, S("123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, "", 0, S("fghij")); + test(S("abcdefghij"), 0, 5, "12345", 0, S("fghij")); + test(S("abcdefghij"), 0, 5, "12345", 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, "12345", 2, S("12fghij")); + test(S("abcdefghij"), 0, 5, "12345", 4, S("1234fghij")); + test(S("abcdefghij"), 0, 5, "12345", 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 0, S("fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 9, S("123456789fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 0, S("fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 19, S("1234567890123456789fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 20, S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, "", 0, S("j")); + test(S("abcdefghij"), 0, 9, "12345", 0, S("j")); + test(S("abcdefghij"), 0, 9, "12345", 1, S("1j")); + test(S("abcdefghij"), 0, 9, "12345", 2, S("12j")); + test(S("abcdefghij"), 0, 9, "12345", 4, S("1234j")); + test(S("abcdefghij"), 0, 9, "12345", 5, S("12345j")); + test(S("abcdefghij"), 0, 9, "1234567890", 0, S("j")); + test(S("abcdefghij"), 0, 9, "1234567890", 1, S("1j")); + test(S("abcdefghij"), 0, 9, "1234567890", 5, S("12345j")); + test(S("abcdefghij"), 0, 9, "1234567890", 9, S("123456789j")); + test(S("abcdefghij"), 0, 9, "1234567890", 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 0, S("j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 1, S("1j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 19, S("1234567890123456789j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 20, S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, "", 0, S("")); + test(S("abcdefghij"), 0, 10, "12345", 0, S("")); + test(S("abcdefghij"), 0, 10, "12345", 1, S("1")); + test(S("abcdefghij"), 0, 10, "12345", 2, S("12")); + test(S("abcdefghij"), 0, 10, "12345", 4, S("1234")); + test(S("abcdefghij"), 0, 10, "12345", 5, S("12345")); + test(S("abcdefghij"), 0, 10, "1234567890", 0, S("")); + test(S("abcdefghij"), 0, 10, "1234567890", 1, S("1")); + test(S("abcdefghij"), 0, 10, "1234567890", 5, S("12345")); + test(S("abcdefghij"), 0, 10, "1234567890", 9, S("123456789")); + test(S("abcdefghij"), 0, 10, "1234567890", 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 0, S("")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 1, S("1")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 2, S("a12bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 4, S("a1234bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, "", 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 2, S("a12cdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 4, S("a1234cdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 9, S("a123456789cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcdefghij"), 1, 4, "", 0, S("afghij")); - test(S("abcdefghij"), 1, 4, "12345", 0, S("afghij")); - test(S("abcdefghij"), 1, 4, "12345", 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, "12345", 2, S("a12fghij")); - test(S("abcdefghij"), 1, 4, "12345", 4, S("a1234fghij")); - test(S("abcdefghij"), 1, 4, "12345", 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 0, S("afghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 9, S("a123456789fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 0, S("afghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 19, S("a1234567890123456789fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 20, S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, "", 0, S("aj")); - test(S("abcdefghij"), 1, 8, "12345", 0, S("aj")); - test(S("abcdefghij"), 1, 8, "12345", 1, S("a1j")); - test(S("abcdefghij"), 1, 8, "12345", 2, S("a12j")); - test(S("abcdefghij"), 1, 8, "12345", 4, S("a1234j")); - test(S("abcdefghij"), 1, 8, "12345", 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, "1234567890", 0, S("aj")); - test(S("abcdefghij"), 1, 8, "1234567890", 1, S("a1j")); - test(S("abcdefghij"), 1, 8, "1234567890", 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, "1234567890", 9, S("a123456789j")); - test(S("abcdefghij"), 1, 8, "1234567890", 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 0, S("aj")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 1, S("a1j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 19, S("a1234567890123456789j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 20, S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, "", 0, S("a")); - test(S("abcdefghij"), 1, 9, "12345", 0, S("a")); - test(S("abcdefghij"), 1, 9, "12345", 1, S("a1")); - test(S("abcdefghij"), 1, 9, "12345", 2, S("a12")); - test(S("abcdefghij"), 1, 9, "12345", 4, S("a1234")); - test(S("abcdefghij"), 1, 9, "12345", 5, S("a12345")); - test(S("abcdefghij"), 1, 9, "1234567890", 0, S("a")); - test(S("abcdefghij"), 1, 9, "1234567890", 1, S("a1")); - test(S("abcdefghij"), 1, 9, "1234567890", 5, S("a12345")); - test(S("abcdefghij"), 1, 9, "1234567890", 9, S("a123456789")); - test(S("abcdefghij"), 1, 9, "1234567890", 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 0, S("a")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 1, S("a1")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "12345", 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, "12345", 2, S("abcde12fghij")); - test(S("abcdefghij"), 5, 0, "12345", 4, S("abcde1234fghij")); - test(S("abcdefghij"), 5, 0, "12345", 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, "", 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "12345", 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "12345", 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, "12345", 2, S("abcde12ghij")); - test(S("abcdefghij"), 5, 1, "12345", 4, S("abcde1234ghij")); - test(S("abcdefghij"), 5, 1, "12345", 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 9, S("abcde123456789ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 19, S("abcde1234567890123456789ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 20, S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, "", 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, "12345", 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, "12345", 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, "12345", 2, S("abcde12hij")); - test(S("abcdefghij"), 5, 2, "12345", 4, S("abcde1234hij")); - test(S("abcdefghij"), 5, 2, "12345", 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, "1234567890", 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, "1234567890", 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, "1234567890", 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, "1234567890", 9, S("abcde123456789hij")); - test(S("abcdefghij"), 5, 2, "1234567890", 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 19, S("abcde1234567890123456789hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 20, S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, "", 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, "12345", 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, "12345", 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, "12345", 2, S("abcde12j")); +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcdefghij"), 1, 4, "", 0, S("afghij")); + test(S("abcdefghij"), 1, 4, "12345", 0, S("afghij")); + test(S("abcdefghij"), 1, 4, "12345", 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, "12345", 2, S("a12fghij")); + test(S("abcdefghij"), 1, 4, "12345", 4, S("a1234fghij")); + test(S("abcdefghij"), 1, 4, "12345", 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 0, S("afghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 9, S("a123456789fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 0, S("afghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 19, S("a1234567890123456789fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 20, S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, "", 0, S("aj")); + test(S("abcdefghij"), 1, 8, "12345", 0, S("aj")); + test(S("abcdefghij"), 1, 8, "12345", 1, S("a1j")); + test(S("abcdefghij"), 1, 8, "12345", 2, S("a12j")); + test(S("abcdefghij"), 1, 8, "12345", 4, S("a1234j")); + test(S("abcdefghij"), 1, 8, "12345", 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, "1234567890", 0, S("aj")); + test(S("abcdefghij"), 1, 8, "1234567890", 1, S("a1j")); + test(S("abcdefghij"), 1, 8, "1234567890", 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, "1234567890", 9, S("a123456789j")); + test(S("abcdefghij"), 1, 8, "1234567890", 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 0, S("aj")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 1, S("a1j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 19, S("a1234567890123456789j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 20, S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, "", 0, S("a")); + test(S("abcdefghij"), 1, 9, "12345", 0, S("a")); + test(S("abcdefghij"), 1, 9, "12345", 1, S("a1")); + test(S("abcdefghij"), 1, 9, "12345", 2, S("a12")); + test(S("abcdefghij"), 1, 9, "12345", 4, S("a1234")); + test(S("abcdefghij"), 1, 9, "12345", 5, S("a12345")); + test(S("abcdefghij"), 1, 9, "1234567890", 0, S("a")); + test(S("abcdefghij"), 1, 9, "1234567890", 1, S("a1")); + test(S("abcdefghij"), 1, 9, "1234567890", 5, S("a12345")); + test(S("abcdefghij"), 1, 9, "1234567890", 9, S("a123456789")); + test(S("abcdefghij"), 1, 9, "1234567890", 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 0, S("a")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 1, S("a1")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "12345", 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, "12345", 2, S("abcde12fghij")); + test(S("abcdefghij"), 5, 0, "12345", 4, S("abcde1234fghij")); + test(S("abcdefghij"), 5, 0, "12345", 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, "", 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "12345", 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "12345", 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, "12345", 2, S("abcde12ghij")); + test(S("abcdefghij"), 5, 1, "12345", 4, S("abcde1234ghij")); + test(S("abcdefghij"), 5, 1, "12345", 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 9, S("abcde123456789ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 19, S("abcde1234567890123456789ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 20, S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, "", 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, "12345", 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, "12345", 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, "12345", 2, S("abcde12hij")); + test(S("abcdefghij"), 5, 2, "12345", 4, S("abcde1234hij")); + test(S("abcdefghij"), 5, 2, "12345", 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, "1234567890", 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, "1234567890", 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, "1234567890", 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, "1234567890", 9, S("abcde123456789hij")); + test(S("abcdefghij"), 5, 2, "1234567890", 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 19, S("abcde1234567890123456789hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 20, S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, "", 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, "12345", 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, "12345", 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, "12345", 2, S("abcde12j")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcdefghij"), 5, 4, "12345", 4, S("abcde1234j")); - test(S("abcdefghij"), 5, 4, "12345", 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, "1234567890", 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, "1234567890", 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, "1234567890", 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, "1234567890", 9, S("abcde123456789j")); - test(S("abcdefghij"), 5, 4, "1234567890", 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 19, S("abcde1234567890123456789j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 20, S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, "", 0, S("abcde")); - test(S("abcdefghij"), 5, 5, "12345", 0, S("abcde")); - test(S("abcdefghij"), 5, 5, "12345", 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, "12345", 2, S("abcde12")); - test(S("abcdefghij"), 5, 5, "12345", 4, S("abcde1234")); - test(S("abcdefghij"), 5, 5, "12345", 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, "1234567890", 0, S("abcde")); - test(S("abcdefghij"), 5, 5, "1234567890", 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, "1234567890", 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, "1234567890", 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 5, "1234567890", 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 0, S("abcde")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 19, S("abcde1234567890123456789")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "12345", 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, "12345", 2, S("abcdefghi12j")); - test(S("abcdefghij"), 9, 0, "12345", 4, S("abcdefghi1234j")); - test(S("abcdefghij"), 9, 0, "12345", 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "1234567890", 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, "1234567890", 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, "1234567890", 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, 0, "1234567890", 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 19, S("abcdefghi1234567890123456789j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 20, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, "", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "12345", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "12345", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, "12345", 2, S("abcdefghi12")); - test(S("abcdefghij"), 9, 1, "12345", 4, S("abcdefghi1234")); - test(S("abcdefghij"), 9, 1, "12345", 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, "1234567890", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "1234567890", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, "1234567890", 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, "1234567890", 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 1, "1234567890", 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 19, S("abcdefghi1234567890123456789")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 20, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "12345", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, "12345", 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, 0, "12345", 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, 0, "12345", 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "1234567890", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, "1234567890", 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, "1234567890", 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 0, "1234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 2, S("12abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 4, S("1234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "", 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 2, S("12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 4, S("1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 1, S("1bcdefghijklmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcdefghij"), 5, 4, "12345", 4, S("abcde1234j")); + test(S("abcdefghij"), 5, 4, "12345", 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, "1234567890", 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, "1234567890", 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, "1234567890", 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, "1234567890", 9, S("abcde123456789j")); + test(S("abcdefghij"), 5, 4, "1234567890", 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 19, S("abcde1234567890123456789j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 20, S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, "", 0, S("abcde")); + test(S("abcdefghij"), 5, 5, "12345", 0, S("abcde")); + test(S("abcdefghij"), 5, 5, "12345", 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, "12345", 2, S("abcde12")); + test(S("abcdefghij"), 5, 5, "12345", 4, S("abcde1234")); + test(S("abcdefghij"), 5, 5, "12345", 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, "1234567890", 0, S("abcde")); + test(S("abcdefghij"), 5, 5, "1234567890", 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, "1234567890", 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, "1234567890", 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 5, "1234567890", 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 0, S("abcde")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 19, S("abcde1234567890123456789")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "12345", 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, "12345", 2, S("abcdefghi12j")); + test(S("abcdefghij"), 9, 0, "12345", 4, S("abcdefghi1234j")); + test(S("abcdefghij"), 9, 0, "12345", 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "1234567890", 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, "1234567890", 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, "1234567890", 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, 0, "1234567890", 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 19, S("abcdefghi1234567890123456789j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 20, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, "", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "12345", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "12345", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, "12345", 2, S("abcdefghi12")); + test(S("abcdefghij"), 9, 1, "12345", 4, S("abcdefghi1234")); + test(S("abcdefghij"), 9, 1, "12345", 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, "1234567890", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "1234567890", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, "1234567890", 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, "1234567890", 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 1, "1234567890", 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 19, S("abcdefghi1234567890123456789")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 20, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "12345", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, "12345", 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, 0, "12345", 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, 0, "12345", 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "1234567890", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, "1234567890", 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, "1234567890", 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 0, "1234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 2, S("12abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 4, S("1234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "", 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 2, S("12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 4, S("1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 1, S("1bcdefghijklmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 9, S("123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "", 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 2, S("12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 4, S("1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 9, S("123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 19, S("1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 20, S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, "", 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 2, S("12t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 4, S("1234t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 9, S("123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 19, S("1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 20, S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, "", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 2, S("12")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 4, S("1234")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 2, S("a12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 4, S("a1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "", 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 2, S("a12cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 4, S("a1234cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 9, S("a123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "", 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 2, S("a12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 4, S("a1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 9, S("a123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 0, S("aklmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 9, S("123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "", 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 2, S("12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 4, S("1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 9, S("123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 19, S("1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 20, S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, "", 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 2, S("12t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 4, S("1234t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 9, S("123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 19, S("1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 20, S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, "", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 2, S("12")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 4, S("1234")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 2, S("a12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 4, S("a1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "", 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 2, S("a12cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 4, S("a1234cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 9, S("a123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "", 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 2, S("a12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 4, S("a1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 9, S("a123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 0, S("aklmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, "", 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 2, S("a12t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 4, S("a1234t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 9, S("a123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 19, S("a1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 20, S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, "", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 2, S("a12")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 4, S("a1234")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 2, S("abcdefghij12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 4, S("abcdefghij1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "", 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 2, S("abcdefghij12lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 4, S("abcdefghij1234lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 9, S("abcdefghij123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 19, S("abcdefghij1234567890123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 20, S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "", 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 2, S("abcdefghij12pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 4, S("abcdefghij1234pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 9, S("abcdefghij123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 19, S("abcdefghij1234567890123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 20, S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, "", 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 2, S("abcdefghij12t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 4, S("abcdefghij1234t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 9, S("abcdefghij123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 19, S("abcdefghij1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 20, S("abcdefghij12345678901234567890t")); +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, "", 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 2, S("a12t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 4, S("a1234t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 9, S("a123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 19, S("a1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 20, S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, "", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 2, S("a12")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 4, S("a1234")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 2, S("abcdefghij12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 4, S("abcdefghij1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "", 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 2, S("abcdefghij12lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 4, S("abcdefghij1234lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 9, S("abcdefghij123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 19, S("abcdefghij1234567890123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 20, S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "", 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 2, S("abcdefghij12pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 4, S("abcdefghij1234pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 9, S("abcdefghij123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 19, S("abcdefghij1234567890123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 20, S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, "", 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 2, S("abcdefghij12t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 4, S("abcdefghij1234t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 9, S("abcdefghij123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 19, S("abcdefghij1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 20, S("abcdefghij12345678901234567890t")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, "", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 2, S("abcdefghij12")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 4, S("abcdefghij1234")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 2, S("abcdefghijklmnopqrs12t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 4, S("abcdefghijklmnopqrs1234t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, "", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 2, S("abcdefghijklmnopqrs12")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 4, S("abcdefghijklmnopqrs1234")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcdefghijklmnopqrst"), 10, 10, "", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 2, S("abcdefghij12")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 4, S("abcdefghij1234")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 2, S("abcdefghijklmnopqrs12t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 4, S("abcdefghijklmnopqrs1234t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, "", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 2, S("abcdefghijklmnopqrs12")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 4, S("abcdefghijklmnopqrs1234")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890")); - return true; + return true; } template @@ -1006,8 +1000,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_size_char.pass.cpp @@ -20,249 +20,249 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, typename S::size_type n2, - typename S::value_type c, S expected) -{ - typename S::size_type old_size = s.size(); - typename S::const_iterator first = s.begin() + pos1; - typename S::const_iterator last = s.begin() + pos1 + n1; - typename S::size_type xlen = last - first; - s.replace(first, last, n2, c); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type rlen = n2; - assert(s.size() == old_size - xlen + rlen); +test(S s, + typename S::size_type pos1, + typename S::size_type n1, + typename S::size_type n2, + typename S::value_type c, + S expected) { + typename S::size_type old_size = s.size(); + typename S::const_iterator first = s.begin() + pos1; + typename S::const_iterator last = s.begin() + pos1 + n1; + typename S::size_type xlen = last - first; + s.replace(first, last, n2, c); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type rlen = n2; + assert(s.size() == old_size - xlen + rlen); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), 0, 0, 0, '3', S("")); - test(S(""), 0, 0, 5, '3', S("33333")); - test(S(""), 0, 0, 10, '3', S("3333333333")); - test(S(""), 0, 0, 20, '3', S("33333333333333333333")); - test(S("abcde"), 0, 0, 0, '3', S("abcde")); - test(S("abcde"), 0, 0, 5, '3', S("33333abcde")); - test(S("abcde"), 0, 0, 10, '3', S("3333333333abcde")); - test(S("abcde"), 0, 0, 20, '3', S("33333333333333333333abcde")); - test(S("abcde"), 0, 1, 0, '3', S("bcde")); - test(S("abcde"), 0, 1, 5, '3', S("33333bcde")); - test(S("abcde"), 0, 1, 10, '3', S("3333333333bcde")); - test(S("abcde"), 0, 1, 20, '3', S("33333333333333333333bcde")); - test(S("abcde"), 0, 2, 0, '3', S("cde")); - test(S("abcde"), 0, 2, 5, '3', S("33333cde")); - test(S("abcde"), 0, 2, 10, '3', S("3333333333cde")); - test(S("abcde"), 0, 2, 20, '3', S("33333333333333333333cde")); - test(S("abcde"), 0, 4, 0, '3', S("e")); - test(S("abcde"), 0, 4, 5, '3', S("33333e")); - test(S("abcde"), 0, 4, 10, '3', S("3333333333e")); - test(S("abcde"), 0, 4, 20, '3', S("33333333333333333333e")); - test(S("abcde"), 0, 5, 0, '3', S("")); - test(S("abcde"), 0, 5, 5, '3', S("33333")); - test(S("abcde"), 0, 5, 10, '3', S("3333333333")); - test(S("abcde"), 0, 5, 20, '3', S("33333333333333333333")); - test(S("abcde"), 1, 0, 0, '3', S("abcde")); - test(S("abcde"), 1, 0, 5, '3', S("a33333bcde")); - test(S("abcde"), 1, 0, 10, '3', S("a3333333333bcde")); - test(S("abcde"), 1, 0, 20, '3', S("a33333333333333333333bcde")); - test(S("abcde"), 1, 1, 0, '3', S("acde")); - test(S("abcde"), 1, 1, 5, '3', S("a33333cde")); - test(S("abcde"), 1, 1, 10, '3', S("a3333333333cde")); - test(S("abcde"), 1, 1, 20, '3', S("a33333333333333333333cde")); - test(S("abcde"), 1, 2, 0, '3', S("ade")); - test(S("abcde"), 1, 2, 5, '3', S("a33333de")); - test(S("abcde"), 1, 2, 10, '3', S("a3333333333de")); - test(S("abcde"), 1, 2, 20, '3', S("a33333333333333333333de")); - test(S("abcde"), 1, 3, 0, '3', S("ae")); - test(S("abcde"), 1, 3, 5, '3', S("a33333e")); - test(S("abcde"), 1, 3, 10, '3', S("a3333333333e")); - test(S("abcde"), 1, 3, 20, '3', S("a33333333333333333333e")); - test(S("abcde"), 1, 4, 0, '3', S("a")); - test(S("abcde"), 1, 4, 5, '3', S("a33333")); - test(S("abcde"), 1, 4, 10, '3', S("a3333333333")); - test(S("abcde"), 1, 4, 20, '3', S("a33333333333333333333")); - test(S("abcde"), 2, 0, 0, '3', S("abcde")); - test(S("abcde"), 2, 0, 5, '3', S("ab33333cde")); - test(S("abcde"), 2, 0, 10, '3', S("ab3333333333cde")); - test(S("abcde"), 2, 0, 20, '3', S("ab33333333333333333333cde")); - test(S("abcde"), 2, 1, 0, '3', S("abde")); - test(S("abcde"), 2, 1, 5, '3', S("ab33333de")); - test(S("abcde"), 2, 1, 10, '3', S("ab3333333333de")); - test(S("abcde"), 2, 1, 20, '3', S("ab33333333333333333333de")); - test(S("abcde"), 2, 2, 0, '3', S("abe")); - test(S("abcde"), 2, 2, 5, '3', S("ab33333e")); - test(S("abcde"), 2, 2, 10, '3', S("ab3333333333e")); - test(S("abcde"), 2, 2, 20, '3', S("ab33333333333333333333e")); - test(S("abcde"), 2, 3, 0, '3', S("ab")); - test(S("abcde"), 2, 3, 5, '3', S("ab33333")); - test(S("abcde"), 2, 3, 10, '3', S("ab3333333333")); - test(S("abcde"), 2, 3, 20, '3', S("ab33333333333333333333")); - test(S("abcde"), 4, 0, 0, '3', S("abcde")); - test(S("abcde"), 4, 0, 5, '3', S("abcd33333e")); - test(S("abcde"), 4, 0, 10, '3', S("abcd3333333333e")); - test(S("abcde"), 4, 0, 20, '3', S("abcd33333333333333333333e")); - test(S("abcde"), 4, 1, 0, '3', S("abcd")); - test(S("abcde"), 4, 1, 5, '3', S("abcd33333")); - test(S("abcde"), 4, 1, 10, '3', S("abcd3333333333")); - test(S("abcde"), 4, 1, 20, '3', S("abcd33333333333333333333")); - test(S("abcde"), 5, 0, 0, '3', S("abcde")); - test(S("abcde"), 5, 0, 5, '3', S("abcde33333")); - test(S("abcde"), 5, 0, 10, '3', S("abcde3333333333")); - test(S("abcde"), 5, 0, 20, '3', S("abcde33333333333333333333")); - test(S("abcdefghij"), 0, 0, 0, '3', S("abcdefghij")); - test(S("abcdefghij"), 0, 0, 5, '3', S("33333abcdefghij")); - test(S("abcdefghij"), 0, 0, 10, '3', S("3333333333abcdefghij")); - test(S("abcdefghij"), 0, 0, 20, '3', S("33333333333333333333abcdefghij")); - test(S("abcdefghij"), 0, 1, 0, '3', S("bcdefghij")); - test(S("abcdefghij"), 0, 1, 5, '3', S("33333bcdefghij")); - test(S("abcdefghij"), 0, 1, 10, '3', S("3333333333bcdefghij")); - test(S("abcdefghij"), 0, 1, 20, '3', S("33333333333333333333bcdefghij")); - test(S("abcdefghij"), 0, 5, 0, '3', S("fghij")); - test(S("abcdefghij"), 0, 5, 5, '3', S("33333fghij")); - test(S("abcdefghij"), 0, 5, 10, '3', S("3333333333fghij")); - test(S("abcdefghij"), 0, 5, 20, '3', S("33333333333333333333fghij")); - test(S("abcdefghij"), 0, 9, 0, '3', S("j")); - test(S("abcdefghij"), 0, 9, 5, '3', S("33333j")); - test(S("abcdefghij"), 0, 9, 10, '3', S("3333333333j")); - test(S("abcdefghij"), 0, 9, 20, '3', S("33333333333333333333j")); - test(S("abcdefghij"), 0, 10, 0, '3', S("")); - test(S("abcdefghij"), 0, 10, 5, '3', S("33333")); - test(S("abcdefghij"), 0, 10, 10, '3', S("3333333333")); - test(S("abcdefghij"), 0, 10, 20, '3', S("33333333333333333333")); - test(S("abcdefghij"), 1, 0, 0, '3', S("abcdefghij")); - test(S("abcdefghij"), 1, 0, 5, '3', S("a33333bcdefghij")); - test(S("abcdefghij"), 1, 0, 10, '3', S("a3333333333bcdefghij")); - test(S("abcdefghij"), 1, 0, 20, '3', S("a33333333333333333333bcdefghij")); - test(S("abcdefghij"), 1, 1, 0, '3', S("acdefghij")); - test(S("abcdefghij"), 1, 1, 5, '3', S("a33333cdefghij")); - test(S("abcdefghij"), 1, 1, 10, '3', S("a3333333333cdefghij")); - test(S("abcdefghij"), 1, 1, 20, '3', S("a33333333333333333333cdefghij")); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), 0, 0, 0, '3', S("")); + test(S(""), 0, 0, 5, '3', S("33333")); + test(S(""), 0, 0, 10, '3', S("3333333333")); + test(S(""), 0, 0, 20, '3', S("33333333333333333333")); + test(S("abcde"), 0, 0, 0, '3', S("abcde")); + test(S("abcde"), 0, 0, 5, '3', S("33333abcde")); + test(S("abcde"), 0, 0, 10, '3', S("3333333333abcde")); + test(S("abcde"), 0, 0, 20, '3', S("33333333333333333333abcde")); + test(S("abcde"), 0, 1, 0, '3', S("bcde")); + test(S("abcde"), 0, 1, 5, '3', S("33333bcde")); + test(S("abcde"), 0, 1, 10, '3', S("3333333333bcde")); + test(S("abcde"), 0, 1, 20, '3', S("33333333333333333333bcde")); + test(S("abcde"), 0, 2, 0, '3', S("cde")); + test(S("abcde"), 0, 2, 5, '3', S("33333cde")); + test(S("abcde"), 0, 2, 10, '3', S("3333333333cde")); + test(S("abcde"), 0, 2, 20, '3', S("33333333333333333333cde")); + test(S("abcde"), 0, 4, 0, '3', S("e")); + test(S("abcde"), 0, 4, 5, '3', S("33333e")); + test(S("abcde"), 0, 4, 10, '3', S("3333333333e")); + test(S("abcde"), 0, 4, 20, '3', S("33333333333333333333e")); + test(S("abcde"), 0, 5, 0, '3', S("")); + test(S("abcde"), 0, 5, 5, '3', S("33333")); + test(S("abcde"), 0, 5, 10, '3', S("3333333333")); + test(S("abcde"), 0, 5, 20, '3', S("33333333333333333333")); + test(S("abcde"), 1, 0, 0, '3', S("abcde")); + test(S("abcde"), 1, 0, 5, '3', S("a33333bcde")); + test(S("abcde"), 1, 0, 10, '3', S("a3333333333bcde")); + test(S("abcde"), 1, 0, 20, '3', S("a33333333333333333333bcde")); + test(S("abcde"), 1, 1, 0, '3', S("acde")); + test(S("abcde"), 1, 1, 5, '3', S("a33333cde")); + test(S("abcde"), 1, 1, 10, '3', S("a3333333333cde")); + test(S("abcde"), 1, 1, 20, '3', S("a33333333333333333333cde")); + test(S("abcde"), 1, 2, 0, '3', S("ade")); + test(S("abcde"), 1, 2, 5, '3', S("a33333de")); + test(S("abcde"), 1, 2, 10, '3', S("a3333333333de")); + test(S("abcde"), 1, 2, 20, '3', S("a33333333333333333333de")); + test(S("abcde"), 1, 3, 0, '3', S("ae")); + test(S("abcde"), 1, 3, 5, '3', S("a33333e")); + test(S("abcde"), 1, 3, 10, '3', S("a3333333333e")); + test(S("abcde"), 1, 3, 20, '3', S("a33333333333333333333e")); + test(S("abcde"), 1, 4, 0, '3', S("a")); + test(S("abcde"), 1, 4, 5, '3', S("a33333")); + test(S("abcde"), 1, 4, 10, '3', S("a3333333333")); + test(S("abcde"), 1, 4, 20, '3', S("a33333333333333333333")); + test(S("abcde"), 2, 0, 0, '3', S("abcde")); + test(S("abcde"), 2, 0, 5, '3', S("ab33333cde")); + test(S("abcde"), 2, 0, 10, '3', S("ab3333333333cde")); + test(S("abcde"), 2, 0, 20, '3', S("ab33333333333333333333cde")); + test(S("abcde"), 2, 1, 0, '3', S("abde")); + test(S("abcde"), 2, 1, 5, '3', S("ab33333de")); + test(S("abcde"), 2, 1, 10, '3', S("ab3333333333de")); + test(S("abcde"), 2, 1, 20, '3', S("ab33333333333333333333de")); + test(S("abcde"), 2, 2, 0, '3', S("abe")); + test(S("abcde"), 2, 2, 5, '3', S("ab33333e")); + test(S("abcde"), 2, 2, 10, '3', S("ab3333333333e")); + test(S("abcde"), 2, 2, 20, '3', S("ab33333333333333333333e")); + test(S("abcde"), 2, 3, 0, '3', S("ab")); + test(S("abcde"), 2, 3, 5, '3', S("ab33333")); + test(S("abcde"), 2, 3, 10, '3', S("ab3333333333")); + test(S("abcde"), 2, 3, 20, '3', S("ab33333333333333333333")); + test(S("abcde"), 4, 0, 0, '3', S("abcde")); + test(S("abcde"), 4, 0, 5, '3', S("abcd33333e")); + test(S("abcde"), 4, 0, 10, '3', S("abcd3333333333e")); + test(S("abcde"), 4, 0, 20, '3', S("abcd33333333333333333333e")); + test(S("abcde"), 4, 1, 0, '3', S("abcd")); + test(S("abcde"), 4, 1, 5, '3', S("abcd33333")); + test(S("abcde"), 4, 1, 10, '3', S("abcd3333333333")); + test(S("abcde"), 4, 1, 20, '3', S("abcd33333333333333333333")); + test(S("abcde"), 5, 0, 0, '3', S("abcde")); + test(S("abcde"), 5, 0, 5, '3', S("abcde33333")); + test(S("abcde"), 5, 0, 10, '3', S("abcde3333333333")); + test(S("abcde"), 5, 0, 20, '3', S("abcde33333333333333333333")); + test(S("abcdefghij"), 0, 0, 0, '3', S("abcdefghij")); + test(S("abcdefghij"), 0, 0, 5, '3', S("33333abcdefghij")); + test(S("abcdefghij"), 0, 0, 10, '3', S("3333333333abcdefghij")); + test(S("abcdefghij"), 0, 0, 20, '3', S("33333333333333333333abcdefghij")); + test(S("abcdefghij"), 0, 1, 0, '3', S("bcdefghij")); + test(S("abcdefghij"), 0, 1, 5, '3', S("33333bcdefghij")); + test(S("abcdefghij"), 0, 1, 10, '3', S("3333333333bcdefghij")); + test(S("abcdefghij"), 0, 1, 20, '3', S("33333333333333333333bcdefghij")); + test(S("abcdefghij"), 0, 5, 0, '3', S("fghij")); + test(S("abcdefghij"), 0, 5, 5, '3', S("33333fghij")); + test(S("abcdefghij"), 0, 5, 10, '3', S("3333333333fghij")); + test(S("abcdefghij"), 0, 5, 20, '3', S("33333333333333333333fghij")); + test(S("abcdefghij"), 0, 9, 0, '3', S("j")); + test(S("abcdefghij"), 0, 9, 5, '3', S("33333j")); + test(S("abcdefghij"), 0, 9, 10, '3', S("3333333333j")); + test(S("abcdefghij"), 0, 9, 20, '3', S("33333333333333333333j")); + test(S("abcdefghij"), 0, 10, 0, '3', S("")); + test(S("abcdefghij"), 0, 10, 5, '3', S("33333")); + test(S("abcdefghij"), 0, 10, 10, '3', S("3333333333")); + test(S("abcdefghij"), 0, 10, 20, '3', S("33333333333333333333")); + test(S("abcdefghij"), 1, 0, 0, '3', S("abcdefghij")); + test(S("abcdefghij"), 1, 0, 5, '3', S("a33333bcdefghij")); + test(S("abcdefghij"), 1, 0, 10, '3', S("a3333333333bcdefghij")); + test(S("abcdefghij"), 1, 0, 20, '3', S("a33333333333333333333bcdefghij")); + test(S("abcdefghij"), 1, 1, 0, '3', S("acdefghij")); + test(S("abcdefghij"), 1, 1, 5, '3', S("a33333cdefghij")); + test(S("abcdefghij"), 1, 1, 10, '3', S("a3333333333cdefghij")); + test(S("abcdefghij"), 1, 1, 20, '3', S("a33333333333333333333cdefghij")); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("abcdefghij"), 1, 4, 0, '3', S("afghij")); - test(S("abcdefghij"), 1, 4, 5, '3', S("a33333fghij")); - test(S("abcdefghij"), 1, 4, 10, '3', S("a3333333333fghij")); - test(S("abcdefghij"), 1, 4, 20, '3', S("a33333333333333333333fghij")); - test(S("abcdefghij"), 1, 8, 0, '3', S("aj")); - test(S("abcdefghij"), 1, 8, 5, '3', S("a33333j")); - test(S("abcdefghij"), 1, 8, 10, '3', S("a3333333333j")); - test(S("abcdefghij"), 1, 8, 20, '3', S("a33333333333333333333j")); - test(S("abcdefghij"), 1, 9, 0, '3', S("a")); - test(S("abcdefghij"), 1, 9, 5, '3', S("a33333")); - test(S("abcdefghij"), 1, 9, 10, '3', S("a3333333333")); - test(S("abcdefghij"), 1, 9, 20, '3', S("a33333333333333333333")); - test(S("abcdefghij"), 5, 0, 0, '3', S("abcdefghij")); - test(S("abcdefghij"), 5, 0, 5, '3', S("abcde33333fghij")); - test(S("abcdefghij"), 5, 0, 10, '3', S("abcde3333333333fghij")); - test(S("abcdefghij"), 5, 0, 20, '3', S("abcde33333333333333333333fghij")); - test(S("abcdefghij"), 5, 1, 0, '3', S("abcdeghij")); - test(S("abcdefghij"), 5, 1, 5, '3', S("abcde33333ghij")); - test(S("abcdefghij"), 5, 1, 10, '3', S("abcde3333333333ghij")); - test(S("abcdefghij"), 5, 1, 20, '3', S("abcde33333333333333333333ghij")); - test(S("abcdefghij"), 5, 2, 0, '3', S("abcdehij")); - test(S("abcdefghij"), 5, 2, 5, '3', S("abcde33333hij")); - test(S("abcdefghij"), 5, 2, 10, '3', S("abcde3333333333hij")); - test(S("abcdefghij"), 5, 2, 20, '3', S("abcde33333333333333333333hij")); - test(S("abcdefghij"), 5, 4, 0, '3', S("abcdej")); - test(S("abcdefghij"), 5, 4, 5, '3', S("abcde33333j")); - test(S("abcdefghij"), 5, 4, 10, '3', S("abcde3333333333j")); - test(S("abcdefghij"), 5, 4, 20, '3', S("abcde33333333333333333333j")); - test(S("abcdefghij"), 5, 5, 0, '3', S("abcde")); - test(S("abcdefghij"), 5, 5, 5, '3', S("abcde33333")); - test(S("abcdefghij"), 5, 5, 10, '3', S("abcde3333333333")); - test(S("abcdefghij"), 5, 5, 20, '3', S("abcde33333333333333333333")); - test(S("abcdefghij"), 9, 0, 0, '3', S("abcdefghij")); - test(S("abcdefghij"), 9, 0, 5, '3', S("abcdefghi33333j")); - test(S("abcdefghij"), 9, 0, 10, '3', S("abcdefghi3333333333j")); - test(S("abcdefghij"), 9, 0, 20, '3', S("abcdefghi33333333333333333333j")); - test(S("abcdefghij"), 9, 1, 0, '3', S("abcdefghi")); - test(S("abcdefghij"), 9, 1, 5, '3', S("abcdefghi33333")); - test(S("abcdefghij"), 9, 1, 10, '3', S("abcdefghi3333333333")); - test(S("abcdefghij"), 9, 1, 20, '3', S("abcdefghi33333333333333333333")); - test(S("abcdefghij"), 10, 0, 0, '3', S("abcdefghij")); - test(S("abcdefghij"), 10, 0, 5, '3', S("abcdefghij33333")); - test(S("abcdefghij"), 10, 0, 10, '3', S("abcdefghij3333333333")); - test(S("abcdefghij"), 10, 0, 20, '3', S("abcdefghij33333333333333333333")); - test(S("abcdefghijklmnopqrst"), 0, 0, 0, '3', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, 5, '3', S("33333abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, 10, '3', S("3333333333abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, 20, '3', S("33333333333333333333abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, 0, '3', S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, 5, '3', S("33333bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, 10, '3', S("3333333333bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, 20, '3', S("33333333333333333333bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, 0, '3', S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, 5, '3', S("33333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, 10, '3', S("3333333333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, 20, '3', S("33333333333333333333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, 0, '3', S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, 5, '3', S("33333t")); - test(S("abcdefghijklmnopqrst"), 0, 19, 10, '3', S("3333333333t")); - test(S("abcdefghijklmnopqrst"), 0, 19, 20, '3', S("33333333333333333333t")); - test(S("abcdefghijklmnopqrst"), 0, 20, 0, '3', S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, 5, '3', S("33333")); - test(S("abcdefghijklmnopqrst"), 0, 20, 10, '3', S("3333333333")); - test(S("abcdefghijklmnopqrst"), 0, 20, 20, '3', S("33333333333333333333")); - test(S("abcdefghijklmnopqrst"), 1, 0, 0, '3', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, 5, '3', S("a33333bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, 10, '3', S("a3333333333bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, 20, '3', S("a33333333333333333333bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, 0, '3', S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, 5, '3', S("a33333cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, 10, '3', S("a3333333333cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, 20, '3', S("a33333333333333333333cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, 0, '3', S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, 5, '3', S("a33333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, 10, '3', S("a3333333333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, 20, '3', S("a33333333333333333333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, 0, '3', S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, 5, '3', S("a33333t")); - test(S("abcdefghijklmnopqrst"), 1, 18, 10, '3', S("a3333333333t")); - test(S("abcdefghijklmnopqrst"), 1, 18, 20, '3', S("a33333333333333333333t")); - test(S("abcdefghijklmnopqrst"), 1, 19, 0, '3', S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, 5, '3', S("a33333")); - test(S("abcdefghijklmnopqrst"), 1, 19, 10, '3', S("a3333333333")); - test(S("abcdefghijklmnopqrst"), 1, 19, 20, '3', S("a33333333333333333333")); - test(S("abcdefghijklmnopqrst"), 10, 0, 0, '3', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, 5, '3', S("abcdefghij33333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, 10, '3', S("abcdefghij3333333333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, 20, '3', S("abcdefghij33333333333333333333klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, 0, '3', S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, 5, '3', S("abcdefghij33333lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, 10, '3', S("abcdefghij3333333333lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, 20, '3', S("abcdefghij33333333333333333333lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, 0, '3', S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, 5, '3', S("abcdefghij33333pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, 10, '3', S("abcdefghij3333333333pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, 20, '3', S("abcdefghij33333333333333333333pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, 0, '3', S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, 5, '3', S("abcdefghij33333t")); - test(S("abcdefghijklmnopqrst"), 10, 9, 10, '3', S("abcdefghij3333333333t")); - test(S("abcdefghijklmnopqrst"), 10, 9, 20, '3', S("abcdefghij33333333333333333333t")); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("abcdefghij"), 1, 4, 0, '3', S("afghij")); + test(S("abcdefghij"), 1, 4, 5, '3', S("a33333fghij")); + test(S("abcdefghij"), 1, 4, 10, '3', S("a3333333333fghij")); + test(S("abcdefghij"), 1, 4, 20, '3', S("a33333333333333333333fghij")); + test(S("abcdefghij"), 1, 8, 0, '3', S("aj")); + test(S("abcdefghij"), 1, 8, 5, '3', S("a33333j")); + test(S("abcdefghij"), 1, 8, 10, '3', S("a3333333333j")); + test(S("abcdefghij"), 1, 8, 20, '3', S("a33333333333333333333j")); + test(S("abcdefghij"), 1, 9, 0, '3', S("a")); + test(S("abcdefghij"), 1, 9, 5, '3', S("a33333")); + test(S("abcdefghij"), 1, 9, 10, '3', S("a3333333333")); + test(S("abcdefghij"), 1, 9, 20, '3', S("a33333333333333333333")); + test(S("abcdefghij"), 5, 0, 0, '3', S("abcdefghij")); + test(S("abcdefghij"), 5, 0, 5, '3', S("abcde33333fghij")); + test(S("abcdefghij"), 5, 0, 10, '3', S("abcde3333333333fghij")); + test(S("abcdefghij"), 5, 0, 20, '3', S("abcde33333333333333333333fghij")); + test(S("abcdefghij"), 5, 1, 0, '3', S("abcdeghij")); + test(S("abcdefghij"), 5, 1, 5, '3', S("abcde33333ghij")); + test(S("abcdefghij"), 5, 1, 10, '3', S("abcde3333333333ghij")); + test(S("abcdefghij"), 5, 1, 20, '3', S("abcde33333333333333333333ghij")); + test(S("abcdefghij"), 5, 2, 0, '3', S("abcdehij")); + test(S("abcdefghij"), 5, 2, 5, '3', S("abcde33333hij")); + test(S("abcdefghij"), 5, 2, 10, '3', S("abcde3333333333hij")); + test(S("abcdefghij"), 5, 2, 20, '3', S("abcde33333333333333333333hij")); + test(S("abcdefghij"), 5, 4, 0, '3', S("abcdej")); + test(S("abcdefghij"), 5, 4, 5, '3', S("abcde33333j")); + test(S("abcdefghij"), 5, 4, 10, '3', S("abcde3333333333j")); + test(S("abcdefghij"), 5, 4, 20, '3', S("abcde33333333333333333333j")); + test(S("abcdefghij"), 5, 5, 0, '3', S("abcde")); + test(S("abcdefghij"), 5, 5, 5, '3', S("abcde33333")); + test(S("abcdefghij"), 5, 5, 10, '3', S("abcde3333333333")); + test(S("abcdefghij"), 5, 5, 20, '3', S("abcde33333333333333333333")); + test(S("abcdefghij"), 9, 0, 0, '3', S("abcdefghij")); + test(S("abcdefghij"), 9, 0, 5, '3', S("abcdefghi33333j")); + test(S("abcdefghij"), 9, 0, 10, '3', S("abcdefghi3333333333j")); + test(S("abcdefghij"), 9, 0, 20, '3', S("abcdefghi33333333333333333333j")); + test(S("abcdefghij"), 9, 1, 0, '3', S("abcdefghi")); + test(S("abcdefghij"), 9, 1, 5, '3', S("abcdefghi33333")); + test(S("abcdefghij"), 9, 1, 10, '3', S("abcdefghi3333333333")); + test(S("abcdefghij"), 9, 1, 20, '3', S("abcdefghi33333333333333333333")); + test(S("abcdefghij"), 10, 0, 0, '3', S("abcdefghij")); + test(S("abcdefghij"), 10, 0, 5, '3', S("abcdefghij33333")); + test(S("abcdefghij"), 10, 0, 10, '3', S("abcdefghij3333333333")); + test(S("abcdefghij"), 10, 0, 20, '3', S("abcdefghij33333333333333333333")); + test(S("abcdefghijklmnopqrst"), 0, 0, 0, '3', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, 5, '3', S("33333abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, 10, '3', S("3333333333abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, 20, '3', S("33333333333333333333abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, 0, '3', S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, 5, '3', S("33333bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, 10, '3', S("3333333333bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, 20, '3', S("33333333333333333333bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, 0, '3', S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, 5, '3', S("33333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, 10, '3', S("3333333333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, 20, '3', S("33333333333333333333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, 0, '3', S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, 5, '3', S("33333t")); + test(S("abcdefghijklmnopqrst"), 0, 19, 10, '3', S("3333333333t")); + test(S("abcdefghijklmnopqrst"), 0, 19, 20, '3', S("33333333333333333333t")); + test(S("abcdefghijklmnopqrst"), 0, 20, 0, '3', S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, 5, '3', S("33333")); + test(S("abcdefghijklmnopqrst"), 0, 20, 10, '3', S("3333333333")); + test(S("abcdefghijklmnopqrst"), 0, 20, 20, '3', S("33333333333333333333")); + test(S("abcdefghijklmnopqrst"), 1, 0, 0, '3', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, 5, '3', S("a33333bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, 10, '3', S("a3333333333bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, 20, '3', S("a33333333333333333333bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, 0, '3', S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, 5, '3', S("a33333cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, 10, '3', S("a3333333333cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, 20, '3', S("a33333333333333333333cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, 0, '3', S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, 5, '3', S("a33333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, 10, '3', S("a3333333333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, 20, '3', S("a33333333333333333333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, 0, '3', S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, 5, '3', S("a33333t")); + test(S("abcdefghijklmnopqrst"), 1, 18, 10, '3', S("a3333333333t")); + test(S("abcdefghijklmnopqrst"), 1, 18, 20, '3', S("a33333333333333333333t")); + test(S("abcdefghijklmnopqrst"), 1, 19, 0, '3', S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, 5, '3', S("a33333")); + test(S("abcdefghijklmnopqrst"), 1, 19, 10, '3', S("a3333333333")); + test(S("abcdefghijklmnopqrst"), 1, 19, 20, '3', S("a33333333333333333333")); + test(S("abcdefghijklmnopqrst"), 10, 0, 0, '3', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, 5, '3', S("abcdefghij33333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, 10, '3', S("abcdefghij3333333333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, 20, '3', S("abcdefghij33333333333333333333klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, 0, '3', S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, 5, '3', S("abcdefghij33333lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, 10, '3', S("abcdefghij3333333333lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, 20, '3', S("abcdefghij33333333333333333333lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, 0, '3', S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, 5, '3', S("abcdefghij33333pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, 10, '3', S("abcdefghij3333333333pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, 20, '3', S("abcdefghij33333333333333333333pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, 0, '3', S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, 5, '3', S("abcdefghij33333t")); + test(S("abcdefghijklmnopqrst"), 10, 9, 10, '3', S("abcdefghij3333333333t")); + test(S("abcdefghijklmnopqrst"), 10, 9, 20, '3', S("abcdefghij33333333333333333333t")); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, 0, '3', S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, 5, '3', S("abcdefghij33333")); - test(S("abcdefghijklmnopqrst"), 10, 10, 10, '3', S("abcdefghij3333333333")); - test(S("abcdefghijklmnopqrst"), 10, 10, 20, '3', S("abcdefghij33333333333333333333")); - test(S("abcdefghijklmnopqrst"), 19, 0, 0, '3', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, 5, '3', S("abcdefghijklmnopqrs33333t")); - test(S("abcdefghijklmnopqrst"), 19, 0, 10, '3', S("abcdefghijklmnopqrs3333333333t")); - test(S("abcdefghijklmnopqrst"), 19, 0, 20, '3', S("abcdefghijklmnopqrs33333333333333333333t")); - test(S("abcdefghijklmnopqrst"), 19, 1, 0, '3', S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, 5, '3', S("abcdefghijklmnopqrs33333")); - test(S("abcdefghijklmnopqrst"), 19, 1, 10, '3', S("abcdefghijklmnopqrs3333333333")); - test(S("abcdefghijklmnopqrst"), 19, 1, 20, '3', S("abcdefghijklmnopqrs33333333333333333333")); - test(S("abcdefghijklmnopqrst"), 20, 0, 0, '3', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, 5, '3', S("abcdefghijklmnopqrst33333")); - test(S("abcdefghijklmnopqrst"), 20, 0, 10, '3', S("abcdefghijklmnopqrst3333333333")); - test(S("abcdefghijklmnopqrst"), 20, 0, 20, '3', S("abcdefghijklmnopqrst33333333333333333333")); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("abcdefghijklmnopqrst"), 10, 10, 0, '3', S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, 5, '3', S("abcdefghij33333")); + test(S("abcdefghijklmnopqrst"), 10, 10, 10, '3', S("abcdefghij3333333333")); + test(S("abcdefghijklmnopqrst"), 10, 10, 20, '3', S("abcdefghij33333333333333333333")); + test(S("abcdefghijklmnopqrst"), 19, 0, 0, '3', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, 5, '3', S("abcdefghijklmnopqrs33333t")); + test(S("abcdefghijklmnopqrst"), 19, 0, 10, '3', S("abcdefghijklmnopqrs3333333333t")); + test(S("abcdefghijklmnopqrst"), 19, 0, 20, '3', S("abcdefghijklmnopqrs33333333333333333333t")); + test(S("abcdefghijklmnopqrst"), 19, 1, 0, '3', S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, 5, '3', S("abcdefghijklmnopqrs33333")); + test(S("abcdefghijklmnopqrst"), 19, 1, 10, '3', S("abcdefghijklmnopqrs3333333333")); + test(S("abcdefghijklmnopqrst"), 19, 1, 20, '3', S("abcdefghijklmnopqrs33333333333333333333")); + test(S("abcdefghijklmnopqrst"), 20, 0, 0, '3', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, 5, '3', S("abcdefghijklmnopqrst33333")); + test(S("abcdefghijklmnopqrst"), 20, 0, 10, '3', S("abcdefghijklmnopqrst3333333333")); + test(S("abcdefghijklmnopqrst"), 20, 0, 20, '3', S("abcdefghijklmnopqrst33333333333333333333")); } TEST_CONSTEXPR_CXX20 bool test() { @@ -284,8 +284,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string.pass.cpp @@ -19,255 +19,250 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, S str, S expected) -{ - typename S::size_type old_size = s.size(); - typename S::const_iterator first = s.begin() + pos1; - typename S::const_iterator last = s.begin() + pos1 + n1; - typename S::size_type xlen = last - first; - s.replace(first, last, str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type rlen = str.size(); - assert(s.size() == old_size - xlen + rlen); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos1, typename S::size_type n1, S str, S expected) { + typename S::size_type old_size = s.size(); + typename S::const_iterator first = s.begin() + pos1; + typename S::const_iterator last = s.begin() + pos1 + n1; + typename S::size_type xlen = last - first; + s.replace(first, last, str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type rlen = str.size(); + assert(s.size() == old_size - xlen + rlen); } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, S(""), S("")); - test(S(""), 0, 0, S("12345"), S("12345")); - test(S(""), 0, 0, S("1234567890"), S("1234567890")); - test(S(""), 0, 0, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcde"), 0, 0, S(""), S("abcde")); - test(S("abcde"), 0, 0, S("12345"), S("12345abcde")); - test(S("abcde"), 0, 0, S("1234567890"), S("1234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, S(""), S("bcde")); - test(S("abcde"), 0, 1, S("12345"), S("12345bcde")); - test(S("abcde"), 0, 1, S("1234567890"), S("1234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, S(""), S("cde")); - test(S("abcde"), 0, 2, S("12345"), S("12345cde")); - test(S("abcde"), 0, 2, S("1234567890"), S("1234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), S("12345678901234567890cde")); - test(S("abcde"), 0, 4, S(""), S("e")); - test(S("abcde"), 0, 4, S("12345"), S("12345e")); - test(S("abcde"), 0, 4, S("1234567890"), S("1234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), S("12345678901234567890e")); - test(S("abcde"), 0, 5, S(""), S("")); - test(S("abcde"), 0, 5, S("12345"), S("12345")); - test(S("abcde"), 0, 5, S("1234567890"), S("1234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcde"), 1, 0, S(""), S("abcde")); - test(S("abcde"), 1, 0, S("12345"), S("a12345bcde")); - test(S("abcde"), 1, 0, S("1234567890"), S("a1234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, S(""), S("acde")); - test(S("abcde"), 1, 1, S("12345"), S("a12345cde")); - test(S("abcde"), 1, 1, S("1234567890"), S("a1234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, S(""), S("ade")); - test(S("abcde"), 1, 2, S("12345"), S("a12345de")); - test(S("abcde"), 1, 2, S("1234567890"), S("a1234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), S("a12345678901234567890de")); - test(S("abcde"), 1, 3, S(""), S("ae")); - test(S("abcde"), 1, 3, S("12345"), S("a12345e")); - test(S("abcde"), 1, 3, S("1234567890"), S("a1234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), S("a12345678901234567890e")); - test(S("abcde"), 1, 4, S(""), S("a")); - test(S("abcde"), 1, 4, S("12345"), S("a12345")); - test(S("abcde"), 1, 4, S("1234567890"), S("a1234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcde"), 2, 0, S(""), S("abcde")); - test(S("abcde"), 2, 0, S("12345"), S("ab12345cde")); - test(S("abcde"), 2, 0, S("1234567890"), S("ab1234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, S(""), S("abde")); - test(S("abcde"), 2, 1, S("12345"), S("ab12345de")); - test(S("abcde"), 2, 1, S("1234567890"), S("ab1234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, S(""), S("abe")); - test(S("abcde"), 2, 2, S("12345"), S("ab12345e")); - test(S("abcde"), 2, 2, S("1234567890"), S("ab1234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, S(""), S("ab")); - test(S("abcde"), 2, 3, S("12345"), S("ab12345")); - test(S("abcde"), 2, 3, S("1234567890"), S("ab1234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), S("ab12345678901234567890")); - test(S("abcde"), 4, 0, S(""), S("abcde")); - test(S("abcde"), 4, 0, S("12345"), S("abcd12345e")); - test(S("abcde"), 4, 0, S("1234567890"), S("abcd1234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, S(""), S("abcd")); - test(S("abcde"), 4, 1, S("12345"), S("abcd12345")); - test(S("abcde"), 4, 1, S("1234567890"), S("abcd1234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, S(""), S("abcde")); - test(S("abcde"), 5, 0, S("12345"), S("abcde12345")); - test(S("abcde"), 5, 0, S("1234567890"), S("abcde1234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcdefghij"), 0, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, S(""), S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, S(""), S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), S("12345fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, S(""), S("j")); - test(S("abcdefghij"), 0, 9, S("12345"), S("12345j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), S("1234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, S(""), S("")); - test(S("abcdefghij"), 0, 10, S("12345"), S("12345")); - test(S("abcdefghij"), 0, 10, S("1234567890"), S("1234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, S(""), S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cdefghij")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, S(""), S("")); + test(S(""), 0, 0, S("12345"), S("12345")); + test(S(""), 0, 0, S("1234567890"), S("1234567890")); + test(S(""), 0, 0, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcde"), 0, 0, S(""), S("abcde")); + test(S("abcde"), 0, 0, S("12345"), S("12345abcde")); + test(S("abcde"), 0, 0, S("1234567890"), S("1234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, S(""), S("bcde")); + test(S("abcde"), 0, 1, S("12345"), S("12345bcde")); + test(S("abcde"), 0, 1, S("1234567890"), S("1234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, S(""), S("cde")); + test(S("abcde"), 0, 2, S("12345"), S("12345cde")); + test(S("abcde"), 0, 2, S("1234567890"), S("1234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), S("12345678901234567890cde")); + test(S("abcde"), 0, 4, S(""), S("e")); + test(S("abcde"), 0, 4, S("12345"), S("12345e")); + test(S("abcde"), 0, 4, S("1234567890"), S("1234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), S("12345678901234567890e")); + test(S("abcde"), 0, 5, S(""), S("")); + test(S("abcde"), 0, 5, S("12345"), S("12345")); + test(S("abcde"), 0, 5, S("1234567890"), S("1234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcde"), 1, 0, S(""), S("abcde")); + test(S("abcde"), 1, 0, S("12345"), S("a12345bcde")); + test(S("abcde"), 1, 0, S("1234567890"), S("a1234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, S(""), S("acde")); + test(S("abcde"), 1, 1, S("12345"), S("a12345cde")); + test(S("abcde"), 1, 1, S("1234567890"), S("a1234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, S(""), S("ade")); + test(S("abcde"), 1, 2, S("12345"), S("a12345de")); + test(S("abcde"), 1, 2, S("1234567890"), S("a1234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), S("a12345678901234567890de")); + test(S("abcde"), 1, 3, S(""), S("ae")); + test(S("abcde"), 1, 3, S("12345"), S("a12345e")); + test(S("abcde"), 1, 3, S("1234567890"), S("a1234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), S("a12345678901234567890e")); + test(S("abcde"), 1, 4, S(""), S("a")); + test(S("abcde"), 1, 4, S("12345"), S("a12345")); + test(S("abcde"), 1, 4, S("1234567890"), S("a1234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcde"), 2, 0, S(""), S("abcde")); + test(S("abcde"), 2, 0, S("12345"), S("ab12345cde")); + test(S("abcde"), 2, 0, S("1234567890"), S("ab1234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, S(""), S("abde")); + test(S("abcde"), 2, 1, S("12345"), S("ab12345de")); + test(S("abcde"), 2, 1, S("1234567890"), S("ab1234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, S(""), S("abe")); + test(S("abcde"), 2, 2, S("12345"), S("ab12345e")); + test(S("abcde"), 2, 2, S("1234567890"), S("ab1234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, S(""), S("ab")); + test(S("abcde"), 2, 3, S("12345"), S("ab12345")); + test(S("abcde"), 2, 3, S("1234567890"), S("ab1234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), S("ab12345678901234567890")); + test(S("abcde"), 4, 0, S(""), S("abcde")); + test(S("abcde"), 4, 0, S("12345"), S("abcd12345e")); + test(S("abcde"), 4, 0, S("1234567890"), S("abcd1234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, S(""), S("abcd")); + test(S("abcde"), 4, 1, S("12345"), S("abcd12345")); + test(S("abcde"), 4, 1, S("1234567890"), S("abcd1234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, S(""), S("abcde")); + test(S("abcde"), 5, 0, S("12345"), S("abcde12345")); + test(S("abcde"), 5, 0, S("1234567890"), S("abcde1234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcdefghij"), 0, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, S(""), S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, S(""), S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), S("12345fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, S(""), S("j")); + test(S("abcdefghij"), 0, 9, S("12345"), S("12345j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), S("1234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, S(""), S("")); + test(S("abcdefghij"), 0, 10, S("12345"), S("12345")); + test(S("abcdefghij"), 0, 10, S("1234567890"), S("1234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, S(""), S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcdefghij"), 1, 4, S(""), S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345"), S("a12345fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, S(""), S("aj")); - test(S("abcdefghij"), 1, 8, S("12345"), S("a12345j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), S("a1234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, S(""), S("a")); - test(S("abcdefghij"), 1, 9, S("12345"), S("a12345")); - test(S("abcdefghij"), 1, 9, S("1234567890"), S("a1234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345"), S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, S(""), S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345"), S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, S(""), S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345"), S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, S(""), S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345"), S("abcde12345j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, S(""), S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345"), S("abcde12345")); - test(S("abcdefghij"), 5, 5, S("1234567890"), S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345"), S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, S(""), S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345"), S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, S("1234567890"), S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345"), S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, S("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), S("abcdefghij12345678901234567890t")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcdefghij"), 1, 4, S(""), S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345"), S("a12345fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, S(""), S("aj")); + test(S("abcdefghij"), 1, 8, S("12345"), S("a12345j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), S("a1234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, S(""), S("a")); + test(S("abcdefghij"), 1, 9, S("12345"), S("a12345")); + test(S("abcdefghij"), 1, 9, S("1234567890"), S("a1234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345"), S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, S(""), S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345"), S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, S(""), S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345"), S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, S(""), S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345"), S("abcde12345j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, S(""), S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345"), S("abcde12345")); + test(S("abcdefghij"), 5, 5, S("1234567890"), S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345"), S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, S(""), S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345"), S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, S("1234567890"), S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345"), S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, S("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), S("abcdefghij12345678901234567890t")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); - return true; + return true; } template @@ -293,8 +288,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/iter_iter_string_view.pass.cpp @@ -19,255 +19,250 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, SV sv, S expected) -{ - typename S::size_type old_size = s.size(); - typename S::const_iterator first = s.begin() + pos1; - typename S::const_iterator last = s.begin() + pos1 + n1; - typename S::size_type xlen = last - first; - s.replace(first, last, sv); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type rlen = sv.size(); - assert(s.size() == old_size - xlen + rlen); +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos1, typename S::size_type n1, SV sv, S expected) { + typename S::size_type old_size = s.size(); + typename S::const_iterator first = s.begin() + pos1; + typename S::const_iterator last = s.begin() + pos1 + n1; + typename S::size_type xlen = last - first; + s.replace(first, last, sv); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type rlen = sv.size(); + assert(s.size() == old_size - xlen + rlen); } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, SV(""), S("")); - test(S(""), 0, 0, SV("12345"), S("12345")); - test(S(""), 0, 0, SV("1234567890"), S("1234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcde"), 0, 0, SV(""), S("abcde")); - test(S("abcde"), 0, 0, SV("12345"), S("12345abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), S("1234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, SV(""), S("bcde")); - test(S("abcde"), 0, 1, SV("12345"), S("12345bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), S("1234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, SV(""), S("cde")); - test(S("abcde"), 0, 2, SV("12345"), S("12345cde")); - test(S("abcde"), 0, 2, SV("1234567890"), S("1234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), S("12345678901234567890cde")); - test(S("abcde"), 0, 4, SV(""), S("e")); - test(S("abcde"), 0, 4, SV("12345"), S("12345e")); - test(S("abcde"), 0, 4, SV("1234567890"), S("1234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), S("12345678901234567890e")); - test(S("abcde"), 0, 5, SV(""), S("")); - test(S("abcde"), 0, 5, SV("12345"), S("12345")); - test(S("abcde"), 0, 5, SV("1234567890"), S("1234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcde"), 1, 0, SV(""), S("abcde")); - test(S("abcde"), 1, 0, SV("12345"), S("a12345bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), S("a1234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, SV(""), S("acde")); - test(S("abcde"), 1, 1, SV("12345"), S("a12345cde")); - test(S("abcde"), 1, 1, SV("1234567890"), S("a1234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, SV(""), S("ade")); - test(S("abcde"), 1, 2, SV("12345"), S("a12345de")); - test(S("abcde"), 1, 2, SV("1234567890"), S("a1234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), S("a12345678901234567890de")); - test(S("abcde"), 1, 3, SV(""), S("ae")); - test(S("abcde"), 1, 3, SV("12345"), S("a12345e")); - test(S("abcde"), 1, 3, SV("1234567890"), S("a1234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), S("a12345678901234567890e")); - test(S("abcde"), 1, 4, SV(""), S("a")); - test(S("abcde"), 1, 4, SV("12345"), S("a12345")); - test(S("abcde"), 1, 4, SV("1234567890"), S("a1234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcde"), 2, 0, SV(""), S("abcde")); - test(S("abcde"), 2, 0, SV("12345"), S("ab12345cde")); - test(S("abcde"), 2, 0, SV("1234567890"), S("ab1234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, SV(""), S("abde")); - test(S("abcde"), 2, 1, SV("12345"), S("ab12345de")); - test(S("abcde"), 2, 1, SV("1234567890"), S("ab1234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, SV(""), S("abe")); - test(S("abcde"), 2, 2, SV("12345"), S("ab12345e")); - test(S("abcde"), 2, 2, SV("1234567890"), S("ab1234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, SV(""), S("ab")); - test(S("abcde"), 2, 3, SV("12345"), S("ab12345")); - test(S("abcde"), 2, 3, SV("1234567890"), S("ab1234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), S("ab12345678901234567890")); - test(S("abcde"), 4, 0, SV(""), S("abcde")); - test(S("abcde"), 4, 0, SV("12345"), S("abcd12345e")); - test(S("abcde"), 4, 0, SV("1234567890"), S("abcd1234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, SV(""), S("abcd")); - test(S("abcde"), 4, 1, SV("12345"), S("abcd12345")); - test(S("abcde"), 4, 1, SV("1234567890"), S("abcd1234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, SV(""), S("abcde")); - test(S("abcde"), 5, 0, SV("12345"), S("abcde12345")); - test(S("abcde"), 5, 0, SV("1234567890"), S("abcde1234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcdefghij"), 0, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, SV(""), S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, SV(""), S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), S("12345fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, SV(""), S("j")); - test(S("abcdefghij"), 0, 9, SV("12345"), S("12345j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), S("1234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, SV(""), S("")); - test(S("abcdefghij"), 0, 10, SV("12345"), S("12345")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), S("1234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, SV(""), S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cdefghij")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, SV(""), S("")); + test(S(""), 0, 0, SV("12345"), S("12345")); + test(S(""), 0, 0, SV("1234567890"), S("1234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcde"), 0, 0, SV(""), S("abcde")); + test(S("abcde"), 0, 0, SV("12345"), S("12345abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), S("1234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, SV(""), S("bcde")); + test(S("abcde"), 0, 1, SV("12345"), S("12345bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), S("1234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, SV(""), S("cde")); + test(S("abcde"), 0, 2, SV("12345"), S("12345cde")); + test(S("abcde"), 0, 2, SV("1234567890"), S("1234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), S("12345678901234567890cde")); + test(S("abcde"), 0, 4, SV(""), S("e")); + test(S("abcde"), 0, 4, SV("12345"), S("12345e")); + test(S("abcde"), 0, 4, SV("1234567890"), S("1234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), S("12345678901234567890e")); + test(S("abcde"), 0, 5, SV(""), S("")); + test(S("abcde"), 0, 5, SV("12345"), S("12345")); + test(S("abcde"), 0, 5, SV("1234567890"), S("1234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcde"), 1, 0, SV(""), S("abcde")); + test(S("abcde"), 1, 0, SV("12345"), S("a12345bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), S("a1234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, SV(""), S("acde")); + test(S("abcde"), 1, 1, SV("12345"), S("a12345cde")); + test(S("abcde"), 1, 1, SV("1234567890"), S("a1234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, SV(""), S("ade")); + test(S("abcde"), 1, 2, SV("12345"), S("a12345de")); + test(S("abcde"), 1, 2, SV("1234567890"), S("a1234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), S("a12345678901234567890de")); + test(S("abcde"), 1, 3, SV(""), S("ae")); + test(S("abcde"), 1, 3, SV("12345"), S("a12345e")); + test(S("abcde"), 1, 3, SV("1234567890"), S("a1234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), S("a12345678901234567890e")); + test(S("abcde"), 1, 4, SV(""), S("a")); + test(S("abcde"), 1, 4, SV("12345"), S("a12345")); + test(S("abcde"), 1, 4, SV("1234567890"), S("a1234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcde"), 2, 0, SV(""), S("abcde")); + test(S("abcde"), 2, 0, SV("12345"), S("ab12345cde")); + test(S("abcde"), 2, 0, SV("1234567890"), S("ab1234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, SV(""), S("abde")); + test(S("abcde"), 2, 1, SV("12345"), S("ab12345de")); + test(S("abcde"), 2, 1, SV("1234567890"), S("ab1234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, SV(""), S("abe")); + test(S("abcde"), 2, 2, SV("12345"), S("ab12345e")); + test(S("abcde"), 2, 2, SV("1234567890"), S("ab1234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, SV(""), S("ab")); + test(S("abcde"), 2, 3, SV("12345"), S("ab12345")); + test(S("abcde"), 2, 3, SV("1234567890"), S("ab1234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), S("ab12345678901234567890")); + test(S("abcde"), 4, 0, SV(""), S("abcde")); + test(S("abcde"), 4, 0, SV("12345"), S("abcd12345e")); + test(S("abcde"), 4, 0, SV("1234567890"), S("abcd1234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, SV(""), S("abcd")); + test(S("abcde"), 4, 1, SV("12345"), S("abcd12345")); + test(S("abcde"), 4, 1, SV("1234567890"), S("abcd1234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, SV(""), S("abcde")); + test(S("abcde"), 5, 0, SV("12345"), S("abcde12345")); + test(S("abcde"), 5, 0, SV("1234567890"), S("abcde1234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcdefghij"), 0, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, SV(""), S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, SV(""), S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), S("12345fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, SV(""), S("j")); + test(S("abcdefghij"), 0, 9, SV("12345"), S("12345j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), S("1234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, SV(""), S("")); + test(S("abcdefghij"), 0, 10, SV("12345"), S("12345")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), S("1234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, SV(""), S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcdefghij"), 1, 4, SV(""), S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), S("a12345fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, SV(""), S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345"), S("a12345j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), S("a1234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, SV(""), S("a")); - test(S("abcdefghij"), 1, 9, SV("12345"), S("a12345")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), S("a1234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, SV(""), S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, SV(""), S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345"), S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, SV(""), S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345"), S("abcde12345j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, SV(""), S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345"), S("abcde12345")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345"), S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, SV(""), S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345"), S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345"), S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), S("abcdefghij12345678901234567890t")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcdefghij"), 1, 4, SV(""), S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), S("a12345fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, SV(""), S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345"), S("a12345j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), S("a1234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, SV(""), S("a")); + test(S("abcdefghij"), 1, 9, SV("12345"), S("a12345")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), S("a1234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, SV(""), S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, SV(""), S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345"), S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, SV(""), S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345"), S("abcde12345j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, SV(""), S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345"), S("abcde12345")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345"), S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, SV(""), S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345"), S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345"), S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), S("abcdefghij12345678901234567890t")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); - return true; + return true; } TEST_CONSTEXPR_CXX20 void test() { @@ -290,17 +285,16 @@ test0(); test1(); test2(); -#if TEST_STD_VER > 17 +# if TEST_STD_VER > 17 static_assert(test0()); static_assert(test1()); static_assert(test2()); -#endif +# endif } #endif } -int main(int, char**) -{ +int main(int, char**) { test(); return 0; diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/replace_with_range.pass.cpp @@ -20,9 +20,8 @@ #include "test_macros.h" template -concept HasReplaceWithRange = requires (std::string& c, Range&& range) { - c.replace_with_range(c.end(), c.end(), std::forward(range)); -}; +concept HasReplaceWithRange = + requires(std::string& c, Range&& range) { c.replace_with_range(c.end(), c.end(), std::forward(range)); }; constexpr bool test_constraints_replace_with_range() { // Input range with the same value type. @@ -44,7 +43,7 @@ struct TestCaseReplacement { StrBuffer initial; std::size_t from = 0; - std::size_t to = 0; + std::size_t to = 0; StrBuffer input; StrBuffer expected; }; @@ -57,549 +56,586 @@ // Empty string. -constexpr TestCaseReplacement EmptyString_End_EmptyCut_EmptyRange { - .initial = "", .from = 0, .to = 0, .input = "", .expected = "" -}; +constexpr TestCaseReplacement EmptyString_End_EmptyCut_EmptyRange{ + .initial = "", .from = 0, .to = 0, .input = "", .expected = ""}; -constexpr TestCaseReplacement EmptyString_End_EmptyCut_OneElementRange { - .initial = "", .from = 0, .to = 0, .input = "a", .expected = "a" -}; +constexpr TestCaseReplacement EmptyString_End_EmptyCut_OneElementRange{ + .initial = "", .from = 0, .to = 0, .input = "a", .expected = "a"}; -constexpr TestCaseReplacement EmptyString_End_EmptyCut_MidRange { - .initial = "", .from = 0, .to = 0, .input = "aeiou", .expected = "aeiou" -}; +constexpr TestCaseReplacement EmptyString_End_EmptyCut_MidRange{ + .initial = "", .from = 0, .to = 0, .input = "aeiou", .expected = "aeiou"}; -constexpr TestCaseReplacement EmptyString_End_EmptyCut_LongRange { - .initial = "", .from = 0, .to = 0, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement EmptyString_End_EmptyCut_LongRange{ + .initial = "", + .from = 0, + .to = 0, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789"}; // One-element string. -constexpr TestCaseReplacement OneElementString_Begin_EmptyCut_EmptyRange { - .initial = "B", .from = 0, .to = 0, .input = "", .expected = "B" -}; +constexpr TestCaseReplacement OneElementString_Begin_EmptyCut_EmptyRange{ + .initial = "B", .from = 0, .to = 0, .input = "", .expected = "B"}; -constexpr TestCaseReplacement OneElementString_Begin_EmptyCut_OneElementRange { - .initial = "B", .from = 0, .to = 0, .input = "a", .expected = "aB" -}; +constexpr TestCaseReplacement OneElementString_Begin_EmptyCut_OneElementRange{ + .initial = "B", .from = 0, .to = 0, .input = "a", .expected = "aB"}; -constexpr TestCaseReplacement OneElementString_Begin_EmptyCut_MidRange { - .initial = "B", .from = 0, .to = 0, .input = "aeiou", .expected = "aeiouB" -}; +constexpr TestCaseReplacement OneElementString_Begin_EmptyCut_MidRange{ + .initial = "B", .from = 0, .to = 0, .input = "aeiou", .expected = "aeiouB"}; -constexpr TestCaseReplacement OneElementString_Begin_EmptyCut_LongRange { - .initial = "B", .from = 0, .to = 0, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789B" -}; +constexpr TestCaseReplacement OneElementString_Begin_EmptyCut_LongRange{ + .initial = "B", + .from = 0, + .to = 0, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789B"}; -constexpr TestCaseReplacement OneElementString_Begin_OneElementCut_EmptyRange { - .initial = "B", .from = 0, .to = 1, .input = "", .expected = "" -}; +constexpr TestCaseReplacement OneElementString_Begin_OneElementCut_EmptyRange{ + .initial = "B", .from = 0, .to = 1, .input = "", .expected = ""}; -constexpr TestCaseReplacement OneElementString_Begin_OneElementCut_OneElementRange { - .initial = "B", .from = 0, .to = 1, .input = "a", .expected = "a" -}; +constexpr TestCaseReplacement OneElementString_Begin_OneElementCut_OneElementRange{ + .initial = "B", .from = 0, .to = 1, .input = "a", .expected = "a"}; -constexpr TestCaseReplacement OneElementString_Begin_OneElementCut_MidRange { - .initial = "B", .from = 0, .to = 1, .input = "aeiou", .expected = "aeiou" -}; +constexpr TestCaseReplacement OneElementString_Begin_OneElementCut_MidRange{ + .initial = "B", .from = 0, .to = 1, .input = "aeiou", .expected = "aeiou"}; -constexpr TestCaseReplacement OneElementString_Begin_OneElementCut_LongRange { - .initial = "B", .from = 0, .to = 1, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement OneElementString_Begin_OneElementCut_LongRange{ + .initial = "B", + .from = 0, + .to = 1, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789"}; -constexpr TestCaseReplacement OneElementString_End_EmptyCut_EmptyRange { - .initial = "B", .from = 1, .to = 1, .input = "", .expected = "B" -}; +constexpr TestCaseReplacement OneElementString_End_EmptyCut_EmptyRange{ + .initial = "B", .from = 1, .to = 1, .input = "", .expected = "B"}; -constexpr TestCaseReplacement OneElementString_End_EmptyCut_OneElementRange { - .initial = "B", .from = 1, .to = 1, .input = "a", .expected = "Ba" -}; +constexpr TestCaseReplacement OneElementString_End_EmptyCut_OneElementRange{ + .initial = "B", .from = 1, .to = 1, .input = "a", .expected = "Ba"}; -constexpr TestCaseReplacement OneElementString_End_EmptyCut_MidRange { - .initial = "B", .from = 1, .to = 1, .input = "aeiou", .expected = "Baeiou" -}; +constexpr TestCaseReplacement OneElementString_End_EmptyCut_MidRange{ + .initial = "B", .from = 1, .to = 1, .input = "aeiou", .expected = "Baeiou"}; -constexpr TestCaseReplacement OneElementString_End_EmptyCut_LongRange { - .initial = "B", .from = 1, .to = 1, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "Babcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement OneElementString_End_EmptyCut_LongRange{ + .initial = "B", + .from = 1, + .to = 1, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "Babcdefghijklmnopqrstuvwxyz0123456789"}; // Short string (using SSO). // Replace at the beginning. -constexpr TestCaseReplacement ShortString_Begin_EmptyCut_EmptyRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 0, .input = "", .expected = "_BCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_EmptyCut_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 0, .input = "", .expected = "_BCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_EmptyCut_OneElementRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 0, .input = "a", .expected = "a_BCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_EmptyCut_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 0, .input = "a", .expected = "a_BCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_EmptyCut_MidRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 0, .input = "aeiou", .expected = "aeiou_BCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_EmptyCut_MidRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 0, .input = "aeiou", .expected = "aeiou_BCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_EmptyCut_LongRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 0, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789_BCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_EmptyCut_LongRange{ + .initial = "_BCDFGHJ_", + .from = 0, + .to = 0, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789_BCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_OneElementCut_EmptyRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 1, .input = "", .expected = "BCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_OneElementCut_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 1, .input = "", .expected = "BCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_OneElementCut_OneElementRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 1, .input = "a", .expected = "aBCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_OneElementCut_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 1, .input = "a", .expected = "aBCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_OneElementCut_MidRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 1, .input = "aeiou", .expected = "aeiouBCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_OneElementCut_MidRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 1, .input = "aeiou", .expected = "aeiouBCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_OneElementCut_LongRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 1, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789BCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_OneElementCut_LongRange{ + .initial = "_BCDFGHJ_", + .from = 0, + .to = 1, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789BCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_MidSizedCut_EmptyRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 3, .input = "", .expected = "DFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_MidSizedCut_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 3, .input = "", .expected = "DFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_MidSizedCut_OneElementRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 3, .input = "a", .expected = "aDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_MidSizedCut_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 3, .input = "a", .expected = "aDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_MidSizedCut_MidRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 3, .input = "aeiou", .expected = "aeiouDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_MidSizedCut_MidRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 3, .input = "aeiou", .expected = "aeiouDFGHJ_"}; // Note: this test case switches from SSO to non-SSO. -constexpr TestCaseReplacement ShortString_Begin_MidSizedCut_LongRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 3, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789DFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Begin_MidSizedCut_LongRange{ + .initial = "_BCDFGHJ_", + .from = 0, + .to = 3, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789DFGHJ_"}; -constexpr TestCaseReplacement ShortString_Begin_CutToEnd_EmptyRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 9, .input = "", .expected = "" -}; +constexpr TestCaseReplacement ShortString_Begin_CutToEnd_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 9, .input = "", .expected = ""}; -constexpr TestCaseReplacement ShortString_Begin_CutToEnd_OneElementRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 9, .input = "a", .expected = "a" -}; +constexpr TestCaseReplacement ShortString_Begin_CutToEnd_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 9, .input = "a", .expected = "a"}; -constexpr TestCaseReplacement ShortString_Begin_CutToEnd_MidRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 9, .input = "aeiou", .expected = "aeiou" -}; +constexpr TestCaseReplacement ShortString_Begin_CutToEnd_MidRange{ + .initial = "_BCDFGHJ_", .from = 0, .to = 9, .input = "aeiou", .expected = "aeiou"}; // Note: this test case switches from SSO to non-SSO. -constexpr TestCaseReplacement ShortString_Begin_CutToEnd_LongRange { - .initial = "_BCDFGHJ_", .from = 0, .to = 9, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement ShortString_Begin_CutToEnd_LongRange{ + .initial = "_BCDFGHJ_", + .from = 0, + .to = 9, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789"}; // Replace in the middle. -constexpr TestCaseReplacement ShortString_Mid_EmptyCut_EmptyRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 4, .input = "", .expected = "_BCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_EmptyCut_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 4, .input = "", .expected = "_BCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_Mid_EmptyCut_OneElementRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 4, .input = "a", .expected = "_BCDaFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_EmptyCut_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 4, .input = "a", .expected = "_BCDaFGHJ_"}; -constexpr TestCaseReplacement ShortString_Mid_EmptyCut_MidRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 4, .input = "aeiou", .expected = "_BCDaeiouFGHJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_EmptyCut_MidRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 4, .input = "aeiou", .expected = "_BCDaeiouFGHJ_"}; -constexpr TestCaseReplacement ShortString_Mid_EmptyCut_LongRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 4, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_BCDabcdefghijklmnopqrstuvwxyz0123456789FGHJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_EmptyCut_LongRange{ + .initial = "_BCDFGHJ_", + .from = 4, + .to = 4, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_BCDabcdefghijklmnopqrstuvwxyz0123456789FGHJ_"}; -constexpr TestCaseReplacement ShortString_Mid_OneElementCut_EmptyRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 5, .input = "", .expected = "_BCDGHJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_OneElementCut_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 5, .input = "", .expected = "_BCDGHJ_"}; -constexpr TestCaseReplacement ShortString_Mid_OneElementCut_OneElementRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 5, .input = "a", .expected = "_BCDaGHJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_OneElementCut_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 5, .input = "a", .expected = "_BCDaGHJ_"}; -constexpr TestCaseReplacement ShortString_Mid_OneElementCut_MidRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 5, .input = "aeiou", .expected = "_BCDaeiouGHJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_OneElementCut_MidRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 5, .input = "aeiou", .expected = "_BCDaeiouGHJ_"}; -constexpr TestCaseReplacement ShortString_Mid_OneElementCut_LongRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 5, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_BCDabcdefghijklmnopqrstuvwxyz0123456789GHJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_OneElementCut_LongRange{ + .initial = "_BCDFGHJ_", + .from = 4, + .to = 5, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_BCDabcdefghijklmnopqrstuvwxyz0123456789GHJ_"}; -constexpr TestCaseReplacement ShortString_Mid_MidSizedCut_EmptyRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 7, .input = "", .expected = "_BCDJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_MidSizedCut_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 7, .input = "", .expected = "_BCDJ_"}; -constexpr TestCaseReplacement ShortString_Mid_MidSizedCut_OneElementRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 7, .input = "a", .expected = "_BCDaJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_MidSizedCut_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 7, .input = "a", .expected = "_BCDaJ_"}; -constexpr TestCaseReplacement ShortString_Mid_MidSizedCut_MidRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 7, .input = "aeiou", .expected = "_BCDaeiouJ_" -}; +constexpr TestCaseReplacement ShortString_Mid_MidSizedCut_MidRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 7, .input = "aeiou", .expected = "_BCDaeiouJ_"}; -constexpr TestCaseReplacement ShortString_Mid_MidSizedCut_LongRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 7, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_BCDabcdefghijklmnopqrstuvwxyz0123456789J_" -}; +constexpr TestCaseReplacement ShortString_Mid_MidSizedCut_LongRange{ + .initial = "_BCDFGHJ_", + .from = 4, + .to = 7, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_BCDabcdefghijklmnopqrstuvwxyz0123456789J_"}; -constexpr TestCaseReplacement ShortString_Mid_CutToEnd_EmptyRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 9, .input = "", .expected = "_BCD" -}; +constexpr TestCaseReplacement ShortString_Mid_CutToEnd_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 9, .input = "", .expected = "_BCD"}; -constexpr TestCaseReplacement ShortString_Mid_CutToEnd_OneElementRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 9, .input = "a", .expected = "_BCDa" -}; +constexpr TestCaseReplacement ShortString_Mid_CutToEnd_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 9, .input = "a", .expected = "_BCDa"}; -constexpr TestCaseReplacement ShortString_Mid_CutToEnd_MidRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 9, .input = "aeiou", .expected = "_BCDaeiou" -}; +constexpr TestCaseReplacement ShortString_Mid_CutToEnd_MidRange{ + .initial = "_BCDFGHJ_", .from = 4, .to = 9, .input = "aeiou", .expected = "_BCDaeiou"}; -constexpr TestCaseReplacement ShortString_Mid_CutToEnd_LongRange { - .initial = "_BCDFGHJ_", .from = 4, .to = 9, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_BCDabcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement ShortString_Mid_CutToEnd_LongRange{ + .initial = "_BCDFGHJ_", + .from = 4, + .to = 9, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_BCDabcdefghijklmnopqrstuvwxyz0123456789"}; // Replace at the end. -constexpr TestCaseReplacement ShortString_End_EmptyCut_EmptyRange { - .initial = "_BCDFGHJ_", .from = 9, .to = 9, .input = "", .expected = "_BCDFGHJ_" -}; +constexpr TestCaseReplacement ShortString_End_EmptyCut_EmptyRange{ + .initial = "_BCDFGHJ_", .from = 9, .to = 9, .input = "", .expected = "_BCDFGHJ_"}; -constexpr TestCaseReplacement ShortString_End_EmptyCut_OneElementRange { - .initial = "_BCDFGHJ_", .from = 9, .to = 9, .input = "a", .expected = "_BCDFGHJ_a" -}; +constexpr TestCaseReplacement ShortString_End_EmptyCut_OneElementRange{ + .initial = "_BCDFGHJ_", .from = 9, .to = 9, .input = "a", .expected = "_BCDFGHJ_a"}; -constexpr TestCaseReplacement ShortString_End_EmptyCut_MidRange { - .initial = "_BCDFGHJ_", .from = 9, .to = 9, .input = "aeiou", .expected = "_BCDFGHJ_aeiou" -}; +constexpr TestCaseReplacement ShortString_End_EmptyCut_MidRange{ + .initial = "_BCDFGHJ_", .from = 9, .to = 9, .input = "aeiou", .expected = "_BCDFGHJ_aeiou"}; -constexpr TestCaseReplacement ShortString_End_EmptyCut_LongRange { - .initial = "_BCDFGHJ_", .from = 9, .to = 9, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_BCDFGHJ_abcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement ShortString_End_EmptyCut_LongRange{ + .initial = "_BCDFGHJ_", + .from = 9, + .to = 9, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_BCDFGHJ_abcdefghijklmnopqrstuvwxyz0123456789"}; // Long string (no SSO). // Replace at the beginning. -constexpr TestCaseReplacement LongString_Begin_EmptyCut_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 0, .input = "", - .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_EmptyCut_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 0, .input = "a", - .expected = "a_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_EmptyCut_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 0, .input = "aeiou", - .expected = "aeiou_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_EmptyCut_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 0, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_EmptyCut_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 0, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" - "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_OneElementCut_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 1, .input = "", - .expected = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_OneElementCut_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 1, .input = "a", - .expected = "aABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_OneElementCut_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 1, .input = "aeiou", - .expected = "aeiouABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_OneElementCut_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 1, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_OneElementCut_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 1, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_MidSizedCut_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 3, .input = "", - .expected = "CDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_MidSizedCut_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 3, .input = "a", - .expected = "aCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_MidSizedCut_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 3, .input = "aeiou", - .expected = "aeiouCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_MidSizedCut_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 3, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789CDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_MidSizedCut_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 3, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" - "CDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Begin_CutToEnd_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 38, .input = "", - .expected = "" -}; - -constexpr TestCaseReplacement LongString_Begin_CutToEnd_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 38, .input = "a", - .expected = "a" -}; - -constexpr TestCaseReplacement LongString_Begin_CutToEnd_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 38, .input = "aeiou", - .expected = "aeiou" -}; - -constexpr TestCaseReplacement LongString_Begin_CutToEnd_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 38, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789" -}; - -constexpr TestCaseReplacement LongString_Begin_CutToEnd_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 38, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement LongString_Begin_EmptyCut_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 0, + .input = "", + .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_EmptyCut_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 0, + .input = "a", + .expected = "a_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_EmptyCut_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 0, + .input = "aeiou", + .expected = "aeiou_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_EmptyCut_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 0, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_EmptyCut_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 0, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789" + "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_OneElementCut_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 1, + .input = "", + .expected = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_OneElementCut_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 1, + .input = "a", + .expected = "aABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_OneElementCut_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 1, + .input = "aeiou", + .expected = "aeiouABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_OneElementCut_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 1, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_OneElementCut_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 1, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_MidSizedCut_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 3, + .input = "", + .expected = "CDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_MidSizedCut_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 3, + .input = "a", + .expected = "aCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_MidSizedCut_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 3, + .input = "aeiou", + .expected = "aeiouCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_MidSizedCut_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 3, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789CDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_MidSizedCut_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 3, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789" + "CDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Begin_CutToEnd_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 38, .input = "", .expected = ""}; + +constexpr TestCaseReplacement LongString_Begin_CutToEnd_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 38, .input = "a", .expected = "a"}; + +constexpr TestCaseReplacement LongString_Begin_CutToEnd_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 0, .to = 38, .input = "aeiou", .expected = "aeiou"}; + +constexpr TestCaseReplacement LongString_Begin_CutToEnd_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 38, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789"}; + +constexpr TestCaseReplacement LongString_Begin_CutToEnd_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 0, + .to = 38, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789"}; // Replace in the middle. -constexpr TestCaseReplacement LongString_Mid_EmptyCut_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 18, .input = "", - .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_EmptyCut_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 18, .input = "a", - .expected = "_ABCDEFGHIJKLMNOPQaRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_EmptyCut_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 18, .input = "aeiou", - .expected = "_ABCDEFGHIJKLMNOPQaeiouRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_EmptyCut_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 18, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz0123456789RSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_EmptyCut_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 18, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQ" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" - "RSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_OneElementCut_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 19, .input = "", - .expected = "_ABCDEFGHIJKLMNOPQSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_OneElementCut_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 19, .input = "a", - .expected = "_ABCDEFGHIJKLMNOPQaSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_OneElementCut_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 19, .input = "aeiou", - .expected = "_ABCDEFGHIJKLMNOPQaeiouSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_OneElementCut_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 19, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz0123456789STUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_OneElementCut_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 19, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQ" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" - "STUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_MidSizedCut_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 21, .input = "", - .expected = "_ABCDEFGHIJKLMNOPQUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_MidSizedCut_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 21, .input = "a", - .expected = "_ABCDEFGHIJKLMNOPQaUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_MidSizedCut_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 21, .input = "aeiou", - .expected = "_ABCDEFGHIJKLMNOPQaeiouUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_MidSizedCut_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 21, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz0123456789UVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_MidSizedCut_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 21, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQ" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" - "UVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_Mid_CutToEnd_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 38, .input = "", - .expected = "_ABCDEFGHIJKLMNOPQ" -}; - -constexpr TestCaseReplacement LongString_Mid_CutToEnd_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 38, .input = "a", - .expected = "_ABCDEFGHIJKLMNOPQa" -}; - -constexpr TestCaseReplacement LongString_Mid_CutToEnd_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 38, .input = "aeiou", - .expected = "_ABCDEFGHIJKLMNOPQaeiou" -}; - -constexpr TestCaseReplacement LongString_Mid_CutToEnd_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 38, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz0123456789" -}; - -constexpr TestCaseReplacement LongString_Mid_CutToEnd_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 18, .to = 38, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQ" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement LongString_Mid_EmptyCut_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 18, + .input = "", + .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_EmptyCut_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 18, + .input = "a", + .expected = "_ABCDEFGHIJKLMNOPQaRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_EmptyCut_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 18, + .input = "aeiou", + .expected = "_ABCDEFGHIJKLMNOPQaeiouRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_EmptyCut_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 18, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz0123456789RSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_EmptyCut_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 18, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = + "_ABCDEFGHIJKLMNOPQ" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789" + "RSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_OneElementCut_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 19, + .input = "", + .expected = "_ABCDEFGHIJKLMNOPQSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_OneElementCut_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 19, + .input = "a", + .expected = "_ABCDEFGHIJKLMNOPQaSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_OneElementCut_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 19, + .input = "aeiou", + .expected = "_ABCDEFGHIJKLMNOPQaeiouSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_OneElementCut_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 19, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz0123456789STUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_OneElementCut_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 19, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = + "_ABCDEFGHIJKLMNOPQ" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789" + "STUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_MidSizedCut_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 21, + .input = "", + .expected = "_ABCDEFGHIJKLMNOPQUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_MidSizedCut_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 21, + .input = "a", + .expected = "_ABCDEFGHIJKLMNOPQaUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_MidSizedCut_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 21, + .input = "aeiou", + .expected = "_ABCDEFGHIJKLMNOPQaeiouUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_MidSizedCut_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 21, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz0123456789UVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_MidSizedCut_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 21, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = + "_ABCDEFGHIJKLMNOPQ" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789" + "UVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_Mid_CutToEnd_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 38, + .input = "", + .expected = "_ABCDEFGHIJKLMNOPQ"}; + +constexpr TestCaseReplacement LongString_Mid_CutToEnd_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 38, + .input = "a", + .expected = "_ABCDEFGHIJKLMNOPQa"}; + +constexpr TestCaseReplacement LongString_Mid_CutToEnd_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 38, + .input = "aeiou", + .expected = "_ABCDEFGHIJKLMNOPQaeiou"}; + +constexpr TestCaseReplacement LongString_Mid_CutToEnd_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 38, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz0123456789"}; + +constexpr TestCaseReplacement LongString_Mid_CutToEnd_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 18, + .to = 38, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_ABCDEFGHIJKLMNOPQ" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789"}; // Replace at the end. -constexpr TestCaseReplacement LongString_End_EmptyCut_EmptyRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 38, .to = 38, .input = "", - .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" -}; - -constexpr TestCaseReplacement LongString_End_EmptyCut_OneElementRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 38, .to = 38, .input = "a", - .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_a" -}; - -constexpr TestCaseReplacement LongString_End_EmptyCut_MidRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 38, .to = 38, .input = "aeiou", - .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_aeiou" -}; - -constexpr TestCaseReplacement LongString_End_EmptyCut_LongRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 38, .to = 38, - .input = "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_abcdefghijklmnopqrstuvwxyz0123456789" -}; - -constexpr TestCaseReplacement LongString_End_EmptyCut_LongerThanCapacityRange { - .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", .from = 38, .to = 38, - .input = "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789", - .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789_" - "abcdefghijklmnopqrstuvwxyz0123456789" -}; +constexpr TestCaseReplacement LongString_End_EmptyCut_EmptyRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 38, + .to = 38, + .input = "", + .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"}; + +constexpr TestCaseReplacement LongString_End_EmptyCut_OneElementRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 38, + .to = 38, + .input = "a", + .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_a"}; + +constexpr TestCaseReplacement LongString_End_EmptyCut_MidRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 38, + .to = 38, + .input = "aeiou", + .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_aeiou"}; + +constexpr TestCaseReplacement LongString_End_EmptyCut_LongRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 38, + .to = 38, + .input = "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_abcdefghijklmnopqrstuvwxyz0123456789"}; + +constexpr TestCaseReplacement LongString_End_EmptyCut_LongerThanCapacityRange{ + .initial = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", + .from = 38, + .to = 38, + .input = "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789", + .expected = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789_" + "abcdefghijklmnopqrstuvwxyz0123456789"}; template constexpr void test_string_replace_with_range() { @@ -608,9 +644,9 @@ auto get_pos = [](auto& c, auto index) { return std::ranges::next(c.begin(), index); }; Container c(test_case.initial.begin(), test_case.initial.end()); - auto in = wrap_input(test_case.input); + auto in = wrap_input(test_case.input); auto from = get_pos(c, test_case.from); - auto to = get_pos(c, test_case.to); + auto to = get_pos(c, test_case.to); Container& result = c.replace_with_range(from, to, in); assert(&result == &c); @@ -846,25 +882,25 @@ { // Lvalue. std::string in = "abc"; - std::string c = "123"; + std::string c = "123"; c.replace_with_range(c.begin(), c.end(), in); } { // Const lvalue. const std::string in = "abc"; - std::string c = "123"; + std::string c = "123"; c.replace_with_range(c.begin(), c.end(), in); } { // Rvalue. std::string in = "abc"; - std::string c = "123"; + std::string c = "123"; c.replace_with_range(c.begin(), c.end(), std::move(in)); } { // Const rvalue. const std::string in = "abc"; - std::string c = "123"; + std::string c = "123"; c.replace_with_range(c.begin(), c.end(), std::move(in)); } } diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_T_size_size.pass.cpp @@ -26,5996 +26,6132 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, - SV sv, typename S::size_type pos2, typename S::size_type n2, - S expected) -{ - typedef typename S::size_type SizeT; - static_assert((!std::is_same::value), ""); - - // String and string_view may not always share the same size type, - // but both types should have the same size (ex. int vs long) - static_assert(sizeof(SizeT) == sizeof(typename SV::size_type), ""); - - const SizeT old_size = s.size(); - S s0 = s; - if (pos1 <= old_size && pos2 <= sv.size()) - { - s.replace(pos1, n1, sv, pos2, n2); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - SizeT xlen = std::min(n1, old_size - pos1); - SizeT rlen = std::min(n2, sv.size() - pos2); - assert(s.size() == old_size - xlen + rlen); - } +test(S s, + typename S::size_type pos1, + typename S::size_type n1, + SV sv, + typename S::size_type pos2, + typename S::size_type n2, + S expected) { + typedef typename S::size_type SizeT; + static_assert((!std::is_same::value), ""); + + // String and string_view may not always share the same size type, + // but both types should have the same size (ex. int vs long) + static_assert(sizeof(SizeT) == sizeof(typename SV::size_type), ""); + + const SizeT old_size = s.size(); + S s0 = s; + if (pos1 <= old_size && pos2 <= sv.size()) { + s.replace(pos1, n1, sv, pos2, n2); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + SizeT xlen = std::min(n1, old_size - pos1); + SizeT rlen = std::min(n2, sv.size() - pos2); + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos1, n1, sv, pos2, n2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size || pos2 > sv.size()); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos1, n1, sv, pos2, n2); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size || pos2 > sv.size()); + assert(s == s0); } + } #endif } template TEST_CONSTEXPR_CXX20 void -test_npos(S s, typename S::size_type pos1, typename S::size_type n1, - SV sv, typename S::size_type pos2, - S expected) -{ - typedef typename S::size_type SizeT; - static_assert((!std::is_same::value), ""); - const SizeT old_size = s.size(); - S s0 = s; - if (pos1 <= old_size && pos2 <= sv.size()) - { - s.replace(pos1, n1, sv, pos2); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - SizeT xlen = std::min(n1, old_size - pos1); - SizeT rlen = std::min(S::npos, sv.size() - pos2); - assert(s.size() == old_size - xlen + rlen); - } +test_npos(S s, typename S::size_type pos1, typename S::size_type n1, SV sv, typename S::size_type pos2, S expected) { + typedef typename S::size_type SizeT; + static_assert((!std::is_same::value), ""); + const SizeT old_size = s.size(); + S s0 = s; + if (pos1 <= old_size && pos2 <= sv.size()) { + s.replace(pos1, n1, sv, pos2); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + SizeT xlen = std::min(n1, old_size - pos1); + SizeT rlen = std::min(S::npos, sv.size() - pos2); + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos1, n1, sv, pos2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size || pos2 > sv.size()); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos1, n1, sv, pos2); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size || pos2 > sv.size()); + assert(s == s0); } + } #endif } - template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, SV(""), 0, 0, S("")); - test(S(""), 0, 0, SV(""), 0, 1, S("")); - test(S(""), 0, 0, SV(""), 1, 0, S("can't happen")); - test(S(""), 0, 0, SV("12345"), 0, 0, S("")); - test(S(""), 0, 0, SV("12345"), 0, 1, S("1")); - test(S(""), 0, 0, SV("12345"), 0, 2, S("12")); - test(S(""), 0, 0, SV("12345"), 0, 4, S("1234")); - test(S(""), 0, 0, SV("12345"), 0, 5, S("12345")); - test(S(""), 0, 0, SV("12345"), 0, 6, S("12345")); - test(S(""), 0, 0, SV("12345"), 1, 0, S("")); - test(S(""), 0, 0, SV("12345"), 1, 1, S("2")); - test(S(""), 0, 0, SV("12345"), 1, 2, S("23")); - test(S(""), 0, 0, SV("12345"), 1, 3, S("234")); - test(S(""), 0, 0, SV("12345"), 1, 4, S("2345")); - test(S(""), 0, 0, SV("12345"), 1, 5, S("2345")); - test(S(""), 0, 0, SV("12345"), 2, 0, S("")); - test(S(""), 0, 0, SV("12345"), 2, 1, S("3")); - test(S(""), 0, 0, SV("12345"), 2, 2, S("34")); - test(S(""), 0, 0, SV("12345"), 2, 3, S("345")); - test(S(""), 0, 0, SV("12345"), 2, 4, S("345")); - test(S(""), 0, 0, SV("12345"), 4, 0, S("")); - test(S(""), 0, 0, SV("12345"), 4, 1, S("5")); - test(S(""), 0, 0, SV("12345"), 4, 2, S("5")); - test(S(""), 0, 0, SV("12345"), 5, 0, S("")); - test(S(""), 0, 0, SV("12345"), 5, 1, S("")); - test(S(""), 0, 0, SV("12345"), 6, 0, S("can't happen")); - test(S(""), 0, 0, SV("1234567890"), 0, 0, S("")); - test(S(""), 0, 0, SV("1234567890"), 0, 1, S("1")); - test(S(""), 0, 0, SV("1234567890"), 0, 5, S("12345")); - test(S(""), 0, 0, SV("1234567890"), 0, 9, S("123456789")); - test(S(""), 0, 0, SV("1234567890"), 0, 10, S("1234567890")); - test(S(""), 0, 0, SV("1234567890"), 0, 11, S("1234567890")); - test(S(""), 0, 0, SV("1234567890"), 1, 0, S("")); - test(S(""), 0, 0, SV("1234567890"), 1, 1, S("2")); - test(S(""), 0, 0, SV("1234567890"), 1, 4, S("2345")); - test(S(""), 0, 0, SV("1234567890"), 1, 8, S("23456789")); - test(S(""), 0, 0, SV("1234567890"), 1, 9, S("234567890")); - test(S(""), 0, 0, SV("1234567890"), 1, 10, S("234567890")); - test(S(""), 0, 0, SV("1234567890"), 5, 0, S("")); - test(S(""), 0, 0, SV("1234567890"), 5, 1, S("6")); - test(S(""), 0, 0, SV("1234567890"), 5, 2, S("67")); - test(S(""), 0, 0, SV("1234567890"), 5, 4, S("6789")); - test(S(""), 0, 0, SV("1234567890"), 5, 5, S("67890")); - test(S(""), 0, 0, SV("1234567890"), 5, 6, S("67890")); - test(S(""), 0, 0, SV("1234567890"), 9, 0, S("")); - test(S(""), 0, 0, SV("1234567890"), 9, 1, S("0")); - test(S(""), 0, 0, SV("1234567890"), 9, 2, S("0")); - test(S(""), 0, 0, SV("1234567890"), 10, 0, S("")); - test(S(""), 0, 0, SV("1234567890"), 10, 1, S("")); - test(S(""), 0, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S(""), 0, 0, SV("12345678901234567890"), 0, 0, S("")); - test(S(""), 0, 0, SV("12345678901234567890"), 0, 1, S("1")); - test(S(""), 0, 0, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S(""), 0, 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), 1, 0, S("")); - test(S(""), 0, 0, SV("12345678901234567890"), 1, 1, S("2")); - test(S(""), 0, 0, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S(""), 0, 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), 10, 0, S("")); - test(S(""), 0, 0, SV("12345678901234567890"), 10, 1, S("1")); - test(S(""), 0, 0, SV("12345678901234567890"), 10, 5, S("12345")); - test(S(""), 0, 0, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S(""), 0, 0, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), 19, 0, S("")); - test(S(""), 0, 0, SV("12345678901234567890"), 19, 1, S("0")); - test(S(""), 0, 0, SV("12345678901234567890"), 19, 2, S("0")); - test(S(""), 0, 0, SV("12345678901234567890"), 20, 0, S("")); - test(S(""), 0, 0, SV("12345678901234567890"), 20, 1, S("")); - test(S(""), 0, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S(""), 0, 1, SV(""), 0, 0, S("")); - test(S(""), 0, 1, SV(""), 0, 1, S("")); - test(S(""), 0, 1, SV(""), 1, 0, S("can't happen")); - test(S(""), 0, 1, SV("12345"), 0, 0, S("")); - test(S(""), 0, 1, SV("12345"), 0, 1, S("1")); - test(S(""), 0, 1, SV("12345"), 0, 2, S("12")); - test(S(""), 0, 1, SV("12345"), 0, 4, S("1234")); - test(S(""), 0, 1, SV("12345"), 0, 5, S("12345")); - test(S(""), 0, 1, SV("12345"), 0, 6, S("12345")); - test(S(""), 0, 1, SV("12345"), 1, 0, S("")); - test(S(""), 0, 1, SV("12345"), 1, 1, S("2")); - test(S(""), 0, 1, SV("12345"), 1, 2, S("23")); - test(S(""), 0, 1, SV("12345"), 1, 3, S("234")); - test(S(""), 0, 1, SV("12345"), 1, 4, S("2345")); - test(S(""), 0, 1, SV("12345"), 1, 5, S("2345")); - test(S(""), 0, 1, SV("12345"), 2, 0, S("")); - test(S(""), 0, 1, SV("12345"), 2, 1, S("3")); - test(S(""), 0, 1, SV("12345"), 2, 2, S("34")); - test(S(""), 0, 1, SV("12345"), 2, 3, S("345")); - test(S(""), 0, 1, SV("12345"), 2, 4, S("345")); - test(S(""), 0, 1, SV("12345"), 4, 0, S("")); - test(S(""), 0, 1, SV("12345"), 4, 1, S("5")); - test(S(""), 0, 1, SV("12345"), 4, 2, S("5")); - test(S(""), 0, 1, SV("12345"), 5, 0, S("")); - test(S(""), 0, 1, SV("12345"), 5, 1, S("")); - test(S(""), 0, 1, SV("12345"), 6, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, SV(""), 0, 0, S("")); + test(S(""), 0, 0, SV(""), 0, 1, S("")); + test(S(""), 0, 0, SV(""), 1, 0, S("can't happen")); + test(S(""), 0, 0, SV("12345"), 0, 0, S("")); + test(S(""), 0, 0, SV("12345"), 0, 1, S("1")); + test(S(""), 0, 0, SV("12345"), 0, 2, S("12")); + test(S(""), 0, 0, SV("12345"), 0, 4, S("1234")); + test(S(""), 0, 0, SV("12345"), 0, 5, S("12345")); + test(S(""), 0, 0, SV("12345"), 0, 6, S("12345")); + test(S(""), 0, 0, SV("12345"), 1, 0, S("")); + test(S(""), 0, 0, SV("12345"), 1, 1, S("2")); + test(S(""), 0, 0, SV("12345"), 1, 2, S("23")); + test(S(""), 0, 0, SV("12345"), 1, 3, S("234")); + test(S(""), 0, 0, SV("12345"), 1, 4, S("2345")); + test(S(""), 0, 0, SV("12345"), 1, 5, S("2345")); + test(S(""), 0, 0, SV("12345"), 2, 0, S("")); + test(S(""), 0, 0, SV("12345"), 2, 1, S("3")); + test(S(""), 0, 0, SV("12345"), 2, 2, S("34")); + test(S(""), 0, 0, SV("12345"), 2, 3, S("345")); + test(S(""), 0, 0, SV("12345"), 2, 4, S("345")); + test(S(""), 0, 0, SV("12345"), 4, 0, S("")); + test(S(""), 0, 0, SV("12345"), 4, 1, S("5")); + test(S(""), 0, 0, SV("12345"), 4, 2, S("5")); + test(S(""), 0, 0, SV("12345"), 5, 0, S("")); + test(S(""), 0, 0, SV("12345"), 5, 1, S("")); + test(S(""), 0, 0, SV("12345"), 6, 0, S("can't happen")); + test(S(""), 0, 0, SV("1234567890"), 0, 0, S("")); + test(S(""), 0, 0, SV("1234567890"), 0, 1, S("1")); + test(S(""), 0, 0, SV("1234567890"), 0, 5, S("12345")); + test(S(""), 0, 0, SV("1234567890"), 0, 9, S("123456789")); + test(S(""), 0, 0, SV("1234567890"), 0, 10, S("1234567890")); + test(S(""), 0, 0, SV("1234567890"), 0, 11, S("1234567890")); + test(S(""), 0, 0, SV("1234567890"), 1, 0, S("")); + test(S(""), 0, 0, SV("1234567890"), 1, 1, S("2")); + test(S(""), 0, 0, SV("1234567890"), 1, 4, S("2345")); + test(S(""), 0, 0, SV("1234567890"), 1, 8, S("23456789")); + test(S(""), 0, 0, SV("1234567890"), 1, 9, S("234567890")); + test(S(""), 0, 0, SV("1234567890"), 1, 10, S("234567890")); + test(S(""), 0, 0, SV("1234567890"), 5, 0, S("")); + test(S(""), 0, 0, SV("1234567890"), 5, 1, S("6")); + test(S(""), 0, 0, SV("1234567890"), 5, 2, S("67")); + test(S(""), 0, 0, SV("1234567890"), 5, 4, S("6789")); + test(S(""), 0, 0, SV("1234567890"), 5, 5, S("67890")); + test(S(""), 0, 0, SV("1234567890"), 5, 6, S("67890")); + test(S(""), 0, 0, SV("1234567890"), 9, 0, S("")); + test(S(""), 0, 0, SV("1234567890"), 9, 1, S("0")); + test(S(""), 0, 0, SV("1234567890"), 9, 2, S("0")); + test(S(""), 0, 0, SV("1234567890"), 10, 0, S("")); + test(S(""), 0, 0, SV("1234567890"), 10, 1, S("")); + test(S(""), 0, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S(""), 0, 0, SV("12345678901234567890"), 0, 0, S("")); + test(S(""), 0, 0, SV("12345678901234567890"), 0, 1, S("1")); + test(S(""), 0, 0, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S(""), 0, 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), 1, 0, S("")); + test(S(""), 0, 0, SV("12345678901234567890"), 1, 1, S("2")); + test(S(""), 0, 0, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S(""), 0, 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), 10, 0, S("")); + test(S(""), 0, 0, SV("12345678901234567890"), 10, 1, S("1")); + test(S(""), 0, 0, SV("12345678901234567890"), 10, 5, S("12345")); + test(S(""), 0, 0, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S(""), 0, 0, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), 19, 0, S("")); + test(S(""), 0, 0, SV("12345678901234567890"), 19, 1, S("0")); + test(S(""), 0, 0, SV("12345678901234567890"), 19, 2, S("0")); + test(S(""), 0, 0, SV("12345678901234567890"), 20, 0, S("")); + test(S(""), 0, 0, SV("12345678901234567890"), 20, 1, S("")); + test(S(""), 0, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S(""), 0, 1, SV(""), 0, 0, S("")); + test(S(""), 0, 1, SV(""), 0, 1, S("")); + test(S(""), 0, 1, SV(""), 1, 0, S("can't happen")); + test(S(""), 0, 1, SV("12345"), 0, 0, S("")); + test(S(""), 0, 1, SV("12345"), 0, 1, S("1")); + test(S(""), 0, 1, SV("12345"), 0, 2, S("12")); + test(S(""), 0, 1, SV("12345"), 0, 4, S("1234")); + test(S(""), 0, 1, SV("12345"), 0, 5, S("12345")); + test(S(""), 0, 1, SV("12345"), 0, 6, S("12345")); + test(S(""), 0, 1, SV("12345"), 1, 0, S("")); + test(S(""), 0, 1, SV("12345"), 1, 1, S("2")); + test(S(""), 0, 1, SV("12345"), 1, 2, S("23")); + test(S(""), 0, 1, SV("12345"), 1, 3, S("234")); + test(S(""), 0, 1, SV("12345"), 1, 4, S("2345")); + test(S(""), 0, 1, SV("12345"), 1, 5, S("2345")); + test(S(""), 0, 1, SV("12345"), 2, 0, S("")); + test(S(""), 0, 1, SV("12345"), 2, 1, S("3")); + test(S(""), 0, 1, SV("12345"), 2, 2, S("34")); + test(S(""), 0, 1, SV("12345"), 2, 3, S("345")); + test(S(""), 0, 1, SV("12345"), 2, 4, S("345")); + test(S(""), 0, 1, SV("12345"), 4, 0, S("")); + test(S(""), 0, 1, SV("12345"), 4, 1, S("5")); + test(S(""), 0, 1, SV("12345"), 4, 2, S("5")); + test(S(""), 0, 1, SV("12345"), 5, 0, S("")); + test(S(""), 0, 1, SV("12345"), 5, 1, S("")); + test(S(""), 0, 1, SV("12345"), 6, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S(""), 0, 1, SV("1234567890"), 0, 0, S("")); - test(S(""), 0, 1, SV("1234567890"), 0, 1, S("1")); - test(S(""), 0, 1, SV("1234567890"), 0, 5, S("12345")); - test(S(""), 0, 1, SV("1234567890"), 0, 9, S("123456789")); - test(S(""), 0, 1, SV("1234567890"), 0, 10, S("1234567890")); - test(S(""), 0, 1, SV("1234567890"), 0, 11, S("1234567890")); - test(S(""), 0, 1, SV("1234567890"), 1, 0, S("")); - test(S(""), 0, 1, SV("1234567890"), 1, 1, S("2")); - test(S(""), 0, 1, SV("1234567890"), 1, 4, S("2345")); - test(S(""), 0, 1, SV("1234567890"), 1, 8, S("23456789")); - test(S(""), 0, 1, SV("1234567890"), 1, 9, S("234567890")); - test(S(""), 0, 1, SV("1234567890"), 1, 10, S("234567890")); - test(S(""), 0, 1, SV("1234567890"), 5, 0, S("")); - test(S(""), 0, 1, SV("1234567890"), 5, 1, S("6")); - test(S(""), 0, 1, SV("1234567890"), 5, 2, S("67")); - test(S(""), 0, 1, SV("1234567890"), 5, 4, S("6789")); - test(S(""), 0, 1, SV("1234567890"), 5, 5, S("67890")); - test(S(""), 0, 1, SV("1234567890"), 5, 6, S("67890")); - test(S(""), 0, 1, SV("1234567890"), 9, 0, S("")); - test(S(""), 0, 1, SV("1234567890"), 9, 1, S("0")); - test(S(""), 0, 1, SV("1234567890"), 9, 2, S("0")); - test(S(""), 0, 1, SV("1234567890"), 10, 0, S("")); - test(S(""), 0, 1, SV("1234567890"), 10, 1, S("")); - test(S(""), 0, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S(""), 0, 1, SV("12345678901234567890"), 0, 0, S("")); - test(S(""), 0, 1, SV("12345678901234567890"), 0, 1, S("1")); - test(S(""), 0, 1, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S(""), 0, 1, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), 1, 0, S("")); - test(S(""), 0, 1, SV("12345678901234567890"), 1, 1, S("2")); - test(S(""), 0, 1, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S(""), 0, 1, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), 10, 0, S("")); - test(S(""), 0, 1, SV("12345678901234567890"), 10, 1, S("1")); - test(S(""), 0, 1, SV("12345678901234567890"), 10, 5, S("12345")); - test(S(""), 0, 1, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S(""), 0, 1, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), 19, 0, S("")); - test(S(""), 0, 1, SV("12345678901234567890"), 19, 1, S("0")); - test(S(""), 0, 1, SV("12345678901234567890"), 19, 2, S("0")); - test(S(""), 0, 1, SV("12345678901234567890"), 20, 0, S("")); - test(S(""), 0, 1, SV("12345678901234567890"), 20, 1, S("")); - test(S(""), 0, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S(""), 1, 0, SV(""), 0, 0, S("can't happen")); - test(S(""), 1, 0, SV(""), 0, 1, S("can't happen")); - test(S(""), 1, 0, SV(""), 1, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 0, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 0, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 0, 2, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 0, 4, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 0, 5, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 0, 6, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 1, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 1, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 1, 2, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 1, 3, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 1, 4, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 1, 5, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 2, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 2, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 2, 2, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 2, 3, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 2, 4, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 4, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 4, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 4, 2, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 5, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 5, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345"), 6, 0, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 0, 0, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 0, 1, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 0, 5, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 0, 9, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 0, 10, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 0, 11, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 1, 0, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 1, 1, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 1, 4, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 1, 8, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 1, 9, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 1, 10, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 5, 0, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 5, 1, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 5, 2, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 5, 4, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 5, 5, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 5, 6, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 9, 0, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 9, 1, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 9, 2, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 10, 0, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 10, 1, S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 0, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 0, 1, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test1() { + test(S(""), 0, 1, SV("1234567890"), 0, 0, S("")); + test(S(""), 0, 1, SV("1234567890"), 0, 1, S("1")); + test(S(""), 0, 1, SV("1234567890"), 0, 5, S("12345")); + test(S(""), 0, 1, SV("1234567890"), 0, 9, S("123456789")); + test(S(""), 0, 1, SV("1234567890"), 0, 10, S("1234567890")); + test(S(""), 0, 1, SV("1234567890"), 0, 11, S("1234567890")); + test(S(""), 0, 1, SV("1234567890"), 1, 0, S("")); + test(S(""), 0, 1, SV("1234567890"), 1, 1, S("2")); + test(S(""), 0, 1, SV("1234567890"), 1, 4, S("2345")); + test(S(""), 0, 1, SV("1234567890"), 1, 8, S("23456789")); + test(S(""), 0, 1, SV("1234567890"), 1, 9, S("234567890")); + test(S(""), 0, 1, SV("1234567890"), 1, 10, S("234567890")); + test(S(""), 0, 1, SV("1234567890"), 5, 0, S("")); + test(S(""), 0, 1, SV("1234567890"), 5, 1, S("6")); + test(S(""), 0, 1, SV("1234567890"), 5, 2, S("67")); + test(S(""), 0, 1, SV("1234567890"), 5, 4, S("6789")); + test(S(""), 0, 1, SV("1234567890"), 5, 5, S("67890")); + test(S(""), 0, 1, SV("1234567890"), 5, 6, S("67890")); + test(S(""), 0, 1, SV("1234567890"), 9, 0, S("")); + test(S(""), 0, 1, SV("1234567890"), 9, 1, S("0")); + test(S(""), 0, 1, SV("1234567890"), 9, 2, S("0")); + test(S(""), 0, 1, SV("1234567890"), 10, 0, S("")); + test(S(""), 0, 1, SV("1234567890"), 10, 1, S("")); + test(S(""), 0, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S(""), 0, 1, SV("12345678901234567890"), 0, 0, S("")); + test(S(""), 0, 1, SV("12345678901234567890"), 0, 1, S("1")); + test(S(""), 0, 1, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S(""), 0, 1, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), 1, 0, S("")); + test(S(""), 0, 1, SV("12345678901234567890"), 1, 1, S("2")); + test(S(""), 0, 1, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S(""), 0, 1, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), 10, 0, S("")); + test(S(""), 0, 1, SV("12345678901234567890"), 10, 1, S("1")); + test(S(""), 0, 1, SV("12345678901234567890"), 10, 5, S("12345")); + test(S(""), 0, 1, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S(""), 0, 1, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), 19, 0, S("")); + test(S(""), 0, 1, SV("12345678901234567890"), 19, 1, S("0")); + test(S(""), 0, 1, SV("12345678901234567890"), 19, 2, S("0")); + test(S(""), 0, 1, SV("12345678901234567890"), 20, 0, S("")); + test(S(""), 0, 1, SV("12345678901234567890"), 20, 1, S("")); + test(S(""), 0, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S(""), 1, 0, SV(""), 0, 0, S("can't happen")); + test(S(""), 1, 0, SV(""), 0, 1, S("can't happen")); + test(S(""), 1, 0, SV(""), 1, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 0, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 0, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 0, 2, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 0, 4, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 0, 5, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 0, 6, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 1, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 1, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 1, 2, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 1, 3, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 1, 4, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 1, 5, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 2, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 2, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 2, 2, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 2, 3, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 2, 4, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 4, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 4, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 4, 2, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 5, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 5, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345"), 6, 0, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 0, 0, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 0, 1, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 0, 5, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 0, 9, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 0, 10, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 0, 11, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 1, 0, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 1, 1, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 1, 4, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 1, 8, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 1, 9, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 1, 10, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 5, 0, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 5, 1, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 5, 2, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 5, 4, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 5, 5, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 5, 6, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 9, 0, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 9, 1, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 9, 2, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 10, 0, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 10, 1, S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 0, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 0, 1, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S(""), 1, 0, SV("12345678901234567890"), 0, 10, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 0, 19, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 0, 20, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 0, 21, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 1, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 1, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 1, 9, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 1, 18, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 1, 19, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 1, 20, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 10, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 10, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 10, 5, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 10, 9, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 10, 10, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 10, 11, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 19, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 19, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 19, 2, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 20, 0, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 20, 1, S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 0, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 0, 0, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 0, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 0, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345"), 0, 1, S("1abcde")); - test(S("abcde"), 0, 0, SV("12345"), 0, 2, S("12abcde")); - test(S("abcde"), 0, 0, SV("12345"), 0, 4, S("1234abcde")); - test(S("abcde"), 0, 0, SV("12345"), 0, 5, S("12345abcde")); - test(S("abcde"), 0, 0, SV("12345"), 0, 6, S("12345abcde")); - test(S("abcde"), 0, 0, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345"), 1, 1, S("2abcde")); - test(S("abcde"), 0, 0, SV("12345"), 1, 2, S("23abcde")); - test(S("abcde"), 0, 0, SV("12345"), 1, 3, S("234abcde")); - test(S("abcde"), 0, 0, SV("12345"), 1, 4, S("2345abcde")); - test(S("abcde"), 0, 0, SV("12345"), 1, 5, S("2345abcde")); - test(S("abcde"), 0, 0, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345"), 2, 1, S("3abcde")); - test(S("abcde"), 0, 0, SV("12345"), 2, 2, S("34abcde")); - test(S("abcde"), 0, 0, SV("12345"), 2, 3, S("345abcde")); - test(S("abcde"), 0, 0, SV("12345"), 2, 4, S("345abcde")); - test(S("abcde"), 0, 0, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345"), 4, 1, S("5abcde")); - test(S("abcde"), 0, 0, SV("12345"), 4, 2, S("5abcde")); - test(S("abcde"), 0, 0, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 0, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 0, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 0, 1, S("1abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 0, 5, S("12345abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 0, 9, S("123456789abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 0, 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 0, 11, S("1234567890abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 1, 1, S("2abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 1, 4, S("2345abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 1, 8, S("23456789abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 1, 9, S("234567890abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 1, 10, S("234567890abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 5, 1, S("6abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 5, 2, S("67abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 5, 4, S("6789abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 5, 5, S("67890abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 5, 6, S("67890abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 9, 1, S("0abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 9, 2, S("0abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 1, S("1abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 1, S("2abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 9, S("234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 1, S("1abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 5, S("12345abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 9, S("123456789abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 11, S("1234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 19, 1, S("0abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 19, 2, S("0abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 1, SV(""), 0, 0, S("bcde")); - test(S("abcde"), 0, 1, SV(""), 0, 1, S("bcde")); - test(S("abcde"), 0, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 1, SV("12345"), 0, 0, S("bcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test2() { + test(S(""), 1, 0, SV("12345678901234567890"), 0, 10, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 0, 19, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 0, 20, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 0, 21, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 1, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 1, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 1, 9, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 1, 18, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 1, 19, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 1, 20, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 10, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 10, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 10, 5, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 10, 9, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 10, 10, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 10, 11, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 19, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 19, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 19, 2, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 20, 0, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 20, 1, S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 0, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 0, 0, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 0, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 0, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345"), 0, 1, S("1abcde")); + test(S("abcde"), 0, 0, SV("12345"), 0, 2, S("12abcde")); + test(S("abcde"), 0, 0, SV("12345"), 0, 4, S("1234abcde")); + test(S("abcde"), 0, 0, SV("12345"), 0, 5, S("12345abcde")); + test(S("abcde"), 0, 0, SV("12345"), 0, 6, S("12345abcde")); + test(S("abcde"), 0, 0, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345"), 1, 1, S("2abcde")); + test(S("abcde"), 0, 0, SV("12345"), 1, 2, S("23abcde")); + test(S("abcde"), 0, 0, SV("12345"), 1, 3, S("234abcde")); + test(S("abcde"), 0, 0, SV("12345"), 1, 4, S("2345abcde")); + test(S("abcde"), 0, 0, SV("12345"), 1, 5, S("2345abcde")); + test(S("abcde"), 0, 0, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345"), 2, 1, S("3abcde")); + test(S("abcde"), 0, 0, SV("12345"), 2, 2, S("34abcde")); + test(S("abcde"), 0, 0, SV("12345"), 2, 3, S("345abcde")); + test(S("abcde"), 0, 0, SV("12345"), 2, 4, S("345abcde")); + test(S("abcde"), 0, 0, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345"), 4, 1, S("5abcde")); + test(S("abcde"), 0, 0, SV("12345"), 4, 2, S("5abcde")); + test(S("abcde"), 0, 0, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 0, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 0, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 0, 1, S("1abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 0, 5, S("12345abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 0, 9, S("123456789abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 0, 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 0, 11, S("1234567890abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 1, 1, S("2abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 1, 4, S("2345abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 1, 8, S("23456789abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 1, 9, S("234567890abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 1, 10, S("234567890abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 5, 1, S("6abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 5, 2, S("67abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 5, 4, S("6789abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 5, 5, S("67890abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 5, 6, S("67890abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 9, 1, S("0abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 9, 2, S("0abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 1, S("1abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 1, S("2abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 9, S("234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 1, S("1abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 5, S("12345abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 9, S("123456789abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 10, 11, S("1234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 19, 1, S("0abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 19, 2, S("0abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 1, SV(""), 0, 0, S("bcde")); + test(S("abcde"), 0, 1, SV(""), 0, 1, S("bcde")); + test(S("abcde"), 0, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 1, SV("12345"), 0, 0, S("bcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcde"), 0, 1, SV("12345"), 0, 1, S("1bcde")); - test(S("abcde"), 0, 1, SV("12345"), 0, 2, S("12bcde")); - test(S("abcde"), 0, 1, SV("12345"), 0, 4, S("1234bcde")); - test(S("abcde"), 0, 1, SV("12345"), 0, 5, S("12345bcde")); - test(S("abcde"), 0, 1, SV("12345"), 0, 6, S("12345bcde")); - test(S("abcde"), 0, 1, SV("12345"), 1, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345"), 1, 1, S("2bcde")); - test(S("abcde"), 0, 1, SV("12345"), 1, 2, S("23bcde")); - test(S("abcde"), 0, 1, SV("12345"), 1, 3, S("234bcde")); - test(S("abcde"), 0, 1, SV("12345"), 1, 4, S("2345bcde")); - test(S("abcde"), 0, 1, SV("12345"), 1, 5, S("2345bcde")); - test(S("abcde"), 0, 1, SV("12345"), 2, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345"), 2, 1, S("3bcde")); - test(S("abcde"), 0, 1, SV("12345"), 2, 2, S("34bcde")); - test(S("abcde"), 0, 1, SV("12345"), 2, 3, S("345bcde")); - test(S("abcde"), 0, 1, SV("12345"), 2, 4, S("345bcde")); - test(S("abcde"), 0, 1, SV("12345"), 4, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345"), 4, 1, S("5bcde")); - test(S("abcde"), 0, 1, SV("12345"), 4, 2, S("5bcde")); - test(S("abcde"), 0, 1, SV("12345"), 5, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345"), 5, 1, S("bcde")); - test(S("abcde"), 0, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 1, SV("1234567890"), 0, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 0, 1, S("1bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 0, 5, S("12345bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 0, 9, S("123456789bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 0, 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 0, 11, S("1234567890bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 1, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 1, 1, S("2bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 1, 4, S("2345bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 1, 8, S("23456789bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 1, 9, S("234567890bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 1, 10, S("234567890bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 5, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 5, 1, S("6bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 5, 2, S("67bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 5, 4, S("6789bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 5, 5, S("67890bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 5, 6, S("67890bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 9, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 9, 1, S("0bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 9, 2, S("0bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 10, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 10, 1, S("bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 1, S("1bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 19, S("1234567890123456789bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 20, S("12345678901234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 21, S("12345678901234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 1, S("2bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 9, S("234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 18, S("234567890123456789bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 19, S("2345678901234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 20, S("2345678901234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 1, S("1bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 5, S("12345bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 9, S("123456789bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 11, S("1234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 19, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 19, 1, S("0bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 19, 2, S("0bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 20, 0, S("bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 20, 1, S("bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 2, SV(""), 0, 0, S("cde")); - test(S("abcde"), 0, 2, SV(""), 0, 1, S("cde")); - test(S("abcde"), 0, 2, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 2, SV("12345"), 0, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345"), 0, 1, S("1cde")); - test(S("abcde"), 0, 2, SV("12345"), 0, 2, S("12cde")); - test(S("abcde"), 0, 2, SV("12345"), 0, 4, S("1234cde")); - test(S("abcde"), 0, 2, SV("12345"), 0, 5, S("12345cde")); - test(S("abcde"), 0, 2, SV("12345"), 0, 6, S("12345cde")); - test(S("abcde"), 0, 2, SV("12345"), 1, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345"), 1, 1, S("2cde")); - test(S("abcde"), 0, 2, SV("12345"), 1, 2, S("23cde")); - test(S("abcde"), 0, 2, SV("12345"), 1, 3, S("234cde")); - test(S("abcde"), 0, 2, SV("12345"), 1, 4, S("2345cde")); - test(S("abcde"), 0, 2, SV("12345"), 1, 5, S("2345cde")); - test(S("abcde"), 0, 2, SV("12345"), 2, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345"), 2, 1, S("3cde")); - test(S("abcde"), 0, 2, SV("12345"), 2, 2, S("34cde")); - test(S("abcde"), 0, 2, SV("12345"), 2, 3, S("345cde")); - test(S("abcde"), 0, 2, SV("12345"), 2, 4, S("345cde")); - test(S("abcde"), 0, 2, SV("12345"), 4, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345"), 4, 1, S("5cde")); - test(S("abcde"), 0, 2, SV("12345"), 4, 2, S("5cde")); - test(S("abcde"), 0, 2, SV("12345"), 5, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345"), 5, 1, S("cde")); - test(S("abcde"), 0, 2, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 2, SV("1234567890"), 0, 0, S("cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 0, 1, S("1cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 0, 5, S("12345cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 0, 9, S("123456789cde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcde"), 0, 1, SV("12345"), 0, 1, S("1bcde")); + test(S("abcde"), 0, 1, SV("12345"), 0, 2, S("12bcde")); + test(S("abcde"), 0, 1, SV("12345"), 0, 4, S("1234bcde")); + test(S("abcde"), 0, 1, SV("12345"), 0, 5, S("12345bcde")); + test(S("abcde"), 0, 1, SV("12345"), 0, 6, S("12345bcde")); + test(S("abcde"), 0, 1, SV("12345"), 1, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345"), 1, 1, S("2bcde")); + test(S("abcde"), 0, 1, SV("12345"), 1, 2, S("23bcde")); + test(S("abcde"), 0, 1, SV("12345"), 1, 3, S("234bcde")); + test(S("abcde"), 0, 1, SV("12345"), 1, 4, S("2345bcde")); + test(S("abcde"), 0, 1, SV("12345"), 1, 5, S("2345bcde")); + test(S("abcde"), 0, 1, SV("12345"), 2, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345"), 2, 1, S("3bcde")); + test(S("abcde"), 0, 1, SV("12345"), 2, 2, S("34bcde")); + test(S("abcde"), 0, 1, SV("12345"), 2, 3, S("345bcde")); + test(S("abcde"), 0, 1, SV("12345"), 2, 4, S("345bcde")); + test(S("abcde"), 0, 1, SV("12345"), 4, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345"), 4, 1, S("5bcde")); + test(S("abcde"), 0, 1, SV("12345"), 4, 2, S("5bcde")); + test(S("abcde"), 0, 1, SV("12345"), 5, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345"), 5, 1, S("bcde")); + test(S("abcde"), 0, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 1, SV("1234567890"), 0, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 0, 1, S("1bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 0, 5, S("12345bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 0, 9, S("123456789bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 0, 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 0, 11, S("1234567890bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 1, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 1, 1, S("2bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 1, 4, S("2345bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 1, 8, S("23456789bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 1, 9, S("234567890bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 1, 10, S("234567890bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 5, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 5, 1, S("6bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 5, 2, S("67bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 5, 4, S("6789bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 5, 5, S("67890bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 5, 6, S("67890bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 9, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 9, 1, S("0bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 9, 2, S("0bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 10, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 10, 1, S("bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 1, S("1bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 19, S("1234567890123456789bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 20, S("12345678901234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 0, 21, S("12345678901234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 1, S("2bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 9, S("234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 18, S("234567890123456789bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 19, S("2345678901234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 1, 20, S("2345678901234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 1, S("1bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 5, S("12345bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 9, S("123456789bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 10, 11, S("1234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 19, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 19, 1, S("0bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 19, 2, S("0bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 20, 0, S("bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 20, 1, S("bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 2, SV(""), 0, 0, S("cde")); + test(S("abcde"), 0, 2, SV(""), 0, 1, S("cde")); + test(S("abcde"), 0, 2, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 2, SV("12345"), 0, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345"), 0, 1, S("1cde")); + test(S("abcde"), 0, 2, SV("12345"), 0, 2, S("12cde")); + test(S("abcde"), 0, 2, SV("12345"), 0, 4, S("1234cde")); + test(S("abcde"), 0, 2, SV("12345"), 0, 5, S("12345cde")); + test(S("abcde"), 0, 2, SV("12345"), 0, 6, S("12345cde")); + test(S("abcde"), 0, 2, SV("12345"), 1, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345"), 1, 1, S("2cde")); + test(S("abcde"), 0, 2, SV("12345"), 1, 2, S("23cde")); + test(S("abcde"), 0, 2, SV("12345"), 1, 3, S("234cde")); + test(S("abcde"), 0, 2, SV("12345"), 1, 4, S("2345cde")); + test(S("abcde"), 0, 2, SV("12345"), 1, 5, S("2345cde")); + test(S("abcde"), 0, 2, SV("12345"), 2, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345"), 2, 1, S("3cde")); + test(S("abcde"), 0, 2, SV("12345"), 2, 2, S("34cde")); + test(S("abcde"), 0, 2, SV("12345"), 2, 3, S("345cde")); + test(S("abcde"), 0, 2, SV("12345"), 2, 4, S("345cde")); + test(S("abcde"), 0, 2, SV("12345"), 4, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345"), 4, 1, S("5cde")); + test(S("abcde"), 0, 2, SV("12345"), 4, 2, S("5cde")); + test(S("abcde"), 0, 2, SV("12345"), 5, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345"), 5, 1, S("cde")); + test(S("abcde"), 0, 2, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 2, SV("1234567890"), 0, 0, S("cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 0, 1, S("1cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 0, 5, S("12345cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 0, 9, S("123456789cde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcde"), 0, 2, SV("1234567890"), 0, 10, S("1234567890cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 0, 11, S("1234567890cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 1, 0, S("cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 1, 1, S("2cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 1, 4, S("2345cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 1, 8, S("23456789cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 1, 9, S("234567890cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 1, 10, S("234567890cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 5, 0, S("cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 5, 1, S("6cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 5, 2, S("67cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 5, 4, S("6789cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 5, 5, S("67890cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 5, 6, S("67890cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 9, 0, S("cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 9, 1, S("0cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 9, 2, S("0cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 10, 0, S("cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 10, 1, S("cde")); - test(S("abcde"), 0, 2, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 1, S("1cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 10, S("1234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 19, S("1234567890123456789cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 20, S("12345678901234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 21, S("12345678901234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 1, S("2cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 9, S("234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 18, S("234567890123456789cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 19, S("2345678901234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 20, S("2345678901234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 1, S("1cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 5, S("12345cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 9, S("123456789cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 10, S("1234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 11, S("1234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 19, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 19, 1, S("0cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 19, 2, S("0cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 20, 0, S("cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 20, 1, S("cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 4, SV(""), 0, 0, S("e")); - test(S("abcde"), 0, 4, SV(""), 0, 1, S("e")); - test(S("abcde"), 0, 4, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 4, SV("12345"), 0, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345"), 0, 1, S("1e")); - test(S("abcde"), 0, 4, SV("12345"), 0, 2, S("12e")); - test(S("abcde"), 0, 4, SV("12345"), 0, 4, S("1234e")); - test(S("abcde"), 0, 4, SV("12345"), 0, 5, S("12345e")); - test(S("abcde"), 0, 4, SV("12345"), 0, 6, S("12345e")); - test(S("abcde"), 0, 4, SV("12345"), 1, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345"), 1, 1, S("2e")); - test(S("abcde"), 0, 4, SV("12345"), 1, 2, S("23e")); - test(S("abcde"), 0, 4, SV("12345"), 1, 3, S("234e")); - test(S("abcde"), 0, 4, SV("12345"), 1, 4, S("2345e")); - test(S("abcde"), 0, 4, SV("12345"), 1, 5, S("2345e")); - test(S("abcde"), 0, 4, SV("12345"), 2, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345"), 2, 1, S("3e")); - test(S("abcde"), 0, 4, SV("12345"), 2, 2, S("34e")); - test(S("abcde"), 0, 4, SV("12345"), 2, 3, S("345e")); - test(S("abcde"), 0, 4, SV("12345"), 2, 4, S("345e")); - test(S("abcde"), 0, 4, SV("12345"), 4, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345"), 4, 1, S("5e")); - test(S("abcde"), 0, 4, SV("12345"), 4, 2, S("5e")); - test(S("abcde"), 0, 4, SV("12345"), 5, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345"), 5, 1, S("e")); - test(S("abcde"), 0, 4, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 4, SV("1234567890"), 0, 0, S("e")); - test(S("abcde"), 0, 4, SV("1234567890"), 0, 1, S("1e")); - test(S("abcde"), 0, 4, SV("1234567890"), 0, 5, S("12345e")); - test(S("abcde"), 0, 4, SV("1234567890"), 0, 9, S("123456789e")); - test(S("abcde"), 0, 4, SV("1234567890"), 0, 10, S("1234567890e")); - test(S("abcde"), 0, 4, SV("1234567890"), 0, 11, S("1234567890e")); - test(S("abcde"), 0, 4, SV("1234567890"), 1, 0, S("e")); - test(S("abcde"), 0, 4, SV("1234567890"), 1, 1, S("2e")); - test(S("abcde"), 0, 4, SV("1234567890"), 1, 4, S("2345e")); - test(S("abcde"), 0, 4, SV("1234567890"), 1, 8, S("23456789e")); - test(S("abcde"), 0, 4, SV("1234567890"), 1, 9, S("234567890e")); - test(S("abcde"), 0, 4, SV("1234567890"), 1, 10, S("234567890e")); - test(S("abcde"), 0, 4, SV("1234567890"), 5, 0, S("e")); - test(S("abcde"), 0, 4, SV("1234567890"), 5, 1, S("6e")); - test(S("abcde"), 0, 4, SV("1234567890"), 5, 2, S("67e")); - test(S("abcde"), 0, 4, SV("1234567890"), 5, 4, S("6789e")); - test(S("abcde"), 0, 4, SV("1234567890"), 5, 5, S("67890e")); - test(S("abcde"), 0, 4, SV("1234567890"), 5, 6, S("67890e")); - test(S("abcde"), 0, 4, SV("1234567890"), 9, 0, S("e")); - test(S("abcde"), 0, 4, SV("1234567890"), 9, 1, S("0e")); - test(S("abcde"), 0, 4, SV("1234567890"), 9, 2, S("0e")); - test(S("abcde"), 0, 4, SV("1234567890"), 10, 0, S("e")); - test(S("abcde"), 0, 4, SV("1234567890"), 10, 1, S("e")); - test(S("abcde"), 0, 4, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 1, S("1e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 10, S("1234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 19, S("1234567890123456789e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 20, S("12345678901234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 21, S("12345678901234567890e")); - - return true; +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcde"), 0, 2, SV("1234567890"), 0, 10, S("1234567890cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 0, 11, S("1234567890cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 1, 0, S("cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 1, 1, S("2cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 1, 4, S("2345cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 1, 8, S("23456789cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 1, 9, S("234567890cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 1, 10, S("234567890cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 5, 0, S("cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 5, 1, S("6cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 5, 2, S("67cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 5, 4, S("6789cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 5, 5, S("67890cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 5, 6, S("67890cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 9, 0, S("cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 9, 1, S("0cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 9, 2, S("0cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 10, 0, S("cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 10, 1, S("cde")); + test(S("abcde"), 0, 2, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 1, S("1cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 10, S("1234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 19, S("1234567890123456789cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 20, S("12345678901234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 0, 21, S("12345678901234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 1, S("2cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 9, S("234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 18, S("234567890123456789cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 19, S("2345678901234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 1, 20, S("2345678901234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 1, S("1cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 5, S("12345cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 9, S("123456789cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 10, S("1234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 10, 11, S("1234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 19, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 19, 1, S("0cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 19, 2, S("0cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 20, 0, S("cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 20, 1, S("cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 4, SV(""), 0, 0, S("e")); + test(S("abcde"), 0, 4, SV(""), 0, 1, S("e")); + test(S("abcde"), 0, 4, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 4, SV("12345"), 0, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345"), 0, 1, S("1e")); + test(S("abcde"), 0, 4, SV("12345"), 0, 2, S("12e")); + test(S("abcde"), 0, 4, SV("12345"), 0, 4, S("1234e")); + test(S("abcde"), 0, 4, SV("12345"), 0, 5, S("12345e")); + test(S("abcde"), 0, 4, SV("12345"), 0, 6, S("12345e")); + test(S("abcde"), 0, 4, SV("12345"), 1, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345"), 1, 1, S("2e")); + test(S("abcde"), 0, 4, SV("12345"), 1, 2, S("23e")); + test(S("abcde"), 0, 4, SV("12345"), 1, 3, S("234e")); + test(S("abcde"), 0, 4, SV("12345"), 1, 4, S("2345e")); + test(S("abcde"), 0, 4, SV("12345"), 1, 5, S("2345e")); + test(S("abcde"), 0, 4, SV("12345"), 2, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345"), 2, 1, S("3e")); + test(S("abcde"), 0, 4, SV("12345"), 2, 2, S("34e")); + test(S("abcde"), 0, 4, SV("12345"), 2, 3, S("345e")); + test(S("abcde"), 0, 4, SV("12345"), 2, 4, S("345e")); + test(S("abcde"), 0, 4, SV("12345"), 4, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345"), 4, 1, S("5e")); + test(S("abcde"), 0, 4, SV("12345"), 4, 2, S("5e")); + test(S("abcde"), 0, 4, SV("12345"), 5, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345"), 5, 1, S("e")); + test(S("abcde"), 0, 4, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 4, SV("1234567890"), 0, 0, S("e")); + test(S("abcde"), 0, 4, SV("1234567890"), 0, 1, S("1e")); + test(S("abcde"), 0, 4, SV("1234567890"), 0, 5, S("12345e")); + test(S("abcde"), 0, 4, SV("1234567890"), 0, 9, S("123456789e")); + test(S("abcde"), 0, 4, SV("1234567890"), 0, 10, S("1234567890e")); + test(S("abcde"), 0, 4, SV("1234567890"), 0, 11, S("1234567890e")); + test(S("abcde"), 0, 4, SV("1234567890"), 1, 0, S("e")); + test(S("abcde"), 0, 4, SV("1234567890"), 1, 1, S("2e")); + test(S("abcde"), 0, 4, SV("1234567890"), 1, 4, S("2345e")); + test(S("abcde"), 0, 4, SV("1234567890"), 1, 8, S("23456789e")); + test(S("abcde"), 0, 4, SV("1234567890"), 1, 9, S("234567890e")); + test(S("abcde"), 0, 4, SV("1234567890"), 1, 10, S("234567890e")); + test(S("abcde"), 0, 4, SV("1234567890"), 5, 0, S("e")); + test(S("abcde"), 0, 4, SV("1234567890"), 5, 1, S("6e")); + test(S("abcde"), 0, 4, SV("1234567890"), 5, 2, S("67e")); + test(S("abcde"), 0, 4, SV("1234567890"), 5, 4, S("6789e")); + test(S("abcde"), 0, 4, SV("1234567890"), 5, 5, S("67890e")); + test(S("abcde"), 0, 4, SV("1234567890"), 5, 6, S("67890e")); + test(S("abcde"), 0, 4, SV("1234567890"), 9, 0, S("e")); + test(S("abcde"), 0, 4, SV("1234567890"), 9, 1, S("0e")); + test(S("abcde"), 0, 4, SV("1234567890"), 9, 2, S("0e")); + test(S("abcde"), 0, 4, SV("1234567890"), 10, 0, S("e")); + test(S("abcde"), 0, 4, SV("1234567890"), 10, 1, S("e")); + test(S("abcde"), 0, 4, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 1, S("1e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 10, S("1234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 19, S("1234567890123456789e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 20, S("12345678901234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 0, 21, S("12345678901234567890e")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 1, S("2e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 9, S("234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 18, S("234567890123456789e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 19, S("2345678901234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 20, S("2345678901234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 1, S("1e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 5, S("12345e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 9, S("123456789e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 10, S("1234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 11, S("1234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 19, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 19, 1, S("0e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 19, 2, S("0e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 20, 0, S("e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 20, 1, S("e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 5, SV(""), 0, 0, S("")); - test(S("abcde"), 0, 5, SV(""), 0, 1, S("")); - test(S("abcde"), 0, 5, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 5, SV("12345"), 0, 0, S("")); - test(S("abcde"), 0, 5, SV("12345"), 0, 1, S("1")); - test(S("abcde"), 0, 5, SV("12345"), 0, 2, S("12")); - test(S("abcde"), 0, 5, SV("12345"), 0, 4, S("1234")); - test(S("abcde"), 0, 5, SV("12345"), 0, 5, S("12345")); - test(S("abcde"), 0, 5, SV("12345"), 0, 6, S("12345")); - test(S("abcde"), 0, 5, SV("12345"), 1, 0, S("")); - test(S("abcde"), 0, 5, SV("12345"), 1, 1, S("2")); - test(S("abcde"), 0, 5, SV("12345"), 1, 2, S("23")); - test(S("abcde"), 0, 5, SV("12345"), 1, 3, S("234")); - test(S("abcde"), 0, 5, SV("12345"), 1, 4, S("2345")); - test(S("abcde"), 0, 5, SV("12345"), 1, 5, S("2345")); - test(S("abcde"), 0, 5, SV("12345"), 2, 0, S("")); - test(S("abcde"), 0, 5, SV("12345"), 2, 1, S("3")); - test(S("abcde"), 0, 5, SV("12345"), 2, 2, S("34")); - test(S("abcde"), 0, 5, SV("12345"), 2, 3, S("345")); - test(S("abcde"), 0, 5, SV("12345"), 2, 4, S("345")); - test(S("abcde"), 0, 5, SV("12345"), 4, 0, S("")); - test(S("abcde"), 0, 5, SV("12345"), 4, 1, S("5")); - test(S("abcde"), 0, 5, SV("12345"), 4, 2, S("5")); - test(S("abcde"), 0, 5, SV("12345"), 5, 0, S("")); - test(S("abcde"), 0, 5, SV("12345"), 5, 1, S("")); - test(S("abcde"), 0, 5, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 5, SV("1234567890"), 0, 0, S("")); - test(S("abcde"), 0, 5, SV("1234567890"), 0, 1, S("1")); - test(S("abcde"), 0, 5, SV("1234567890"), 0, 5, S("12345")); - test(S("abcde"), 0, 5, SV("1234567890"), 0, 9, S("123456789")); - test(S("abcde"), 0, 5, SV("1234567890"), 0, 10, S("1234567890")); - test(S("abcde"), 0, 5, SV("1234567890"), 0, 11, S("1234567890")); - test(S("abcde"), 0, 5, SV("1234567890"), 1, 0, S("")); - test(S("abcde"), 0, 5, SV("1234567890"), 1, 1, S("2")); - test(S("abcde"), 0, 5, SV("1234567890"), 1, 4, S("2345")); - test(S("abcde"), 0, 5, SV("1234567890"), 1, 8, S("23456789")); - test(S("abcde"), 0, 5, SV("1234567890"), 1, 9, S("234567890")); - test(S("abcde"), 0, 5, SV("1234567890"), 1, 10, S("234567890")); - test(S("abcde"), 0, 5, SV("1234567890"), 5, 0, S("")); - test(S("abcde"), 0, 5, SV("1234567890"), 5, 1, S("6")); - test(S("abcde"), 0, 5, SV("1234567890"), 5, 2, S("67")); - test(S("abcde"), 0, 5, SV("1234567890"), 5, 4, S("6789")); - test(S("abcde"), 0, 5, SV("1234567890"), 5, 5, S("67890")); - test(S("abcde"), 0, 5, SV("1234567890"), 5, 6, S("67890")); - test(S("abcde"), 0, 5, SV("1234567890"), 9, 0, S("")); - test(S("abcde"), 0, 5, SV("1234567890"), 9, 1, S("0")); - test(S("abcde"), 0, 5, SV("1234567890"), 9, 2, S("0")); - test(S("abcde"), 0, 5, SV("1234567890"), 10, 0, S("")); - test(S("abcde"), 0, 5, SV("1234567890"), 10, 1, S("")); - test(S("abcde"), 0, 5, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 0, S("")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 1, S("1")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 0, S("")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 1, S("2")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 0, S("")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 1, S("1")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 5, S("12345")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 19, 0, S("")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 19, 1, S("0")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 19, 2, S("0")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 20, 0, S("")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 20, 1, S("")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 6, SV(""), 0, 0, S("")); - test(S("abcde"), 0, 6, SV(""), 0, 1, S("")); - test(S("abcde"), 0, 6, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 6, SV("12345"), 0, 0, S("")); - test(S("abcde"), 0, 6, SV("12345"), 0, 1, S("1")); - test(S("abcde"), 0, 6, SV("12345"), 0, 2, S("12")); - test(S("abcde"), 0, 6, SV("12345"), 0, 4, S("1234")); - test(S("abcde"), 0, 6, SV("12345"), 0, 5, S("12345")); - - return true; +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 1, S("2e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 9, S("234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 18, S("234567890123456789e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 19, S("2345678901234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 1, 20, S("2345678901234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 1, S("1e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 5, S("12345e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 9, S("123456789e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 10, S("1234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 10, 11, S("1234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 19, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 19, 1, S("0e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 19, 2, S("0e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 20, 0, S("e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 20, 1, S("e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 5, SV(""), 0, 0, S("")); + test(S("abcde"), 0, 5, SV(""), 0, 1, S("")); + test(S("abcde"), 0, 5, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 5, SV("12345"), 0, 0, S("")); + test(S("abcde"), 0, 5, SV("12345"), 0, 1, S("1")); + test(S("abcde"), 0, 5, SV("12345"), 0, 2, S("12")); + test(S("abcde"), 0, 5, SV("12345"), 0, 4, S("1234")); + test(S("abcde"), 0, 5, SV("12345"), 0, 5, S("12345")); + test(S("abcde"), 0, 5, SV("12345"), 0, 6, S("12345")); + test(S("abcde"), 0, 5, SV("12345"), 1, 0, S("")); + test(S("abcde"), 0, 5, SV("12345"), 1, 1, S("2")); + test(S("abcde"), 0, 5, SV("12345"), 1, 2, S("23")); + test(S("abcde"), 0, 5, SV("12345"), 1, 3, S("234")); + test(S("abcde"), 0, 5, SV("12345"), 1, 4, S("2345")); + test(S("abcde"), 0, 5, SV("12345"), 1, 5, S("2345")); + test(S("abcde"), 0, 5, SV("12345"), 2, 0, S("")); + test(S("abcde"), 0, 5, SV("12345"), 2, 1, S("3")); + test(S("abcde"), 0, 5, SV("12345"), 2, 2, S("34")); + test(S("abcde"), 0, 5, SV("12345"), 2, 3, S("345")); + test(S("abcde"), 0, 5, SV("12345"), 2, 4, S("345")); + test(S("abcde"), 0, 5, SV("12345"), 4, 0, S("")); + test(S("abcde"), 0, 5, SV("12345"), 4, 1, S("5")); + test(S("abcde"), 0, 5, SV("12345"), 4, 2, S("5")); + test(S("abcde"), 0, 5, SV("12345"), 5, 0, S("")); + test(S("abcde"), 0, 5, SV("12345"), 5, 1, S("")); + test(S("abcde"), 0, 5, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 5, SV("1234567890"), 0, 0, S("")); + test(S("abcde"), 0, 5, SV("1234567890"), 0, 1, S("1")); + test(S("abcde"), 0, 5, SV("1234567890"), 0, 5, S("12345")); + test(S("abcde"), 0, 5, SV("1234567890"), 0, 9, S("123456789")); + test(S("abcde"), 0, 5, SV("1234567890"), 0, 10, S("1234567890")); + test(S("abcde"), 0, 5, SV("1234567890"), 0, 11, S("1234567890")); + test(S("abcde"), 0, 5, SV("1234567890"), 1, 0, S("")); + test(S("abcde"), 0, 5, SV("1234567890"), 1, 1, S("2")); + test(S("abcde"), 0, 5, SV("1234567890"), 1, 4, S("2345")); + test(S("abcde"), 0, 5, SV("1234567890"), 1, 8, S("23456789")); + test(S("abcde"), 0, 5, SV("1234567890"), 1, 9, S("234567890")); + test(S("abcde"), 0, 5, SV("1234567890"), 1, 10, S("234567890")); + test(S("abcde"), 0, 5, SV("1234567890"), 5, 0, S("")); + test(S("abcde"), 0, 5, SV("1234567890"), 5, 1, S("6")); + test(S("abcde"), 0, 5, SV("1234567890"), 5, 2, S("67")); + test(S("abcde"), 0, 5, SV("1234567890"), 5, 4, S("6789")); + test(S("abcde"), 0, 5, SV("1234567890"), 5, 5, S("67890")); + test(S("abcde"), 0, 5, SV("1234567890"), 5, 6, S("67890")); + test(S("abcde"), 0, 5, SV("1234567890"), 9, 0, S("")); + test(S("abcde"), 0, 5, SV("1234567890"), 9, 1, S("0")); + test(S("abcde"), 0, 5, SV("1234567890"), 9, 2, S("0")); + test(S("abcde"), 0, 5, SV("1234567890"), 10, 0, S("")); + test(S("abcde"), 0, 5, SV("1234567890"), 10, 1, S("")); + test(S("abcde"), 0, 5, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 0, S("")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 1, S("1")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 0, S("")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 1, S("2")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 0, S("")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 1, S("1")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 5, S("12345")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 19, 0, S("")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 19, 1, S("0")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 19, 2, S("0")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 20, 0, S("")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 20, 1, S("")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 6, SV(""), 0, 0, S("")); + test(S("abcde"), 0, 6, SV(""), 0, 1, S("")); + test(S("abcde"), 0, 6, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 6, SV("12345"), 0, 0, S("")); + test(S("abcde"), 0, 6, SV("12345"), 0, 1, S("1")); + test(S("abcde"), 0, 6, SV("12345"), 0, 2, S("12")); + test(S("abcde"), 0, 6, SV("12345"), 0, 4, S("1234")); + test(S("abcde"), 0, 6, SV("12345"), 0, 5, S("12345")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcde"), 0, 6, SV("12345"), 0, 6, S("12345")); - test(S("abcde"), 0, 6, SV("12345"), 1, 0, S("")); - test(S("abcde"), 0, 6, SV("12345"), 1, 1, S("2")); - test(S("abcde"), 0, 6, SV("12345"), 1, 2, S("23")); - test(S("abcde"), 0, 6, SV("12345"), 1, 3, S("234")); - test(S("abcde"), 0, 6, SV("12345"), 1, 4, S("2345")); - test(S("abcde"), 0, 6, SV("12345"), 1, 5, S("2345")); - test(S("abcde"), 0, 6, SV("12345"), 2, 0, S("")); - test(S("abcde"), 0, 6, SV("12345"), 2, 1, S("3")); - test(S("abcde"), 0, 6, SV("12345"), 2, 2, S("34")); - test(S("abcde"), 0, 6, SV("12345"), 2, 3, S("345")); - test(S("abcde"), 0, 6, SV("12345"), 2, 4, S("345")); - test(S("abcde"), 0, 6, SV("12345"), 4, 0, S("")); - test(S("abcde"), 0, 6, SV("12345"), 4, 1, S("5")); - test(S("abcde"), 0, 6, SV("12345"), 4, 2, S("5")); - test(S("abcde"), 0, 6, SV("12345"), 5, 0, S("")); - test(S("abcde"), 0, 6, SV("12345"), 5, 1, S("")); - test(S("abcde"), 0, 6, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 6, SV("1234567890"), 0, 0, S("")); - test(S("abcde"), 0, 6, SV("1234567890"), 0, 1, S("1")); - test(S("abcde"), 0, 6, SV("1234567890"), 0, 5, S("12345")); - test(S("abcde"), 0, 6, SV("1234567890"), 0, 9, S("123456789")); - test(S("abcde"), 0, 6, SV("1234567890"), 0, 10, S("1234567890")); - test(S("abcde"), 0, 6, SV("1234567890"), 0, 11, S("1234567890")); - test(S("abcde"), 0, 6, SV("1234567890"), 1, 0, S("")); - test(S("abcde"), 0, 6, SV("1234567890"), 1, 1, S("2")); - test(S("abcde"), 0, 6, SV("1234567890"), 1, 4, S("2345")); - test(S("abcde"), 0, 6, SV("1234567890"), 1, 8, S("23456789")); - test(S("abcde"), 0, 6, SV("1234567890"), 1, 9, S("234567890")); - test(S("abcde"), 0, 6, SV("1234567890"), 1, 10, S("234567890")); - test(S("abcde"), 0, 6, SV("1234567890"), 5, 0, S("")); - test(S("abcde"), 0, 6, SV("1234567890"), 5, 1, S("6")); - test(S("abcde"), 0, 6, SV("1234567890"), 5, 2, S("67")); - test(S("abcde"), 0, 6, SV("1234567890"), 5, 4, S("6789")); - test(S("abcde"), 0, 6, SV("1234567890"), 5, 5, S("67890")); - test(S("abcde"), 0, 6, SV("1234567890"), 5, 6, S("67890")); - test(S("abcde"), 0, 6, SV("1234567890"), 9, 0, S("")); - test(S("abcde"), 0, 6, SV("1234567890"), 9, 1, S("0")); - test(S("abcde"), 0, 6, SV("1234567890"), 9, 2, S("0")); - test(S("abcde"), 0, 6, SV("1234567890"), 10, 0, S("")); - test(S("abcde"), 0, 6, SV("1234567890"), 10, 1, S("")); - test(S("abcde"), 0, 6, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 0, S("")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 1, S("1")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 0, S("")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 1, S("2")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 0, S("")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 1, S("1")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 5, S("12345")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 19, 0, S("")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 19, 1, S("0")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 19, 2, S("0")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 20, 0, S("")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 20, 1, S("")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 0, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 1, 0, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 1, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 0, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, 0, SV("12345"), 0, 2, S("a12bcde")); - test(S("abcde"), 1, 0, SV("12345"), 0, 4, S("a1234bcde")); - test(S("abcde"), 1, 0, SV("12345"), 0, 5, S("a12345bcde")); - test(S("abcde"), 1, 0, SV("12345"), 0, 6, S("a12345bcde")); - test(S("abcde"), 1, 0, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, 0, SV("12345"), 1, 2, S("a23bcde")); - test(S("abcde"), 1, 0, SV("12345"), 1, 3, S("a234bcde")); - test(S("abcde"), 1, 0, SV("12345"), 1, 4, S("a2345bcde")); - test(S("abcde"), 1, 0, SV("12345"), 1, 5, S("a2345bcde")); - test(S("abcde"), 1, 0, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345"), 2, 1, S("a3bcde")); - test(S("abcde"), 1, 0, SV("12345"), 2, 2, S("a34bcde")); - test(S("abcde"), 1, 0, SV("12345"), 2, 3, S("a345bcde")); - test(S("abcde"), 1, 0, SV("12345"), 2, 4, S("a345bcde")); - test(S("abcde"), 1, 0, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345"), 4, 1, S("a5bcde")); - test(S("abcde"), 1, 0, SV("12345"), 4, 2, S("a5bcde")); - test(S("abcde"), 1, 0, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 1, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 0, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 0, 5, S("a12345bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 0, 9, S("a123456789bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 0, 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 0, 11, S("a1234567890bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 1, 1, S("a2bcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcde"), 0, 6, SV("12345"), 0, 6, S("12345")); + test(S("abcde"), 0, 6, SV("12345"), 1, 0, S("")); + test(S("abcde"), 0, 6, SV("12345"), 1, 1, S("2")); + test(S("abcde"), 0, 6, SV("12345"), 1, 2, S("23")); + test(S("abcde"), 0, 6, SV("12345"), 1, 3, S("234")); + test(S("abcde"), 0, 6, SV("12345"), 1, 4, S("2345")); + test(S("abcde"), 0, 6, SV("12345"), 1, 5, S("2345")); + test(S("abcde"), 0, 6, SV("12345"), 2, 0, S("")); + test(S("abcde"), 0, 6, SV("12345"), 2, 1, S("3")); + test(S("abcde"), 0, 6, SV("12345"), 2, 2, S("34")); + test(S("abcde"), 0, 6, SV("12345"), 2, 3, S("345")); + test(S("abcde"), 0, 6, SV("12345"), 2, 4, S("345")); + test(S("abcde"), 0, 6, SV("12345"), 4, 0, S("")); + test(S("abcde"), 0, 6, SV("12345"), 4, 1, S("5")); + test(S("abcde"), 0, 6, SV("12345"), 4, 2, S("5")); + test(S("abcde"), 0, 6, SV("12345"), 5, 0, S("")); + test(S("abcde"), 0, 6, SV("12345"), 5, 1, S("")); + test(S("abcde"), 0, 6, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 6, SV("1234567890"), 0, 0, S("")); + test(S("abcde"), 0, 6, SV("1234567890"), 0, 1, S("1")); + test(S("abcde"), 0, 6, SV("1234567890"), 0, 5, S("12345")); + test(S("abcde"), 0, 6, SV("1234567890"), 0, 9, S("123456789")); + test(S("abcde"), 0, 6, SV("1234567890"), 0, 10, S("1234567890")); + test(S("abcde"), 0, 6, SV("1234567890"), 0, 11, S("1234567890")); + test(S("abcde"), 0, 6, SV("1234567890"), 1, 0, S("")); + test(S("abcde"), 0, 6, SV("1234567890"), 1, 1, S("2")); + test(S("abcde"), 0, 6, SV("1234567890"), 1, 4, S("2345")); + test(S("abcde"), 0, 6, SV("1234567890"), 1, 8, S("23456789")); + test(S("abcde"), 0, 6, SV("1234567890"), 1, 9, S("234567890")); + test(S("abcde"), 0, 6, SV("1234567890"), 1, 10, S("234567890")); + test(S("abcde"), 0, 6, SV("1234567890"), 5, 0, S("")); + test(S("abcde"), 0, 6, SV("1234567890"), 5, 1, S("6")); + test(S("abcde"), 0, 6, SV("1234567890"), 5, 2, S("67")); + test(S("abcde"), 0, 6, SV("1234567890"), 5, 4, S("6789")); + test(S("abcde"), 0, 6, SV("1234567890"), 5, 5, S("67890")); + test(S("abcde"), 0, 6, SV("1234567890"), 5, 6, S("67890")); + test(S("abcde"), 0, 6, SV("1234567890"), 9, 0, S("")); + test(S("abcde"), 0, 6, SV("1234567890"), 9, 1, S("0")); + test(S("abcde"), 0, 6, SV("1234567890"), 9, 2, S("0")); + test(S("abcde"), 0, 6, SV("1234567890"), 10, 0, S("")); + test(S("abcde"), 0, 6, SV("1234567890"), 10, 1, S("")); + test(S("abcde"), 0, 6, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 0, S("")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 1, S("1")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 0, S("")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 1, S("2")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 0, S("")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 1, S("1")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 5, S("12345")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 19, 0, S("")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 19, 1, S("0")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 19, 2, S("0")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 20, 0, S("")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 20, 1, S("")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 0, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 1, 0, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 1, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 0, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, 0, SV("12345"), 0, 2, S("a12bcde")); + test(S("abcde"), 1, 0, SV("12345"), 0, 4, S("a1234bcde")); + test(S("abcde"), 1, 0, SV("12345"), 0, 5, S("a12345bcde")); + test(S("abcde"), 1, 0, SV("12345"), 0, 6, S("a12345bcde")); + test(S("abcde"), 1, 0, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, 0, SV("12345"), 1, 2, S("a23bcde")); + test(S("abcde"), 1, 0, SV("12345"), 1, 3, S("a234bcde")); + test(S("abcde"), 1, 0, SV("12345"), 1, 4, S("a2345bcde")); + test(S("abcde"), 1, 0, SV("12345"), 1, 5, S("a2345bcde")); + test(S("abcde"), 1, 0, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345"), 2, 1, S("a3bcde")); + test(S("abcde"), 1, 0, SV("12345"), 2, 2, S("a34bcde")); + test(S("abcde"), 1, 0, SV("12345"), 2, 3, S("a345bcde")); + test(S("abcde"), 1, 0, SV("12345"), 2, 4, S("a345bcde")); + test(S("abcde"), 1, 0, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345"), 4, 1, S("a5bcde")); + test(S("abcde"), 1, 0, SV("12345"), 4, 2, S("a5bcde")); + test(S("abcde"), 1, 0, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 1, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 0, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 0, 5, S("a12345bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 0, 9, S("a123456789bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 0, 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 0, 11, S("a1234567890bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 1, 1, S("a2bcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcde"), 1, 0, SV("1234567890"), 1, 4, S("a2345bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 1, 8, S("a23456789bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 1, 9, S("a234567890bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 1, 10, S("a234567890bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 5, 1, S("a6bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 5, 2, S("a67bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 5, 4, S("a6789bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 5, 5, S("a67890bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 5, 6, S("a67890bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 9, 1, S("a0bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 9, 2, S("a0bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 1, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 9, S("a234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 1, S("a1bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 5, S("a12345bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 9, S("a123456789bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 11, S("a1234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 19, 1, S("a0bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 19, 2, S("a0bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 1, SV(""), 0, 0, S("acde")); - test(S("abcde"), 1, 1, SV(""), 0, 1, S("acde")); - test(S("abcde"), 1, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 1, SV("12345"), 0, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345"), 0, 1, S("a1cde")); - test(S("abcde"), 1, 1, SV("12345"), 0, 2, S("a12cde")); - test(S("abcde"), 1, 1, SV("12345"), 0, 4, S("a1234cde")); - test(S("abcde"), 1, 1, SV("12345"), 0, 5, S("a12345cde")); - test(S("abcde"), 1, 1, SV("12345"), 0, 6, S("a12345cde")); - test(S("abcde"), 1, 1, SV("12345"), 1, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345"), 1, 1, S("a2cde")); - test(S("abcde"), 1, 1, SV("12345"), 1, 2, S("a23cde")); - test(S("abcde"), 1, 1, SV("12345"), 1, 3, S("a234cde")); - test(S("abcde"), 1, 1, SV("12345"), 1, 4, S("a2345cde")); - test(S("abcde"), 1, 1, SV("12345"), 1, 5, S("a2345cde")); - test(S("abcde"), 1, 1, SV("12345"), 2, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345"), 2, 1, S("a3cde")); - test(S("abcde"), 1, 1, SV("12345"), 2, 2, S("a34cde")); - test(S("abcde"), 1, 1, SV("12345"), 2, 3, S("a345cde")); - test(S("abcde"), 1, 1, SV("12345"), 2, 4, S("a345cde")); - test(S("abcde"), 1, 1, SV("12345"), 4, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345"), 4, 1, S("a5cde")); - test(S("abcde"), 1, 1, SV("12345"), 4, 2, S("a5cde")); - test(S("abcde"), 1, 1, SV("12345"), 5, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345"), 5, 1, S("acde")); - test(S("abcde"), 1, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 1, SV("1234567890"), 0, 0, S("acde")); - test(S("abcde"), 1, 1, SV("1234567890"), 0, 1, S("a1cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 0, 5, S("a12345cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 0, 9, S("a123456789cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 0, 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 0, 11, S("a1234567890cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 1, 0, S("acde")); - test(S("abcde"), 1, 1, SV("1234567890"), 1, 1, S("a2cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 1, 4, S("a2345cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 1, 8, S("a23456789cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 1, 9, S("a234567890cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 1, 10, S("a234567890cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 5, 0, S("acde")); - test(S("abcde"), 1, 1, SV("1234567890"), 5, 1, S("a6cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 5, 2, S("a67cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 5, 4, S("a6789cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 5, 5, S("a67890cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 5, 6, S("a67890cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 9, 0, S("acde")); - test(S("abcde"), 1, 1, SV("1234567890"), 9, 1, S("a0cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 9, 2, S("a0cde")); - test(S("abcde"), 1, 1, SV("1234567890"), 10, 0, S("acde")); - test(S("abcde"), 1, 1, SV("1234567890"), 10, 1, S("acde")); - test(S("abcde"), 1, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 1, S("a1cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 1, S("a2cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 9, S("a234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789cde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcde"), 1, 0, SV("1234567890"), 1, 4, S("a2345bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 1, 8, S("a23456789bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 1, 9, S("a234567890bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 1, 10, S("a234567890bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 5, 1, S("a6bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 5, 2, S("a67bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 5, 4, S("a6789bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 5, 5, S("a67890bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 5, 6, S("a67890bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 9, 1, S("a0bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 9, 2, S("a0bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 1, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 9, S("a234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 1, S("a1bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 5, S("a12345bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 9, S("a123456789bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 10, 11, S("a1234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 19, 1, S("a0bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 19, 2, S("a0bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 1, SV(""), 0, 0, S("acde")); + test(S("abcde"), 1, 1, SV(""), 0, 1, S("acde")); + test(S("abcde"), 1, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 1, SV("12345"), 0, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345"), 0, 1, S("a1cde")); + test(S("abcde"), 1, 1, SV("12345"), 0, 2, S("a12cde")); + test(S("abcde"), 1, 1, SV("12345"), 0, 4, S("a1234cde")); + test(S("abcde"), 1, 1, SV("12345"), 0, 5, S("a12345cde")); + test(S("abcde"), 1, 1, SV("12345"), 0, 6, S("a12345cde")); + test(S("abcde"), 1, 1, SV("12345"), 1, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345"), 1, 1, S("a2cde")); + test(S("abcde"), 1, 1, SV("12345"), 1, 2, S("a23cde")); + test(S("abcde"), 1, 1, SV("12345"), 1, 3, S("a234cde")); + test(S("abcde"), 1, 1, SV("12345"), 1, 4, S("a2345cde")); + test(S("abcde"), 1, 1, SV("12345"), 1, 5, S("a2345cde")); + test(S("abcde"), 1, 1, SV("12345"), 2, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345"), 2, 1, S("a3cde")); + test(S("abcde"), 1, 1, SV("12345"), 2, 2, S("a34cde")); + test(S("abcde"), 1, 1, SV("12345"), 2, 3, S("a345cde")); + test(S("abcde"), 1, 1, SV("12345"), 2, 4, S("a345cde")); + test(S("abcde"), 1, 1, SV("12345"), 4, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345"), 4, 1, S("a5cde")); + test(S("abcde"), 1, 1, SV("12345"), 4, 2, S("a5cde")); + test(S("abcde"), 1, 1, SV("12345"), 5, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345"), 5, 1, S("acde")); + test(S("abcde"), 1, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 1, SV("1234567890"), 0, 0, S("acde")); + test(S("abcde"), 1, 1, SV("1234567890"), 0, 1, S("a1cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 0, 5, S("a12345cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 0, 9, S("a123456789cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 0, 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 0, 11, S("a1234567890cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 1, 0, S("acde")); + test(S("abcde"), 1, 1, SV("1234567890"), 1, 1, S("a2cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 1, 4, S("a2345cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 1, 8, S("a23456789cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 1, 9, S("a234567890cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 1, 10, S("a234567890cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 5, 0, S("acde")); + test(S("abcde"), 1, 1, SV("1234567890"), 5, 1, S("a6cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 5, 2, S("a67cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 5, 4, S("a6789cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 5, 5, S("a67890cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 5, 6, S("a67890cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 9, 0, S("acde")); + test(S("abcde"), 1, 1, SV("1234567890"), 9, 1, S("a0cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 9, 2, S("a0cde")); + test(S("abcde"), 1, 1, SV("1234567890"), 10, 0, S("acde")); + test(S("abcde"), 1, 1, SV("1234567890"), 10, 1, S("acde")); + test(S("abcde"), 1, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 1, S("a1cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 1, S("a2cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 9, S("a234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789cde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 1, S("a1cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 5, S("a12345cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 9, S("a123456789cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 11, S("a1234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 19, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 19, 1, S("a0cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 19, 2, S("a0cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 20, 0, S("acde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 20, 1, S("acde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 2, SV(""), 0, 0, S("ade")); - test(S("abcde"), 1, 2, SV(""), 0, 1, S("ade")); - test(S("abcde"), 1, 2, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 2, SV("12345"), 0, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345"), 0, 1, S("a1de")); - test(S("abcde"), 1, 2, SV("12345"), 0, 2, S("a12de")); - test(S("abcde"), 1, 2, SV("12345"), 0, 4, S("a1234de")); - test(S("abcde"), 1, 2, SV("12345"), 0, 5, S("a12345de")); - test(S("abcde"), 1, 2, SV("12345"), 0, 6, S("a12345de")); - test(S("abcde"), 1, 2, SV("12345"), 1, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345"), 1, 1, S("a2de")); - test(S("abcde"), 1, 2, SV("12345"), 1, 2, S("a23de")); - test(S("abcde"), 1, 2, SV("12345"), 1, 3, S("a234de")); - test(S("abcde"), 1, 2, SV("12345"), 1, 4, S("a2345de")); - test(S("abcde"), 1, 2, SV("12345"), 1, 5, S("a2345de")); - test(S("abcde"), 1, 2, SV("12345"), 2, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345"), 2, 1, S("a3de")); - test(S("abcde"), 1, 2, SV("12345"), 2, 2, S("a34de")); - test(S("abcde"), 1, 2, SV("12345"), 2, 3, S("a345de")); - test(S("abcde"), 1, 2, SV("12345"), 2, 4, S("a345de")); - test(S("abcde"), 1, 2, SV("12345"), 4, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345"), 4, 1, S("a5de")); - test(S("abcde"), 1, 2, SV("12345"), 4, 2, S("a5de")); - test(S("abcde"), 1, 2, SV("12345"), 5, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345"), 5, 1, S("ade")); - test(S("abcde"), 1, 2, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 2, SV("1234567890"), 0, 0, S("ade")); - test(S("abcde"), 1, 2, SV("1234567890"), 0, 1, S("a1de")); - test(S("abcde"), 1, 2, SV("1234567890"), 0, 5, S("a12345de")); - test(S("abcde"), 1, 2, SV("1234567890"), 0, 9, S("a123456789de")); - test(S("abcde"), 1, 2, SV("1234567890"), 0, 10, S("a1234567890de")); - test(S("abcde"), 1, 2, SV("1234567890"), 0, 11, S("a1234567890de")); - test(S("abcde"), 1, 2, SV("1234567890"), 1, 0, S("ade")); - test(S("abcde"), 1, 2, SV("1234567890"), 1, 1, S("a2de")); - test(S("abcde"), 1, 2, SV("1234567890"), 1, 4, S("a2345de")); - test(S("abcde"), 1, 2, SV("1234567890"), 1, 8, S("a23456789de")); - test(S("abcde"), 1, 2, SV("1234567890"), 1, 9, S("a234567890de")); - test(S("abcde"), 1, 2, SV("1234567890"), 1, 10, S("a234567890de")); - test(S("abcde"), 1, 2, SV("1234567890"), 5, 0, S("ade")); - test(S("abcde"), 1, 2, SV("1234567890"), 5, 1, S("a6de")); - test(S("abcde"), 1, 2, SV("1234567890"), 5, 2, S("a67de")); - test(S("abcde"), 1, 2, SV("1234567890"), 5, 4, S("a6789de")); - test(S("abcde"), 1, 2, SV("1234567890"), 5, 5, S("a67890de")); - test(S("abcde"), 1, 2, SV("1234567890"), 5, 6, S("a67890de")); - test(S("abcde"), 1, 2, SV("1234567890"), 9, 0, S("ade")); - test(S("abcde"), 1, 2, SV("1234567890"), 9, 1, S("a0de")); - test(S("abcde"), 1, 2, SV("1234567890"), 9, 2, S("a0de")); - test(S("abcde"), 1, 2, SV("1234567890"), 10, 0, S("ade")); - test(S("abcde"), 1, 2, SV("1234567890"), 10, 1, S("ade")); - test(S("abcde"), 1, 2, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 1, S("a1de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 10, S("a1234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 19, S("a1234567890123456789de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 20, S("a12345678901234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 21, S("a12345678901234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 1, S("a2de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 9, S("a234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 18, S("a234567890123456789de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 19, S("a2345678901234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 20, S("a2345678901234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 1, S("a1de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 5, S("a12345de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 9, S("a123456789de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 10, S("a1234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 11, S("a1234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 19, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 19, 1, S("a0de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 19, 2, S("a0de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 20, 0, S("ade")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 20, 1, S("ade")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 3, SV(""), 0, 0, S("ae")); - test(S("abcde"), 1, 3, SV(""), 0, 1, S("ae")); - test(S("abcde"), 1, 3, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 3, SV("12345"), 0, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345"), 0, 1, S("a1e")); - test(S("abcde"), 1, 3, SV("12345"), 0, 2, S("a12e")); - test(S("abcde"), 1, 3, SV("12345"), 0, 4, S("a1234e")); - test(S("abcde"), 1, 3, SV("12345"), 0, 5, S("a12345e")); - test(S("abcde"), 1, 3, SV("12345"), 0, 6, S("a12345e")); - test(S("abcde"), 1, 3, SV("12345"), 1, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345"), 1, 1, S("a2e")); - test(S("abcde"), 1, 3, SV("12345"), 1, 2, S("a23e")); - - return true; +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 1, S("a1cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 5, S("a12345cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 9, S("a123456789cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 10, 11, S("a1234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 19, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 19, 1, S("a0cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 19, 2, S("a0cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 20, 0, S("acde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 20, 1, S("acde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 2, SV(""), 0, 0, S("ade")); + test(S("abcde"), 1, 2, SV(""), 0, 1, S("ade")); + test(S("abcde"), 1, 2, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 2, SV("12345"), 0, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345"), 0, 1, S("a1de")); + test(S("abcde"), 1, 2, SV("12345"), 0, 2, S("a12de")); + test(S("abcde"), 1, 2, SV("12345"), 0, 4, S("a1234de")); + test(S("abcde"), 1, 2, SV("12345"), 0, 5, S("a12345de")); + test(S("abcde"), 1, 2, SV("12345"), 0, 6, S("a12345de")); + test(S("abcde"), 1, 2, SV("12345"), 1, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345"), 1, 1, S("a2de")); + test(S("abcde"), 1, 2, SV("12345"), 1, 2, S("a23de")); + test(S("abcde"), 1, 2, SV("12345"), 1, 3, S("a234de")); + test(S("abcde"), 1, 2, SV("12345"), 1, 4, S("a2345de")); + test(S("abcde"), 1, 2, SV("12345"), 1, 5, S("a2345de")); + test(S("abcde"), 1, 2, SV("12345"), 2, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345"), 2, 1, S("a3de")); + test(S("abcde"), 1, 2, SV("12345"), 2, 2, S("a34de")); + test(S("abcde"), 1, 2, SV("12345"), 2, 3, S("a345de")); + test(S("abcde"), 1, 2, SV("12345"), 2, 4, S("a345de")); + test(S("abcde"), 1, 2, SV("12345"), 4, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345"), 4, 1, S("a5de")); + test(S("abcde"), 1, 2, SV("12345"), 4, 2, S("a5de")); + test(S("abcde"), 1, 2, SV("12345"), 5, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345"), 5, 1, S("ade")); + test(S("abcde"), 1, 2, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 2, SV("1234567890"), 0, 0, S("ade")); + test(S("abcde"), 1, 2, SV("1234567890"), 0, 1, S("a1de")); + test(S("abcde"), 1, 2, SV("1234567890"), 0, 5, S("a12345de")); + test(S("abcde"), 1, 2, SV("1234567890"), 0, 9, S("a123456789de")); + test(S("abcde"), 1, 2, SV("1234567890"), 0, 10, S("a1234567890de")); + test(S("abcde"), 1, 2, SV("1234567890"), 0, 11, S("a1234567890de")); + test(S("abcde"), 1, 2, SV("1234567890"), 1, 0, S("ade")); + test(S("abcde"), 1, 2, SV("1234567890"), 1, 1, S("a2de")); + test(S("abcde"), 1, 2, SV("1234567890"), 1, 4, S("a2345de")); + test(S("abcde"), 1, 2, SV("1234567890"), 1, 8, S("a23456789de")); + test(S("abcde"), 1, 2, SV("1234567890"), 1, 9, S("a234567890de")); + test(S("abcde"), 1, 2, SV("1234567890"), 1, 10, S("a234567890de")); + test(S("abcde"), 1, 2, SV("1234567890"), 5, 0, S("ade")); + test(S("abcde"), 1, 2, SV("1234567890"), 5, 1, S("a6de")); + test(S("abcde"), 1, 2, SV("1234567890"), 5, 2, S("a67de")); + test(S("abcde"), 1, 2, SV("1234567890"), 5, 4, S("a6789de")); + test(S("abcde"), 1, 2, SV("1234567890"), 5, 5, S("a67890de")); + test(S("abcde"), 1, 2, SV("1234567890"), 5, 6, S("a67890de")); + test(S("abcde"), 1, 2, SV("1234567890"), 9, 0, S("ade")); + test(S("abcde"), 1, 2, SV("1234567890"), 9, 1, S("a0de")); + test(S("abcde"), 1, 2, SV("1234567890"), 9, 2, S("a0de")); + test(S("abcde"), 1, 2, SV("1234567890"), 10, 0, S("ade")); + test(S("abcde"), 1, 2, SV("1234567890"), 10, 1, S("ade")); + test(S("abcde"), 1, 2, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 1, S("a1de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 10, S("a1234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 19, S("a1234567890123456789de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 20, S("a12345678901234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 0, 21, S("a12345678901234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 1, S("a2de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 9, S("a234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 18, S("a234567890123456789de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 19, S("a2345678901234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 1, 20, S("a2345678901234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 1, S("a1de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 5, S("a12345de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 9, S("a123456789de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 10, S("a1234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 10, 11, S("a1234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 19, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 19, 1, S("a0de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 19, 2, S("a0de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 20, 0, S("ade")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 20, 1, S("ade")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 3, SV(""), 0, 0, S("ae")); + test(S("abcde"), 1, 3, SV(""), 0, 1, S("ae")); + test(S("abcde"), 1, 3, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 3, SV("12345"), 0, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345"), 0, 1, S("a1e")); + test(S("abcde"), 1, 3, SV("12345"), 0, 2, S("a12e")); + test(S("abcde"), 1, 3, SV("12345"), 0, 4, S("a1234e")); + test(S("abcde"), 1, 3, SV("12345"), 0, 5, S("a12345e")); + test(S("abcde"), 1, 3, SV("12345"), 0, 6, S("a12345e")); + test(S("abcde"), 1, 3, SV("12345"), 1, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345"), 1, 1, S("a2e")); + test(S("abcde"), 1, 3, SV("12345"), 1, 2, S("a23e")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test9() -{ - test(S("abcde"), 1, 3, SV("12345"), 1, 3, S("a234e")); - test(S("abcde"), 1, 3, SV("12345"), 1, 4, S("a2345e")); - test(S("abcde"), 1, 3, SV("12345"), 1, 5, S("a2345e")); - test(S("abcde"), 1, 3, SV("12345"), 2, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345"), 2, 1, S("a3e")); - test(S("abcde"), 1, 3, SV("12345"), 2, 2, S("a34e")); - test(S("abcde"), 1, 3, SV("12345"), 2, 3, S("a345e")); - test(S("abcde"), 1, 3, SV("12345"), 2, 4, S("a345e")); - test(S("abcde"), 1, 3, SV("12345"), 4, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345"), 4, 1, S("a5e")); - test(S("abcde"), 1, 3, SV("12345"), 4, 2, S("a5e")); - test(S("abcde"), 1, 3, SV("12345"), 5, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345"), 5, 1, S("ae")); - test(S("abcde"), 1, 3, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 3, SV("1234567890"), 0, 0, S("ae")); - test(S("abcde"), 1, 3, SV("1234567890"), 0, 1, S("a1e")); - test(S("abcde"), 1, 3, SV("1234567890"), 0, 5, S("a12345e")); - test(S("abcde"), 1, 3, SV("1234567890"), 0, 9, S("a123456789e")); - test(S("abcde"), 1, 3, SV("1234567890"), 0, 10, S("a1234567890e")); - test(S("abcde"), 1, 3, SV("1234567890"), 0, 11, S("a1234567890e")); - test(S("abcde"), 1, 3, SV("1234567890"), 1, 0, S("ae")); - test(S("abcde"), 1, 3, SV("1234567890"), 1, 1, S("a2e")); - test(S("abcde"), 1, 3, SV("1234567890"), 1, 4, S("a2345e")); - test(S("abcde"), 1, 3, SV("1234567890"), 1, 8, S("a23456789e")); - test(S("abcde"), 1, 3, SV("1234567890"), 1, 9, S("a234567890e")); - test(S("abcde"), 1, 3, SV("1234567890"), 1, 10, S("a234567890e")); - test(S("abcde"), 1, 3, SV("1234567890"), 5, 0, S("ae")); - test(S("abcde"), 1, 3, SV("1234567890"), 5, 1, S("a6e")); - test(S("abcde"), 1, 3, SV("1234567890"), 5, 2, S("a67e")); - test(S("abcde"), 1, 3, SV("1234567890"), 5, 4, S("a6789e")); - test(S("abcde"), 1, 3, SV("1234567890"), 5, 5, S("a67890e")); - test(S("abcde"), 1, 3, SV("1234567890"), 5, 6, S("a67890e")); - test(S("abcde"), 1, 3, SV("1234567890"), 9, 0, S("ae")); - test(S("abcde"), 1, 3, SV("1234567890"), 9, 1, S("a0e")); - test(S("abcde"), 1, 3, SV("1234567890"), 9, 2, S("a0e")); - test(S("abcde"), 1, 3, SV("1234567890"), 10, 0, S("ae")); - test(S("abcde"), 1, 3, SV("1234567890"), 10, 1, S("ae")); - test(S("abcde"), 1, 3, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 1, S("a1e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 10, S("a1234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 19, S("a1234567890123456789e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 20, S("a12345678901234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 21, S("a12345678901234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 1, S("a2e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 9, S("a234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 18, S("a234567890123456789e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 19, S("a2345678901234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 20, S("a2345678901234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 1, S("a1e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 5, S("a12345e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 9, S("a123456789e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 10, S("a1234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 11, S("a1234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 19, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 19, 1, S("a0e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 19, 2, S("a0e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 20, 0, S("ae")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 20, 1, S("ae")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 4, SV(""), 0, 0, S("a")); - test(S("abcde"), 1, 4, SV(""), 0, 1, S("a")); - test(S("abcde"), 1, 4, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 4, SV("12345"), 0, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345"), 0, 1, S("a1")); - test(S("abcde"), 1, 4, SV("12345"), 0, 2, S("a12")); - test(S("abcde"), 1, 4, SV("12345"), 0, 4, S("a1234")); - test(S("abcde"), 1, 4, SV("12345"), 0, 5, S("a12345")); - test(S("abcde"), 1, 4, SV("12345"), 0, 6, S("a12345")); - test(S("abcde"), 1, 4, SV("12345"), 1, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345"), 1, 1, S("a2")); - test(S("abcde"), 1, 4, SV("12345"), 1, 2, S("a23")); - test(S("abcde"), 1, 4, SV("12345"), 1, 3, S("a234")); - test(S("abcde"), 1, 4, SV("12345"), 1, 4, S("a2345")); - test(S("abcde"), 1, 4, SV("12345"), 1, 5, S("a2345")); - test(S("abcde"), 1, 4, SV("12345"), 2, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345"), 2, 1, S("a3")); - test(S("abcde"), 1, 4, SV("12345"), 2, 2, S("a34")); - test(S("abcde"), 1, 4, SV("12345"), 2, 3, S("a345")); - test(S("abcde"), 1, 4, SV("12345"), 2, 4, S("a345")); - test(S("abcde"), 1, 4, SV("12345"), 4, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345"), 4, 1, S("a5")); - test(S("abcde"), 1, 4, SV("12345"), 4, 2, S("a5")); - test(S("abcde"), 1, 4, SV("12345"), 5, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345"), 5, 1, S("a")); - test(S("abcde"), 1, 4, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 4, SV("1234567890"), 0, 0, S("a")); - test(S("abcde"), 1, 4, SV("1234567890"), 0, 1, S("a1")); - test(S("abcde"), 1, 4, SV("1234567890"), 0, 5, S("a12345")); - test(S("abcde"), 1, 4, SV("1234567890"), 0, 9, S("a123456789")); - test(S("abcde"), 1, 4, SV("1234567890"), 0, 10, S("a1234567890")); - test(S("abcde"), 1, 4, SV("1234567890"), 0, 11, S("a1234567890")); - test(S("abcde"), 1, 4, SV("1234567890"), 1, 0, S("a")); - test(S("abcde"), 1, 4, SV("1234567890"), 1, 1, S("a2")); - test(S("abcde"), 1, 4, SV("1234567890"), 1, 4, S("a2345")); - test(S("abcde"), 1, 4, SV("1234567890"), 1, 8, S("a23456789")); - test(S("abcde"), 1, 4, SV("1234567890"), 1, 9, S("a234567890")); - test(S("abcde"), 1, 4, SV("1234567890"), 1, 10, S("a234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test9() { + test(S("abcde"), 1, 3, SV("12345"), 1, 3, S("a234e")); + test(S("abcde"), 1, 3, SV("12345"), 1, 4, S("a2345e")); + test(S("abcde"), 1, 3, SV("12345"), 1, 5, S("a2345e")); + test(S("abcde"), 1, 3, SV("12345"), 2, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345"), 2, 1, S("a3e")); + test(S("abcde"), 1, 3, SV("12345"), 2, 2, S("a34e")); + test(S("abcde"), 1, 3, SV("12345"), 2, 3, S("a345e")); + test(S("abcde"), 1, 3, SV("12345"), 2, 4, S("a345e")); + test(S("abcde"), 1, 3, SV("12345"), 4, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345"), 4, 1, S("a5e")); + test(S("abcde"), 1, 3, SV("12345"), 4, 2, S("a5e")); + test(S("abcde"), 1, 3, SV("12345"), 5, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345"), 5, 1, S("ae")); + test(S("abcde"), 1, 3, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 3, SV("1234567890"), 0, 0, S("ae")); + test(S("abcde"), 1, 3, SV("1234567890"), 0, 1, S("a1e")); + test(S("abcde"), 1, 3, SV("1234567890"), 0, 5, S("a12345e")); + test(S("abcde"), 1, 3, SV("1234567890"), 0, 9, S("a123456789e")); + test(S("abcde"), 1, 3, SV("1234567890"), 0, 10, S("a1234567890e")); + test(S("abcde"), 1, 3, SV("1234567890"), 0, 11, S("a1234567890e")); + test(S("abcde"), 1, 3, SV("1234567890"), 1, 0, S("ae")); + test(S("abcde"), 1, 3, SV("1234567890"), 1, 1, S("a2e")); + test(S("abcde"), 1, 3, SV("1234567890"), 1, 4, S("a2345e")); + test(S("abcde"), 1, 3, SV("1234567890"), 1, 8, S("a23456789e")); + test(S("abcde"), 1, 3, SV("1234567890"), 1, 9, S("a234567890e")); + test(S("abcde"), 1, 3, SV("1234567890"), 1, 10, S("a234567890e")); + test(S("abcde"), 1, 3, SV("1234567890"), 5, 0, S("ae")); + test(S("abcde"), 1, 3, SV("1234567890"), 5, 1, S("a6e")); + test(S("abcde"), 1, 3, SV("1234567890"), 5, 2, S("a67e")); + test(S("abcde"), 1, 3, SV("1234567890"), 5, 4, S("a6789e")); + test(S("abcde"), 1, 3, SV("1234567890"), 5, 5, S("a67890e")); + test(S("abcde"), 1, 3, SV("1234567890"), 5, 6, S("a67890e")); + test(S("abcde"), 1, 3, SV("1234567890"), 9, 0, S("ae")); + test(S("abcde"), 1, 3, SV("1234567890"), 9, 1, S("a0e")); + test(S("abcde"), 1, 3, SV("1234567890"), 9, 2, S("a0e")); + test(S("abcde"), 1, 3, SV("1234567890"), 10, 0, S("ae")); + test(S("abcde"), 1, 3, SV("1234567890"), 10, 1, S("ae")); + test(S("abcde"), 1, 3, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 1, S("a1e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 10, S("a1234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 19, S("a1234567890123456789e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 20, S("a12345678901234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 0, 21, S("a12345678901234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 1, S("a2e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 9, S("a234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 18, S("a234567890123456789e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 19, S("a2345678901234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 1, 20, S("a2345678901234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 1, S("a1e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 5, S("a12345e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 9, S("a123456789e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 10, S("a1234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 10, 11, S("a1234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 19, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 19, 1, S("a0e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 19, 2, S("a0e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 20, 0, S("ae")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 20, 1, S("ae")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 4, SV(""), 0, 0, S("a")); + test(S("abcde"), 1, 4, SV(""), 0, 1, S("a")); + test(S("abcde"), 1, 4, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 4, SV("12345"), 0, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345"), 0, 1, S("a1")); + test(S("abcde"), 1, 4, SV("12345"), 0, 2, S("a12")); + test(S("abcde"), 1, 4, SV("12345"), 0, 4, S("a1234")); + test(S("abcde"), 1, 4, SV("12345"), 0, 5, S("a12345")); + test(S("abcde"), 1, 4, SV("12345"), 0, 6, S("a12345")); + test(S("abcde"), 1, 4, SV("12345"), 1, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345"), 1, 1, S("a2")); + test(S("abcde"), 1, 4, SV("12345"), 1, 2, S("a23")); + test(S("abcde"), 1, 4, SV("12345"), 1, 3, S("a234")); + test(S("abcde"), 1, 4, SV("12345"), 1, 4, S("a2345")); + test(S("abcde"), 1, 4, SV("12345"), 1, 5, S("a2345")); + test(S("abcde"), 1, 4, SV("12345"), 2, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345"), 2, 1, S("a3")); + test(S("abcde"), 1, 4, SV("12345"), 2, 2, S("a34")); + test(S("abcde"), 1, 4, SV("12345"), 2, 3, S("a345")); + test(S("abcde"), 1, 4, SV("12345"), 2, 4, S("a345")); + test(S("abcde"), 1, 4, SV("12345"), 4, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345"), 4, 1, S("a5")); + test(S("abcde"), 1, 4, SV("12345"), 4, 2, S("a5")); + test(S("abcde"), 1, 4, SV("12345"), 5, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345"), 5, 1, S("a")); + test(S("abcde"), 1, 4, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 4, SV("1234567890"), 0, 0, S("a")); + test(S("abcde"), 1, 4, SV("1234567890"), 0, 1, S("a1")); + test(S("abcde"), 1, 4, SV("1234567890"), 0, 5, S("a12345")); + test(S("abcde"), 1, 4, SV("1234567890"), 0, 9, S("a123456789")); + test(S("abcde"), 1, 4, SV("1234567890"), 0, 10, S("a1234567890")); + test(S("abcde"), 1, 4, SV("1234567890"), 0, 11, S("a1234567890")); + test(S("abcde"), 1, 4, SV("1234567890"), 1, 0, S("a")); + test(S("abcde"), 1, 4, SV("1234567890"), 1, 1, S("a2")); + test(S("abcde"), 1, 4, SV("1234567890"), 1, 4, S("a2345")); + test(S("abcde"), 1, 4, SV("1234567890"), 1, 8, S("a23456789")); + test(S("abcde"), 1, 4, SV("1234567890"), 1, 9, S("a234567890")); + test(S("abcde"), 1, 4, SV("1234567890"), 1, 10, S("a234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test10() -{ - test(S("abcde"), 1, 4, SV("1234567890"), 5, 0, S("a")); - test(S("abcde"), 1, 4, SV("1234567890"), 5, 1, S("a6")); - test(S("abcde"), 1, 4, SV("1234567890"), 5, 2, S("a67")); - test(S("abcde"), 1, 4, SV("1234567890"), 5, 4, S("a6789")); - test(S("abcde"), 1, 4, SV("1234567890"), 5, 5, S("a67890")); - test(S("abcde"), 1, 4, SV("1234567890"), 5, 6, S("a67890")); - test(S("abcde"), 1, 4, SV("1234567890"), 9, 0, S("a")); - test(S("abcde"), 1, 4, SV("1234567890"), 9, 1, S("a0")); - test(S("abcde"), 1, 4, SV("1234567890"), 9, 2, S("a0")); - test(S("abcde"), 1, 4, SV("1234567890"), 10, 0, S("a")); - test(S("abcde"), 1, 4, SV("1234567890"), 10, 1, S("a")); - test(S("abcde"), 1, 4, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 1, S("a1")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 1, S("a2")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 1, S("a1")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 19, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 19, 1, S("a0")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 19, 2, S("a0")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 20, 0, S("a")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 20, 1, S("a")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 5, SV(""), 0, 0, S("a")); - test(S("abcde"), 1, 5, SV(""), 0, 1, S("a")); - test(S("abcde"), 1, 5, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 5, SV("12345"), 0, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345"), 0, 1, S("a1")); - test(S("abcde"), 1, 5, SV("12345"), 0, 2, S("a12")); - test(S("abcde"), 1, 5, SV("12345"), 0, 4, S("a1234")); - test(S("abcde"), 1, 5, SV("12345"), 0, 5, S("a12345")); - test(S("abcde"), 1, 5, SV("12345"), 0, 6, S("a12345")); - test(S("abcde"), 1, 5, SV("12345"), 1, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345"), 1, 1, S("a2")); - test(S("abcde"), 1, 5, SV("12345"), 1, 2, S("a23")); - test(S("abcde"), 1, 5, SV("12345"), 1, 3, S("a234")); - test(S("abcde"), 1, 5, SV("12345"), 1, 4, S("a2345")); - test(S("abcde"), 1, 5, SV("12345"), 1, 5, S("a2345")); - test(S("abcde"), 1, 5, SV("12345"), 2, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345"), 2, 1, S("a3")); - test(S("abcde"), 1, 5, SV("12345"), 2, 2, S("a34")); - test(S("abcde"), 1, 5, SV("12345"), 2, 3, S("a345")); - test(S("abcde"), 1, 5, SV("12345"), 2, 4, S("a345")); - test(S("abcde"), 1, 5, SV("12345"), 4, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345"), 4, 1, S("a5")); - test(S("abcde"), 1, 5, SV("12345"), 4, 2, S("a5")); - test(S("abcde"), 1, 5, SV("12345"), 5, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345"), 5, 1, S("a")); - test(S("abcde"), 1, 5, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 5, SV("1234567890"), 0, 0, S("a")); - test(S("abcde"), 1, 5, SV("1234567890"), 0, 1, S("a1")); - test(S("abcde"), 1, 5, SV("1234567890"), 0, 5, S("a12345")); - test(S("abcde"), 1, 5, SV("1234567890"), 0, 9, S("a123456789")); - test(S("abcde"), 1, 5, SV("1234567890"), 0, 10, S("a1234567890")); - test(S("abcde"), 1, 5, SV("1234567890"), 0, 11, S("a1234567890")); - test(S("abcde"), 1, 5, SV("1234567890"), 1, 0, S("a")); - test(S("abcde"), 1, 5, SV("1234567890"), 1, 1, S("a2")); - test(S("abcde"), 1, 5, SV("1234567890"), 1, 4, S("a2345")); - test(S("abcde"), 1, 5, SV("1234567890"), 1, 8, S("a23456789")); - test(S("abcde"), 1, 5, SV("1234567890"), 1, 9, S("a234567890")); - test(S("abcde"), 1, 5, SV("1234567890"), 1, 10, S("a234567890")); - test(S("abcde"), 1, 5, SV("1234567890"), 5, 0, S("a")); - test(S("abcde"), 1, 5, SV("1234567890"), 5, 1, S("a6")); - test(S("abcde"), 1, 5, SV("1234567890"), 5, 2, S("a67")); - test(S("abcde"), 1, 5, SV("1234567890"), 5, 4, S("a6789")); - test(S("abcde"), 1, 5, SV("1234567890"), 5, 5, S("a67890")); - test(S("abcde"), 1, 5, SV("1234567890"), 5, 6, S("a67890")); - test(S("abcde"), 1, 5, SV("1234567890"), 9, 0, S("a")); - test(S("abcde"), 1, 5, SV("1234567890"), 9, 1, S("a0")); - test(S("abcde"), 1, 5, SV("1234567890"), 9, 2, S("a0")); - test(S("abcde"), 1, 5, SV("1234567890"), 10, 0, S("a")); - test(S("abcde"), 1, 5, SV("1234567890"), 10, 1, S("a")); - test(S("abcde"), 1, 5, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 1, S("a1")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 1, S("a2")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 1, S("a1")); - - return true; +TEST_CONSTEXPR_CXX20 bool test10() { + test(S("abcde"), 1, 4, SV("1234567890"), 5, 0, S("a")); + test(S("abcde"), 1, 4, SV("1234567890"), 5, 1, S("a6")); + test(S("abcde"), 1, 4, SV("1234567890"), 5, 2, S("a67")); + test(S("abcde"), 1, 4, SV("1234567890"), 5, 4, S("a6789")); + test(S("abcde"), 1, 4, SV("1234567890"), 5, 5, S("a67890")); + test(S("abcde"), 1, 4, SV("1234567890"), 5, 6, S("a67890")); + test(S("abcde"), 1, 4, SV("1234567890"), 9, 0, S("a")); + test(S("abcde"), 1, 4, SV("1234567890"), 9, 1, S("a0")); + test(S("abcde"), 1, 4, SV("1234567890"), 9, 2, S("a0")); + test(S("abcde"), 1, 4, SV("1234567890"), 10, 0, S("a")); + test(S("abcde"), 1, 4, SV("1234567890"), 10, 1, S("a")); + test(S("abcde"), 1, 4, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 1, S("a1")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 1, S("a2")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 1, S("a1")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 19, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 19, 1, S("a0")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 19, 2, S("a0")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 20, 0, S("a")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 20, 1, S("a")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 5, SV(""), 0, 0, S("a")); + test(S("abcde"), 1, 5, SV(""), 0, 1, S("a")); + test(S("abcde"), 1, 5, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 5, SV("12345"), 0, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345"), 0, 1, S("a1")); + test(S("abcde"), 1, 5, SV("12345"), 0, 2, S("a12")); + test(S("abcde"), 1, 5, SV("12345"), 0, 4, S("a1234")); + test(S("abcde"), 1, 5, SV("12345"), 0, 5, S("a12345")); + test(S("abcde"), 1, 5, SV("12345"), 0, 6, S("a12345")); + test(S("abcde"), 1, 5, SV("12345"), 1, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345"), 1, 1, S("a2")); + test(S("abcde"), 1, 5, SV("12345"), 1, 2, S("a23")); + test(S("abcde"), 1, 5, SV("12345"), 1, 3, S("a234")); + test(S("abcde"), 1, 5, SV("12345"), 1, 4, S("a2345")); + test(S("abcde"), 1, 5, SV("12345"), 1, 5, S("a2345")); + test(S("abcde"), 1, 5, SV("12345"), 2, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345"), 2, 1, S("a3")); + test(S("abcde"), 1, 5, SV("12345"), 2, 2, S("a34")); + test(S("abcde"), 1, 5, SV("12345"), 2, 3, S("a345")); + test(S("abcde"), 1, 5, SV("12345"), 2, 4, S("a345")); + test(S("abcde"), 1, 5, SV("12345"), 4, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345"), 4, 1, S("a5")); + test(S("abcde"), 1, 5, SV("12345"), 4, 2, S("a5")); + test(S("abcde"), 1, 5, SV("12345"), 5, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345"), 5, 1, S("a")); + test(S("abcde"), 1, 5, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 5, SV("1234567890"), 0, 0, S("a")); + test(S("abcde"), 1, 5, SV("1234567890"), 0, 1, S("a1")); + test(S("abcde"), 1, 5, SV("1234567890"), 0, 5, S("a12345")); + test(S("abcde"), 1, 5, SV("1234567890"), 0, 9, S("a123456789")); + test(S("abcde"), 1, 5, SV("1234567890"), 0, 10, S("a1234567890")); + test(S("abcde"), 1, 5, SV("1234567890"), 0, 11, S("a1234567890")); + test(S("abcde"), 1, 5, SV("1234567890"), 1, 0, S("a")); + test(S("abcde"), 1, 5, SV("1234567890"), 1, 1, S("a2")); + test(S("abcde"), 1, 5, SV("1234567890"), 1, 4, S("a2345")); + test(S("abcde"), 1, 5, SV("1234567890"), 1, 8, S("a23456789")); + test(S("abcde"), 1, 5, SV("1234567890"), 1, 9, S("a234567890")); + test(S("abcde"), 1, 5, SV("1234567890"), 1, 10, S("a234567890")); + test(S("abcde"), 1, 5, SV("1234567890"), 5, 0, S("a")); + test(S("abcde"), 1, 5, SV("1234567890"), 5, 1, S("a6")); + test(S("abcde"), 1, 5, SV("1234567890"), 5, 2, S("a67")); + test(S("abcde"), 1, 5, SV("1234567890"), 5, 4, S("a6789")); + test(S("abcde"), 1, 5, SV("1234567890"), 5, 5, S("a67890")); + test(S("abcde"), 1, 5, SV("1234567890"), 5, 6, S("a67890")); + test(S("abcde"), 1, 5, SV("1234567890"), 9, 0, S("a")); + test(S("abcde"), 1, 5, SV("1234567890"), 9, 1, S("a0")); + test(S("abcde"), 1, 5, SV("1234567890"), 9, 2, S("a0")); + test(S("abcde"), 1, 5, SV("1234567890"), 10, 0, S("a")); + test(S("abcde"), 1, 5, SV("1234567890"), 10, 1, S("a")); + test(S("abcde"), 1, 5, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 1, S("a1")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 1, S("a2")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 1, S("a1")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test11() -{ - test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 19, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 19, 1, S("a0")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 19, 2, S("a0")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 20, 0, S("a")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 20, 1, S("a")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 0, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 2, 0, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 2, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 0, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, 0, SV("12345"), 0, 2, S("ab12cde")); - test(S("abcde"), 2, 0, SV("12345"), 0, 4, S("ab1234cde")); - test(S("abcde"), 2, 0, SV("12345"), 0, 5, S("ab12345cde")); - test(S("abcde"), 2, 0, SV("12345"), 0, 6, S("ab12345cde")); - test(S("abcde"), 2, 0, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, 0, SV("12345"), 1, 2, S("ab23cde")); - test(S("abcde"), 2, 0, SV("12345"), 1, 3, S("ab234cde")); - test(S("abcde"), 2, 0, SV("12345"), 1, 4, S("ab2345cde")); - test(S("abcde"), 2, 0, SV("12345"), 1, 5, S("ab2345cde")); - test(S("abcde"), 2, 0, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345"), 2, 1, S("ab3cde")); - test(S("abcde"), 2, 0, SV("12345"), 2, 2, S("ab34cde")); - test(S("abcde"), 2, 0, SV("12345"), 2, 3, S("ab345cde")); - test(S("abcde"), 2, 0, SV("12345"), 2, 4, S("ab345cde")); - test(S("abcde"), 2, 0, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345"), 4, 1, S("ab5cde")); - test(S("abcde"), 2, 0, SV("12345"), 4, 2, S("ab5cde")); - test(S("abcde"), 2, 0, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 2, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 0, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("1234567890"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 0, 5, S("ab12345cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 0, 9, S("ab123456789cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 0, 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 0, 11, S("ab1234567890cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("1234567890"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 1, 4, S("ab2345cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 1, 8, S("ab23456789cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 1, 9, S("ab234567890cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 1, 10, S("ab234567890cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("1234567890"), 5, 1, S("ab6cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 5, 2, S("ab67cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 5, 4, S("ab6789cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 5, 5, S("ab67890cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 5, 6, S("ab67890cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("1234567890"), 9, 1, S("ab0cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 9, 2, S("ab0cde")); - test(S("abcde"), 2, 0, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 2, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 9, S("ab234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 1, S("ab1cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 5, S("ab12345cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 9, S("ab123456789cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 11, S("ab1234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 19, 1, S("ab0cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 19, 2, S("ab0cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 1, SV(""), 0, 0, S("abde")); - test(S("abcde"), 2, 1, SV(""), 0, 1, S("abde")); - test(S("abcde"), 2, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 1, SV("12345"), 0, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345"), 0, 1, S("ab1de")); - test(S("abcde"), 2, 1, SV("12345"), 0, 2, S("ab12de")); - test(S("abcde"), 2, 1, SV("12345"), 0, 4, S("ab1234de")); - test(S("abcde"), 2, 1, SV("12345"), 0, 5, S("ab12345de")); - test(S("abcde"), 2, 1, SV("12345"), 0, 6, S("ab12345de")); - test(S("abcde"), 2, 1, SV("12345"), 1, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345"), 1, 1, S("ab2de")); - test(S("abcde"), 2, 1, SV("12345"), 1, 2, S("ab23de")); - test(S("abcde"), 2, 1, SV("12345"), 1, 3, S("ab234de")); - test(S("abcde"), 2, 1, SV("12345"), 1, 4, S("ab2345de")); - test(S("abcde"), 2, 1, SV("12345"), 1, 5, S("ab2345de")); - test(S("abcde"), 2, 1, SV("12345"), 2, 0, S("abde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test11() { + test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 19, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 19, 1, S("a0")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 19, 2, S("a0")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 20, 0, S("a")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 20, 1, S("a")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 0, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 2, 0, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 2, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 0, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, 0, SV("12345"), 0, 2, S("ab12cde")); + test(S("abcde"), 2, 0, SV("12345"), 0, 4, S("ab1234cde")); + test(S("abcde"), 2, 0, SV("12345"), 0, 5, S("ab12345cde")); + test(S("abcde"), 2, 0, SV("12345"), 0, 6, S("ab12345cde")); + test(S("abcde"), 2, 0, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, 0, SV("12345"), 1, 2, S("ab23cde")); + test(S("abcde"), 2, 0, SV("12345"), 1, 3, S("ab234cde")); + test(S("abcde"), 2, 0, SV("12345"), 1, 4, S("ab2345cde")); + test(S("abcde"), 2, 0, SV("12345"), 1, 5, S("ab2345cde")); + test(S("abcde"), 2, 0, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345"), 2, 1, S("ab3cde")); + test(S("abcde"), 2, 0, SV("12345"), 2, 2, S("ab34cde")); + test(S("abcde"), 2, 0, SV("12345"), 2, 3, S("ab345cde")); + test(S("abcde"), 2, 0, SV("12345"), 2, 4, S("ab345cde")); + test(S("abcde"), 2, 0, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345"), 4, 1, S("ab5cde")); + test(S("abcde"), 2, 0, SV("12345"), 4, 2, S("ab5cde")); + test(S("abcde"), 2, 0, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 2, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 0, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("1234567890"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 0, 5, S("ab12345cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 0, 9, S("ab123456789cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 0, 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 0, 11, S("ab1234567890cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("1234567890"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 1, 4, S("ab2345cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 1, 8, S("ab23456789cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 1, 9, S("ab234567890cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 1, 10, S("ab234567890cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("1234567890"), 5, 1, S("ab6cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 5, 2, S("ab67cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 5, 4, S("ab6789cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 5, 5, S("ab67890cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 5, 6, S("ab67890cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("1234567890"), 9, 1, S("ab0cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 9, 2, S("ab0cde")); + test(S("abcde"), 2, 0, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 2, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 9, S("ab234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 1, S("ab1cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 5, S("ab12345cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 9, S("ab123456789cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 10, 11, S("ab1234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 19, 1, S("ab0cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 19, 2, S("ab0cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 1, SV(""), 0, 0, S("abde")); + test(S("abcde"), 2, 1, SV(""), 0, 1, S("abde")); + test(S("abcde"), 2, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 1, SV("12345"), 0, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345"), 0, 1, S("ab1de")); + test(S("abcde"), 2, 1, SV("12345"), 0, 2, S("ab12de")); + test(S("abcde"), 2, 1, SV("12345"), 0, 4, S("ab1234de")); + test(S("abcde"), 2, 1, SV("12345"), 0, 5, S("ab12345de")); + test(S("abcde"), 2, 1, SV("12345"), 0, 6, S("ab12345de")); + test(S("abcde"), 2, 1, SV("12345"), 1, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345"), 1, 1, S("ab2de")); + test(S("abcde"), 2, 1, SV("12345"), 1, 2, S("ab23de")); + test(S("abcde"), 2, 1, SV("12345"), 1, 3, S("ab234de")); + test(S("abcde"), 2, 1, SV("12345"), 1, 4, S("ab2345de")); + test(S("abcde"), 2, 1, SV("12345"), 1, 5, S("ab2345de")); + test(S("abcde"), 2, 1, SV("12345"), 2, 0, S("abde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test12() -{ - test(S("abcde"), 2, 1, SV("12345"), 2, 1, S("ab3de")); - test(S("abcde"), 2, 1, SV("12345"), 2, 2, S("ab34de")); - test(S("abcde"), 2, 1, SV("12345"), 2, 3, S("ab345de")); - test(S("abcde"), 2, 1, SV("12345"), 2, 4, S("ab345de")); - test(S("abcde"), 2, 1, SV("12345"), 4, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345"), 4, 1, S("ab5de")); - test(S("abcde"), 2, 1, SV("12345"), 4, 2, S("ab5de")); - test(S("abcde"), 2, 1, SV("12345"), 5, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345"), 5, 1, S("abde")); - test(S("abcde"), 2, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 1, SV("1234567890"), 0, 0, S("abde")); - test(S("abcde"), 2, 1, SV("1234567890"), 0, 1, S("ab1de")); - test(S("abcde"), 2, 1, SV("1234567890"), 0, 5, S("ab12345de")); - test(S("abcde"), 2, 1, SV("1234567890"), 0, 9, S("ab123456789de")); - test(S("abcde"), 2, 1, SV("1234567890"), 0, 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, SV("1234567890"), 0, 11, S("ab1234567890de")); - test(S("abcde"), 2, 1, SV("1234567890"), 1, 0, S("abde")); - test(S("abcde"), 2, 1, SV("1234567890"), 1, 1, S("ab2de")); - test(S("abcde"), 2, 1, SV("1234567890"), 1, 4, S("ab2345de")); - test(S("abcde"), 2, 1, SV("1234567890"), 1, 8, S("ab23456789de")); - test(S("abcde"), 2, 1, SV("1234567890"), 1, 9, S("ab234567890de")); - test(S("abcde"), 2, 1, SV("1234567890"), 1, 10, S("ab234567890de")); - test(S("abcde"), 2, 1, SV("1234567890"), 5, 0, S("abde")); - test(S("abcde"), 2, 1, SV("1234567890"), 5, 1, S("ab6de")); - test(S("abcde"), 2, 1, SV("1234567890"), 5, 2, S("ab67de")); - test(S("abcde"), 2, 1, SV("1234567890"), 5, 4, S("ab6789de")); - test(S("abcde"), 2, 1, SV("1234567890"), 5, 5, S("ab67890de")); - test(S("abcde"), 2, 1, SV("1234567890"), 5, 6, S("ab67890de")); - test(S("abcde"), 2, 1, SV("1234567890"), 9, 0, S("abde")); - test(S("abcde"), 2, 1, SV("1234567890"), 9, 1, S("ab0de")); - test(S("abcde"), 2, 1, SV("1234567890"), 9, 2, S("ab0de")); - test(S("abcde"), 2, 1, SV("1234567890"), 10, 0, S("abde")); - test(S("abcde"), 2, 1, SV("1234567890"), 10, 1, S("abde")); - test(S("abcde"), 2, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 1, S("ab1de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 1, S("ab2de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 9, S("ab234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 18, S("ab234567890123456789de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 1, S("ab1de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 5, S("ab12345de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 9, S("ab123456789de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 11, S("ab1234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 19, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 19, 1, S("ab0de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 19, 2, S("ab0de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 20, 0, S("abde")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 20, 1, S("abde")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 2, SV(""), 0, 0, S("abe")); - test(S("abcde"), 2, 2, SV(""), 0, 1, S("abe")); - test(S("abcde"), 2, 2, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 2, SV("12345"), 0, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345"), 0, 1, S("ab1e")); - test(S("abcde"), 2, 2, SV("12345"), 0, 2, S("ab12e")); - test(S("abcde"), 2, 2, SV("12345"), 0, 4, S("ab1234e")); - test(S("abcde"), 2, 2, SV("12345"), 0, 5, S("ab12345e")); - test(S("abcde"), 2, 2, SV("12345"), 0, 6, S("ab12345e")); - test(S("abcde"), 2, 2, SV("12345"), 1, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345"), 1, 1, S("ab2e")); - test(S("abcde"), 2, 2, SV("12345"), 1, 2, S("ab23e")); - test(S("abcde"), 2, 2, SV("12345"), 1, 3, S("ab234e")); - test(S("abcde"), 2, 2, SV("12345"), 1, 4, S("ab2345e")); - test(S("abcde"), 2, 2, SV("12345"), 1, 5, S("ab2345e")); - test(S("abcde"), 2, 2, SV("12345"), 2, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345"), 2, 1, S("ab3e")); - test(S("abcde"), 2, 2, SV("12345"), 2, 2, S("ab34e")); - test(S("abcde"), 2, 2, SV("12345"), 2, 3, S("ab345e")); - test(S("abcde"), 2, 2, SV("12345"), 2, 4, S("ab345e")); - test(S("abcde"), 2, 2, SV("12345"), 4, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345"), 4, 1, S("ab5e")); - test(S("abcde"), 2, 2, SV("12345"), 4, 2, S("ab5e")); - test(S("abcde"), 2, 2, SV("12345"), 5, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345"), 5, 1, S("abe")); - test(S("abcde"), 2, 2, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 2, SV("1234567890"), 0, 0, S("abe")); - test(S("abcde"), 2, 2, SV("1234567890"), 0, 1, S("ab1e")); - test(S("abcde"), 2, 2, SV("1234567890"), 0, 5, S("ab12345e")); - test(S("abcde"), 2, 2, SV("1234567890"), 0, 9, S("ab123456789e")); - test(S("abcde"), 2, 2, SV("1234567890"), 0, 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, SV("1234567890"), 0, 11, S("ab1234567890e")); - test(S("abcde"), 2, 2, SV("1234567890"), 1, 0, S("abe")); - test(S("abcde"), 2, 2, SV("1234567890"), 1, 1, S("ab2e")); - test(S("abcde"), 2, 2, SV("1234567890"), 1, 4, S("ab2345e")); - test(S("abcde"), 2, 2, SV("1234567890"), 1, 8, S("ab23456789e")); - test(S("abcde"), 2, 2, SV("1234567890"), 1, 9, S("ab234567890e")); - test(S("abcde"), 2, 2, SV("1234567890"), 1, 10, S("ab234567890e")); - test(S("abcde"), 2, 2, SV("1234567890"), 5, 0, S("abe")); - test(S("abcde"), 2, 2, SV("1234567890"), 5, 1, S("ab6e")); - test(S("abcde"), 2, 2, SV("1234567890"), 5, 2, S("ab67e")); - test(S("abcde"), 2, 2, SV("1234567890"), 5, 4, S("ab6789e")); - - return true; +TEST_CONSTEXPR_CXX20 bool test12() { + test(S("abcde"), 2, 1, SV("12345"), 2, 1, S("ab3de")); + test(S("abcde"), 2, 1, SV("12345"), 2, 2, S("ab34de")); + test(S("abcde"), 2, 1, SV("12345"), 2, 3, S("ab345de")); + test(S("abcde"), 2, 1, SV("12345"), 2, 4, S("ab345de")); + test(S("abcde"), 2, 1, SV("12345"), 4, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345"), 4, 1, S("ab5de")); + test(S("abcde"), 2, 1, SV("12345"), 4, 2, S("ab5de")); + test(S("abcde"), 2, 1, SV("12345"), 5, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345"), 5, 1, S("abde")); + test(S("abcde"), 2, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 1, SV("1234567890"), 0, 0, S("abde")); + test(S("abcde"), 2, 1, SV("1234567890"), 0, 1, S("ab1de")); + test(S("abcde"), 2, 1, SV("1234567890"), 0, 5, S("ab12345de")); + test(S("abcde"), 2, 1, SV("1234567890"), 0, 9, S("ab123456789de")); + test(S("abcde"), 2, 1, SV("1234567890"), 0, 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, SV("1234567890"), 0, 11, S("ab1234567890de")); + test(S("abcde"), 2, 1, SV("1234567890"), 1, 0, S("abde")); + test(S("abcde"), 2, 1, SV("1234567890"), 1, 1, S("ab2de")); + test(S("abcde"), 2, 1, SV("1234567890"), 1, 4, S("ab2345de")); + test(S("abcde"), 2, 1, SV("1234567890"), 1, 8, S("ab23456789de")); + test(S("abcde"), 2, 1, SV("1234567890"), 1, 9, S("ab234567890de")); + test(S("abcde"), 2, 1, SV("1234567890"), 1, 10, S("ab234567890de")); + test(S("abcde"), 2, 1, SV("1234567890"), 5, 0, S("abde")); + test(S("abcde"), 2, 1, SV("1234567890"), 5, 1, S("ab6de")); + test(S("abcde"), 2, 1, SV("1234567890"), 5, 2, S("ab67de")); + test(S("abcde"), 2, 1, SV("1234567890"), 5, 4, S("ab6789de")); + test(S("abcde"), 2, 1, SV("1234567890"), 5, 5, S("ab67890de")); + test(S("abcde"), 2, 1, SV("1234567890"), 5, 6, S("ab67890de")); + test(S("abcde"), 2, 1, SV("1234567890"), 9, 0, S("abde")); + test(S("abcde"), 2, 1, SV("1234567890"), 9, 1, S("ab0de")); + test(S("abcde"), 2, 1, SV("1234567890"), 9, 2, S("ab0de")); + test(S("abcde"), 2, 1, SV("1234567890"), 10, 0, S("abde")); + test(S("abcde"), 2, 1, SV("1234567890"), 10, 1, S("abde")); + test(S("abcde"), 2, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 1, S("ab1de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 1, S("ab2de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 9, S("ab234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 18, S("ab234567890123456789de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 1, S("ab1de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 5, S("ab12345de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 9, S("ab123456789de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 10, 11, S("ab1234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 19, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 19, 1, S("ab0de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 19, 2, S("ab0de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 20, 0, S("abde")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 20, 1, S("abde")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 2, SV(""), 0, 0, S("abe")); + test(S("abcde"), 2, 2, SV(""), 0, 1, S("abe")); + test(S("abcde"), 2, 2, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 2, SV("12345"), 0, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345"), 0, 1, S("ab1e")); + test(S("abcde"), 2, 2, SV("12345"), 0, 2, S("ab12e")); + test(S("abcde"), 2, 2, SV("12345"), 0, 4, S("ab1234e")); + test(S("abcde"), 2, 2, SV("12345"), 0, 5, S("ab12345e")); + test(S("abcde"), 2, 2, SV("12345"), 0, 6, S("ab12345e")); + test(S("abcde"), 2, 2, SV("12345"), 1, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345"), 1, 1, S("ab2e")); + test(S("abcde"), 2, 2, SV("12345"), 1, 2, S("ab23e")); + test(S("abcde"), 2, 2, SV("12345"), 1, 3, S("ab234e")); + test(S("abcde"), 2, 2, SV("12345"), 1, 4, S("ab2345e")); + test(S("abcde"), 2, 2, SV("12345"), 1, 5, S("ab2345e")); + test(S("abcde"), 2, 2, SV("12345"), 2, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345"), 2, 1, S("ab3e")); + test(S("abcde"), 2, 2, SV("12345"), 2, 2, S("ab34e")); + test(S("abcde"), 2, 2, SV("12345"), 2, 3, S("ab345e")); + test(S("abcde"), 2, 2, SV("12345"), 2, 4, S("ab345e")); + test(S("abcde"), 2, 2, SV("12345"), 4, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345"), 4, 1, S("ab5e")); + test(S("abcde"), 2, 2, SV("12345"), 4, 2, S("ab5e")); + test(S("abcde"), 2, 2, SV("12345"), 5, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345"), 5, 1, S("abe")); + test(S("abcde"), 2, 2, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 2, SV("1234567890"), 0, 0, S("abe")); + test(S("abcde"), 2, 2, SV("1234567890"), 0, 1, S("ab1e")); + test(S("abcde"), 2, 2, SV("1234567890"), 0, 5, S("ab12345e")); + test(S("abcde"), 2, 2, SV("1234567890"), 0, 9, S("ab123456789e")); + test(S("abcde"), 2, 2, SV("1234567890"), 0, 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, SV("1234567890"), 0, 11, S("ab1234567890e")); + test(S("abcde"), 2, 2, SV("1234567890"), 1, 0, S("abe")); + test(S("abcde"), 2, 2, SV("1234567890"), 1, 1, S("ab2e")); + test(S("abcde"), 2, 2, SV("1234567890"), 1, 4, S("ab2345e")); + test(S("abcde"), 2, 2, SV("1234567890"), 1, 8, S("ab23456789e")); + test(S("abcde"), 2, 2, SV("1234567890"), 1, 9, S("ab234567890e")); + test(S("abcde"), 2, 2, SV("1234567890"), 1, 10, S("ab234567890e")); + test(S("abcde"), 2, 2, SV("1234567890"), 5, 0, S("abe")); + test(S("abcde"), 2, 2, SV("1234567890"), 5, 1, S("ab6e")); + test(S("abcde"), 2, 2, SV("1234567890"), 5, 2, S("ab67e")); + test(S("abcde"), 2, 2, SV("1234567890"), 5, 4, S("ab6789e")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test13() -{ - test(S("abcde"), 2, 2, SV("1234567890"), 5, 5, S("ab67890e")); - test(S("abcde"), 2, 2, SV("1234567890"), 5, 6, S("ab67890e")); - test(S("abcde"), 2, 2, SV("1234567890"), 9, 0, S("abe")); - test(S("abcde"), 2, 2, SV("1234567890"), 9, 1, S("ab0e")); - test(S("abcde"), 2, 2, SV("1234567890"), 9, 2, S("ab0e")); - test(S("abcde"), 2, 2, SV("1234567890"), 10, 0, S("abe")); - test(S("abcde"), 2, 2, SV("1234567890"), 10, 1, S("abe")); - test(S("abcde"), 2, 2, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 1, S("ab1e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 1, S("ab2e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 9, S("ab234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 18, S("ab234567890123456789e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 1, S("ab1e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 5, S("ab12345e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 9, S("ab123456789e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 11, S("ab1234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 19, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 19, 1, S("ab0e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 19, 2, S("ab0e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 20, 0, S("abe")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 20, 1, S("abe")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 3, SV(""), 0, 0, S("ab")); - test(S("abcde"), 2, 3, SV(""), 0, 1, S("ab")); - test(S("abcde"), 2, 3, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 3, SV("12345"), 0, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345"), 0, 1, S("ab1")); - test(S("abcde"), 2, 3, SV("12345"), 0, 2, S("ab12")); - test(S("abcde"), 2, 3, SV("12345"), 0, 4, S("ab1234")); - test(S("abcde"), 2, 3, SV("12345"), 0, 5, S("ab12345")); - test(S("abcde"), 2, 3, SV("12345"), 0, 6, S("ab12345")); - test(S("abcde"), 2, 3, SV("12345"), 1, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345"), 1, 1, S("ab2")); - test(S("abcde"), 2, 3, SV("12345"), 1, 2, S("ab23")); - test(S("abcde"), 2, 3, SV("12345"), 1, 3, S("ab234")); - test(S("abcde"), 2, 3, SV("12345"), 1, 4, S("ab2345")); - test(S("abcde"), 2, 3, SV("12345"), 1, 5, S("ab2345")); - test(S("abcde"), 2, 3, SV("12345"), 2, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345"), 2, 1, S("ab3")); - test(S("abcde"), 2, 3, SV("12345"), 2, 2, S("ab34")); - test(S("abcde"), 2, 3, SV("12345"), 2, 3, S("ab345")); - test(S("abcde"), 2, 3, SV("12345"), 2, 4, S("ab345")); - test(S("abcde"), 2, 3, SV("12345"), 4, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345"), 4, 1, S("ab5")); - test(S("abcde"), 2, 3, SV("12345"), 4, 2, S("ab5")); - test(S("abcde"), 2, 3, SV("12345"), 5, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345"), 5, 1, S("ab")); - test(S("abcde"), 2, 3, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 3, SV("1234567890"), 0, 0, S("ab")); - test(S("abcde"), 2, 3, SV("1234567890"), 0, 1, S("ab1")); - test(S("abcde"), 2, 3, SV("1234567890"), 0, 5, S("ab12345")); - test(S("abcde"), 2, 3, SV("1234567890"), 0, 9, S("ab123456789")); - test(S("abcde"), 2, 3, SV("1234567890"), 0, 10, S("ab1234567890")); - test(S("abcde"), 2, 3, SV("1234567890"), 0, 11, S("ab1234567890")); - test(S("abcde"), 2, 3, SV("1234567890"), 1, 0, S("ab")); - test(S("abcde"), 2, 3, SV("1234567890"), 1, 1, S("ab2")); - test(S("abcde"), 2, 3, SV("1234567890"), 1, 4, S("ab2345")); - test(S("abcde"), 2, 3, SV("1234567890"), 1, 8, S("ab23456789")); - test(S("abcde"), 2, 3, SV("1234567890"), 1, 9, S("ab234567890")); - test(S("abcde"), 2, 3, SV("1234567890"), 1, 10, S("ab234567890")); - test(S("abcde"), 2, 3, SV("1234567890"), 5, 0, S("ab")); - test(S("abcde"), 2, 3, SV("1234567890"), 5, 1, S("ab6")); - test(S("abcde"), 2, 3, SV("1234567890"), 5, 2, S("ab67")); - test(S("abcde"), 2, 3, SV("1234567890"), 5, 4, S("ab6789")); - test(S("abcde"), 2, 3, SV("1234567890"), 5, 5, S("ab67890")); - test(S("abcde"), 2, 3, SV("1234567890"), 5, 6, S("ab67890")); - test(S("abcde"), 2, 3, SV("1234567890"), 9, 0, S("ab")); - test(S("abcde"), 2, 3, SV("1234567890"), 9, 1, S("ab0")); - test(S("abcde"), 2, 3, SV("1234567890"), 9, 2, S("ab0")); - test(S("abcde"), 2, 3, SV("1234567890"), 10, 0, S("ab")); - test(S("abcde"), 2, 3, SV("1234567890"), 10, 1, S("ab")); - test(S("abcde"), 2, 3, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 1, S("ab1")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 10, S("ab1234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 1, S("ab2")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 9, S("ab234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 18, S("ab234567890123456789")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 1, S("ab1")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 5, S("ab12345")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 9, S("ab123456789")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 10, S("ab1234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 11, S("ab1234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test13() { + test(S("abcde"), 2, 2, SV("1234567890"), 5, 5, S("ab67890e")); + test(S("abcde"), 2, 2, SV("1234567890"), 5, 6, S("ab67890e")); + test(S("abcde"), 2, 2, SV("1234567890"), 9, 0, S("abe")); + test(S("abcde"), 2, 2, SV("1234567890"), 9, 1, S("ab0e")); + test(S("abcde"), 2, 2, SV("1234567890"), 9, 2, S("ab0e")); + test(S("abcde"), 2, 2, SV("1234567890"), 10, 0, S("abe")); + test(S("abcde"), 2, 2, SV("1234567890"), 10, 1, S("abe")); + test(S("abcde"), 2, 2, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 1, S("ab1e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 1, S("ab2e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 9, S("ab234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 18, S("ab234567890123456789e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 1, S("ab1e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 5, S("ab12345e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 9, S("ab123456789e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 10, 11, S("ab1234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 19, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 19, 1, S("ab0e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 19, 2, S("ab0e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 20, 0, S("abe")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 20, 1, S("abe")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 3, SV(""), 0, 0, S("ab")); + test(S("abcde"), 2, 3, SV(""), 0, 1, S("ab")); + test(S("abcde"), 2, 3, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 3, SV("12345"), 0, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345"), 0, 1, S("ab1")); + test(S("abcde"), 2, 3, SV("12345"), 0, 2, S("ab12")); + test(S("abcde"), 2, 3, SV("12345"), 0, 4, S("ab1234")); + test(S("abcde"), 2, 3, SV("12345"), 0, 5, S("ab12345")); + test(S("abcde"), 2, 3, SV("12345"), 0, 6, S("ab12345")); + test(S("abcde"), 2, 3, SV("12345"), 1, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345"), 1, 1, S("ab2")); + test(S("abcde"), 2, 3, SV("12345"), 1, 2, S("ab23")); + test(S("abcde"), 2, 3, SV("12345"), 1, 3, S("ab234")); + test(S("abcde"), 2, 3, SV("12345"), 1, 4, S("ab2345")); + test(S("abcde"), 2, 3, SV("12345"), 1, 5, S("ab2345")); + test(S("abcde"), 2, 3, SV("12345"), 2, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345"), 2, 1, S("ab3")); + test(S("abcde"), 2, 3, SV("12345"), 2, 2, S("ab34")); + test(S("abcde"), 2, 3, SV("12345"), 2, 3, S("ab345")); + test(S("abcde"), 2, 3, SV("12345"), 2, 4, S("ab345")); + test(S("abcde"), 2, 3, SV("12345"), 4, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345"), 4, 1, S("ab5")); + test(S("abcde"), 2, 3, SV("12345"), 4, 2, S("ab5")); + test(S("abcde"), 2, 3, SV("12345"), 5, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345"), 5, 1, S("ab")); + test(S("abcde"), 2, 3, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 3, SV("1234567890"), 0, 0, S("ab")); + test(S("abcde"), 2, 3, SV("1234567890"), 0, 1, S("ab1")); + test(S("abcde"), 2, 3, SV("1234567890"), 0, 5, S("ab12345")); + test(S("abcde"), 2, 3, SV("1234567890"), 0, 9, S("ab123456789")); + test(S("abcde"), 2, 3, SV("1234567890"), 0, 10, S("ab1234567890")); + test(S("abcde"), 2, 3, SV("1234567890"), 0, 11, S("ab1234567890")); + test(S("abcde"), 2, 3, SV("1234567890"), 1, 0, S("ab")); + test(S("abcde"), 2, 3, SV("1234567890"), 1, 1, S("ab2")); + test(S("abcde"), 2, 3, SV("1234567890"), 1, 4, S("ab2345")); + test(S("abcde"), 2, 3, SV("1234567890"), 1, 8, S("ab23456789")); + test(S("abcde"), 2, 3, SV("1234567890"), 1, 9, S("ab234567890")); + test(S("abcde"), 2, 3, SV("1234567890"), 1, 10, S("ab234567890")); + test(S("abcde"), 2, 3, SV("1234567890"), 5, 0, S("ab")); + test(S("abcde"), 2, 3, SV("1234567890"), 5, 1, S("ab6")); + test(S("abcde"), 2, 3, SV("1234567890"), 5, 2, S("ab67")); + test(S("abcde"), 2, 3, SV("1234567890"), 5, 4, S("ab6789")); + test(S("abcde"), 2, 3, SV("1234567890"), 5, 5, S("ab67890")); + test(S("abcde"), 2, 3, SV("1234567890"), 5, 6, S("ab67890")); + test(S("abcde"), 2, 3, SV("1234567890"), 9, 0, S("ab")); + test(S("abcde"), 2, 3, SV("1234567890"), 9, 1, S("ab0")); + test(S("abcde"), 2, 3, SV("1234567890"), 9, 2, S("ab0")); + test(S("abcde"), 2, 3, SV("1234567890"), 10, 0, S("ab")); + test(S("abcde"), 2, 3, SV("1234567890"), 10, 1, S("ab")); + test(S("abcde"), 2, 3, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 1, S("ab1")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 10, S("ab1234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 1, S("ab2")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 9, S("ab234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 18, S("ab234567890123456789")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 1, S("ab1")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 5, S("ab12345")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 9, S("ab123456789")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 10, S("ab1234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 10, 11, S("ab1234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test14() -{ - test(S("abcde"), 2, 3, SV("12345678901234567890"), 19, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 19, 1, S("ab0")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 19, 2, S("ab0")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 20, 0, S("ab")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 20, 1, S("ab")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 4, SV(""), 0, 0, S("ab")); - test(S("abcde"), 2, 4, SV(""), 0, 1, S("ab")); - test(S("abcde"), 2, 4, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 4, SV("12345"), 0, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345"), 0, 1, S("ab1")); - test(S("abcde"), 2, 4, SV("12345"), 0, 2, S("ab12")); - test(S("abcde"), 2, 4, SV("12345"), 0, 4, S("ab1234")); - test(S("abcde"), 2, 4, SV("12345"), 0, 5, S("ab12345")); - test(S("abcde"), 2, 4, SV("12345"), 0, 6, S("ab12345")); - test(S("abcde"), 2, 4, SV("12345"), 1, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345"), 1, 1, S("ab2")); - test(S("abcde"), 2, 4, SV("12345"), 1, 2, S("ab23")); - test(S("abcde"), 2, 4, SV("12345"), 1, 3, S("ab234")); - test(S("abcde"), 2, 4, SV("12345"), 1, 4, S("ab2345")); - test(S("abcde"), 2, 4, SV("12345"), 1, 5, S("ab2345")); - test(S("abcde"), 2, 4, SV("12345"), 2, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345"), 2, 1, S("ab3")); - test(S("abcde"), 2, 4, SV("12345"), 2, 2, S("ab34")); - test(S("abcde"), 2, 4, SV("12345"), 2, 3, S("ab345")); - test(S("abcde"), 2, 4, SV("12345"), 2, 4, S("ab345")); - test(S("abcde"), 2, 4, SV("12345"), 4, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345"), 4, 1, S("ab5")); - test(S("abcde"), 2, 4, SV("12345"), 4, 2, S("ab5")); - test(S("abcde"), 2, 4, SV("12345"), 5, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345"), 5, 1, S("ab")); - test(S("abcde"), 2, 4, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 4, SV("1234567890"), 0, 0, S("ab")); - test(S("abcde"), 2, 4, SV("1234567890"), 0, 1, S("ab1")); - test(S("abcde"), 2, 4, SV("1234567890"), 0, 5, S("ab12345")); - test(S("abcde"), 2, 4, SV("1234567890"), 0, 9, S("ab123456789")); - test(S("abcde"), 2, 4, SV("1234567890"), 0, 10, S("ab1234567890")); - test(S("abcde"), 2, 4, SV("1234567890"), 0, 11, S("ab1234567890")); - test(S("abcde"), 2, 4, SV("1234567890"), 1, 0, S("ab")); - test(S("abcde"), 2, 4, SV("1234567890"), 1, 1, S("ab2")); - test(S("abcde"), 2, 4, SV("1234567890"), 1, 4, S("ab2345")); - test(S("abcde"), 2, 4, SV("1234567890"), 1, 8, S("ab23456789")); - test(S("abcde"), 2, 4, SV("1234567890"), 1, 9, S("ab234567890")); - test(S("abcde"), 2, 4, SV("1234567890"), 1, 10, S("ab234567890")); - test(S("abcde"), 2, 4, SV("1234567890"), 5, 0, S("ab")); - test(S("abcde"), 2, 4, SV("1234567890"), 5, 1, S("ab6")); - test(S("abcde"), 2, 4, SV("1234567890"), 5, 2, S("ab67")); - test(S("abcde"), 2, 4, SV("1234567890"), 5, 4, S("ab6789")); - test(S("abcde"), 2, 4, SV("1234567890"), 5, 5, S("ab67890")); - test(S("abcde"), 2, 4, SV("1234567890"), 5, 6, S("ab67890")); - test(S("abcde"), 2, 4, SV("1234567890"), 9, 0, S("ab")); - test(S("abcde"), 2, 4, SV("1234567890"), 9, 1, S("ab0")); - test(S("abcde"), 2, 4, SV("1234567890"), 9, 2, S("ab0")); - test(S("abcde"), 2, 4, SV("1234567890"), 10, 0, S("ab")); - test(S("abcde"), 2, 4, SV("1234567890"), 10, 1, S("ab")); - test(S("abcde"), 2, 4, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 1, S("ab1")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 10, S("ab1234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 1, S("ab2")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 9, S("ab234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 18, S("ab234567890123456789")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 1, S("ab1")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 5, S("ab12345")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 9, S("ab123456789")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 10, S("ab1234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 11, S("ab1234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 19, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 19, 1, S("ab0")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 19, 2, S("ab0")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 20, 0, S("ab")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 20, 1, S("ab")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 4, 0, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 4, 0, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 4, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 4, 0, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, 0, SV("12345"), 0, 2, S("abcd12e")); - test(S("abcde"), 4, 0, SV("12345"), 0, 4, S("abcd1234e")); - test(S("abcde"), 4, 0, SV("12345"), 0, 5, S("abcd12345e")); - test(S("abcde"), 4, 0, SV("12345"), 0, 6, S("abcd12345e")); - test(S("abcde"), 4, 0, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, 0, SV("12345"), 1, 2, S("abcd23e")); - test(S("abcde"), 4, 0, SV("12345"), 1, 3, S("abcd234e")); - test(S("abcde"), 4, 0, SV("12345"), 1, 4, S("abcd2345e")); - test(S("abcde"), 4, 0, SV("12345"), 1, 5, S("abcd2345e")); - test(S("abcde"), 4, 0, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345"), 2, 1, S("abcd3e")); - test(S("abcde"), 4, 0, SV("12345"), 2, 2, S("abcd34e")); - test(S("abcde"), 4, 0, SV("12345"), 2, 3, S("abcd345e")); - test(S("abcde"), 4, 0, SV("12345"), 2, 4, S("abcd345e")); - - return true; +TEST_CONSTEXPR_CXX20 bool test14() { + test(S("abcde"), 2, 3, SV("12345678901234567890"), 19, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 19, 1, S("ab0")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 19, 2, S("ab0")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 20, 0, S("ab")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 20, 1, S("ab")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 4, SV(""), 0, 0, S("ab")); + test(S("abcde"), 2, 4, SV(""), 0, 1, S("ab")); + test(S("abcde"), 2, 4, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 4, SV("12345"), 0, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345"), 0, 1, S("ab1")); + test(S("abcde"), 2, 4, SV("12345"), 0, 2, S("ab12")); + test(S("abcde"), 2, 4, SV("12345"), 0, 4, S("ab1234")); + test(S("abcde"), 2, 4, SV("12345"), 0, 5, S("ab12345")); + test(S("abcde"), 2, 4, SV("12345"), 0, 6, S("ab12345")); + test(S("abcde"), 2, 4, SV("12345"), 1, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345"), 1, 1, S("ab2")); + test(S("abcde"), 2, 4, SV("12345"), 1, 2, S("ab23")); + test(S("abcde"), 2, 4, SV("12345"), 1, 3, S("ab234")); + test(S("abcde"), 2, 4, SV("12345"), 1, 4, S("ab2345")); + test(S("abcde"), 2, 4, SV("12345"), 1, 5, S("ab2345")); + test(S("abcde"), 2, 4, SV("12345"), 2, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345"), 2, 1, S("ab3")); + test(S("abcde"), 2, 4, SV("12345"), 2, 2, S("ab34")); + test(S("abcde"), 2, 4, SV("12345"), 2, 3, S("ab345")); + test(S("abcde"), 2, 4, SV("12345"), 2, 4, S("ab345")); + test(S("abcde"), 2, 4, SV("12345"), 4, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345"), 4, 1, S("ab5")); + test(S("abcde"), 2, 4, SV("12345"), 4, 2, S("ab5")); + test(S("abcde"), 2, 4, SV("12345"), 5, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345"), 5, 1, S("ab")); + test(S("abcde"), 2, 4, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 4, SV("1234567890"), 0, 0, S("ab")); + test(S("abcde"), 2, 4, SV("1234567890"), 0, 1, S("ab1")); + test(S("abcde"), 2, 4, SV("1234567890"), 0, 5, S("ab12345")); + test(S("abcde"), 2, 4, SV("1234567890"), 0, 9, S("ab123456789")); + test(S("abcde"), 2, 4, SV("1234567890"), 0, 10, S("ab1234567890")); + test(S("abcde"), 2, 4, SV("1234567890"), 0, 11, S("ab1234567890")); + test(S("abcde"), 2, 4, SV("1234567890"), 1, 0, S("ab")); + test(S("abcde"), 2, 4, SV("1234567890"), 1, 1, S("ab2")); + test(S("abcde"), 2, 4, SV("1234567890"), 1, 4, S("ab2345")); + test(S("abcde"), 2, 4, SV("1234567890"), 1, 8, S("ab23456789")); + test(S("abcde"), 2, 4, SV("1234567890"), 1, 9, S("ab234567890")); + test(S("abcde"), 2, 4, SV("1234567890"), 1, 10, S("ab234567890")); + test(S("abcde"), 2, 4, SV("1234567890"), 5, 0, S("ab")); + test(S("abcde"), 2, 4, SV("1234567890"), 5, 1, S("ab6")); + test(S("abcde"), 2, 4, SV("1234567890"), 5, 2, S("ab67")); + test(S("abcde"), 2, 4, SV("1234567890"), 5, 4, S("ab6789")); + test(S("abcde"), 2, 4, SV("1234567890"), 5, 5, S("ab67890")); + test(S("abcde"), 2, 4, SV("1234567890"), 5, 6, S("ab67890")); + test(S("abcde"), 2, 4, SV("1234567890"), 9, 0, S("ab")); + test(S("abcde"), 2, 4, SV("1234567890"), 9, 1, S("ab0")); + test(S("abcde"), 2, 4, SV("1234567890"), 9, 2, S("ab0")); + test(S("abcde"), 2, 4, SV("1234567890"), 10, 0, S("ab")); + test(S("abcde"), 2, 4, SV("1234567890"), 10, 1, S("ab")); + test(S("abcde"), 2, 4, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 1, S("ab1")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 10, S("ab1234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 19, S("ab1234567890123456789")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 20, S("ab12345678901234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 0, 21, S("ab12345678901234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 1, S("ab2")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 9, S("ab234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 18, S("ab234567890123456789")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 19, S("ab2345678901234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 1, 20, S("ab2345678901234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 1, S("ab1")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 5, S("ab12345")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 9, S("ab123456789")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 10, S("ab1234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 10, 11, S("ab1234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 19, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 19, 1, S("ab0")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 19, 2, S("ab0")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 20, 0, S("ab")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 20, 1, S("ab")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 4, 0, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 4, 0, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 4, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 4, 0, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, 0, SV("12345"), 0, 2, S("abcd12e")); + test(S("abcde"), 4, 0, SV("12345"), 0, 4, S("abcd1234e")); + test(S("abcde"), 4, 0, SV("12345"), 0, 5, S("abcd12345e")); + test(S("abcde"), 4, 0, SV("12345"), 0, 6, S("abcd12345e")); + test(S("abcde"), 4, 0, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, 0, SV("12345"), 1, 2, S("abcd23e")); + test(S("abcde"), 4, 0, SV("12345"), 1, 3, S("abcd234e")); + test(S("abcde"), 4, 0, SV("12345"), 1, 4, S("abcd2345e")); + test(S("abcde"), 4, 0, SV("12345"), 1, 5, S("abcd2345e")); + test(S("abcde"), 4, 0, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345"), 2, 1, S("abcd3e")); + test(S("abcde"), 4, 0, SV("12345"), 2, 2, S("abcd34e")); + test(S("abcde"), 4, 0, SV("12345"), 2, 3, S("abcd345e")); + test(S("abcde"), 4, 0, SV("12345"), 2, 4, S("abcd345e")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test15() -{ - test(S("abcde"), 4, 0, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345"), 4, 1, S("abcd5e")); - test(S("abcde"), 4, 0, SV("12345"), 4, 2, S("abcd5e")); - test(S("abcde"), 4, 0, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 4, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 4, 0, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("1234567890"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, 0, SV("1234567890"), 0, 5, S("abcd12345e")); - test(S("abcde"), 4, 0, SV("1234567890"), 0, 9, S("abcd123456789e")); - test(S("abcde"), 4, 0, SV("1234567890"), 0, 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, SV("1234567890"), 0, 11, S("abcd1234567890e")); - test(S("abcde"), 4, 0, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("1234567890"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, 0, SV("1234567890"), 1, 4, S("abcd2345e")); - test(S("abcde"), 4, 0, SV("1234567890"), 1, 8, S("abcd23456789e")); - test(S("abcde"), 4, 0, SV("1234567890"), 1, 9, S("abcd234567890e")); - test(S("abcde"), 4, 0, SV("1234567890"), 1, 10, S("abcd234567890e")); - test(S("abcde"), 4, 0, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("1234567890"), 5, 1, S("abcd6e")); - test(S("abcde"), 4, 0, SV("1234567890"), 5, 2, S("abcd67e")); - test(S("abcde"), 4, 0, SV("1234567890"), 5, 4, S("abcd6789e")); - test(S("abcde"), 4, 0, SV("1234567890"), 5, 5, S("abcd67890e")); - test(S("abcde"), 4, 0, SV("1234567890"), 5, 6, S("abcd67890e")); - test(S("abcde"), 4, 0, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("1234567890"), 9, 1, S("abcd0e")); - test(S("abcde"), 4, 0, SV("1234567890"), 9, 2, S("abcd0e")); - test(S("abcde"), 4, 0, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 4, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 9, S("abcd234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 1, S("abcd1e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 5, S("abcd12345e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 9, S("abcd123456789e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 11, S("abcd1234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 19, 1, S("abcd0e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 19, 2, S("abcd0e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 4, 1, SV(""), 0, 0, S("abcd")); - test(S("abcde"), 4, 1, SV(""), 0, 1, S("abcd")); - test(S("abcde"), 4, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 4, 1, SV("12345"), 0, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 1, SV("12345"), 0, 2, S("abcd12")); - test(S("abcde"), 4, 1, SV("12345"), 0, 4, S("abcd1234")); - test(S("abcde"), 4, 1, SV("12345"), 0, 5, S("abcd12345")); - test(S("abcde"), 4, 1, SV("12345"), 0, 6, S("abcd12345")); - test(S("abcde"), 4, 1, SV("12345"), 1, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 1, SV("12345"), 1, 2, S("abcd23")); - test(S("abcde"), 4, 1, SV("12345"), 1, 3, S("abcd234")); - test(S("abcde"), 4, 1, SV("12345"), 1, 4, S("abcd2345")); - test(S("abcde"), 4, 1, SV("12345"), 1, 5, S("abcd2345")); - test(S("abcde"), 4, 1, SV("12345"), 2, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345"), 2, 1, S("abcd3")); - test(S("abcde"), 4, 1, SV("12345"), 2, 2, S("abcd34")); - test(S("abcde"), 4, 1, SV("12345"), 2, 3, S("abcd345")); - test(S("abcde"), 4, 1, SV("12345"), 2, 4, S("abcd345")); - test(S("abcde"), 4, 1, SV("12345"), 4, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345"), 4, 1, S("abcd5")); - test(S("abcde"), 4, 1, SV("12345"), 4, 2, S("abcd5")); - test(S("abcde"), 4, 1, SV("12345"), 5, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345"), 5, 1, S("abcd")); - test(S("abcde"), 4, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 4, 1, SV("1234567890"), 0, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("1234567890"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 1, SV("1234567890"), 0, 5, S("abcd12345")); - test(S("abcde"), 4, 1, SV("1234567890"), 0, 9, S("abcd123456789")); - test(S("abcde"), 4, 1, SV("1234567890"), 0, 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, SV("1234567890"), 0, 11, S("abcd1234567890")); - test(S("abcde"), 4, 1, SV("1234567890"), 1, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("1234567890"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 1, SV("1234567890"), 1, 4, S("abcd2345")); - test(S("abcde"), 4, 1, SV("1234567890"), 1, 8, S("abcd23456789")); - test(S("abcde"), 4, 1, SV("1234567890"), 1, 9, S("abcd234567890")); - test(S("abcde"), 4, 1, SV("1234567890"), 1, 10, S("abcd234567890")); - test(S("abcde"), 4, 1, SV("1234567890"), 5, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("1234567890"), 5, 1, S("abcd6")); - test(S("abcde"), 4, 1, SV("1234567890"), 5, 2, S("abcd67")); - test(S("abcde"), 4, 1, SV("1234567890"), 5, 4, S("abcd6789")); - test(S("abcde"), 4, 1, SV("1234567890"), 5, 5, S("abcd67890")); - test(S("abcde"), 4, 1, SV("1234567890"), 5, 6, S("abcd67890")); - test(S("abcde"), 4, 1, SV("1234567890"), 9, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("1234567890"), 9, 1, S("abcd0")); - - return true; +TEST_CONSTEXPR_CXX20 bool test15() { + test(S("abcde"), 4, 0, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345"), 4, 1, S("abcd5e")); + test(S("abcde"), 4, 0, SV("12345"), 4, 2, S("abcd5e")); + test(S("abcde"), 4, 0, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 4, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 4, 0, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("1234567890"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, 0, SV("1234567890"), 0, 5, S("abcd12345e")); + test(S("abcde"), 4, 0, SV("1234567890"), 0, 9, S("abcd123456789e")); + test(S("abcde"), 4, 0, SV("1234567890"), 0, 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, SV("1234567890"), 0, 11, S("abcd1234567890e")); + test(S("abcde"), 4, 0, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("1234567890"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, 0, SV("1234567890"), 1, 4, S("abcd2345e")); + test(S("abcde"), 4, 0, SV("1234567890"), 1, 8, S("abcd23456789e")); + test(S("abcde"), 4, 0, SV("1234567890"), 1, 9, S("abcd234567890e")); + test(S("abcde"), 4, 0, SV("1234567890"), 1, 10, S("abcd234567890e")); + test(S("abcde"), 4, 0, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("1234567890"), 5, 1, S("abcd6e")); + test(S("abcde"), 4, 0, SV("1234567890"), 5, 2, S("abcd67e")); + test(S("abcde"), 4, 0, SV("1234567890"), 5, 4, S("abcd6789e")); + test(S("abcde"), 4, 0, SV("1234567890"), 5, 5, S("abcd67890e")); + test(S("abcde"), 4, 0, SV("1234567890"), 5, 6, S("abcd67890e")); + test(S("abcde"), 4, 0, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("1234567890"), 9, 1, S("abcd0e")); + test(S("abcde"), 4, 0, SV("1234567890"), 9, 2, S("abcd0e")); + test(S("abcde"), 4, 0, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 4, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 9, S("abcd234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 1, S("abcd1e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 5, S("abcd12345e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 9, S("abcd123456789e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 10, 11, S("abcd1234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 19, 1, S("abcd0e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 19, 2, S("abcd0e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 4, 1, SV(""), 0, 0, S("abcd")); + test(S("abcde"), 4, 1, SV(""), 0, 1, S("abcd")); + test(S("abcde"), 4, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 4, 1, SV("12345"), 0, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 1, SV("12345"), 0, 2, S("abcd12")); + test(S("abcde"), 4, 1, SV("12345"), 0, 4, S("abcd1234")); + test(S("abcde"), 4, 1, SV("12345"), 0, 5, S("abcd12345")); + test(S("abcde"), 4, 1, SV("12345"), 0, 6, S("abcd12345")); + test(S("abcde"), 4, 1, SV("12345"), 1, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 1, SV("12345"), 1, 2, S("abcd23")); + test(S("abcde"), 4, 1, SV("12345"), 1, 3, S("abcd234")); + test(S("abcde"), 4, 1, SV("12345"), 1, 4, S("abcd2345")); + test(S("abcde"), 4, 1, SV("12345"), 1, 5, S("abcd2345")); + test(S("abcde"), 4, 1, SV("12345"), 2, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345"), 2, 1, S("abcd3")); + test(S("abcde"), 4, 1, SV("12345"), 2, 2, S("abcd34")); + test(S("abcde"), 4, 1, SV("12345"), 2, 3, S("abcd345")); + test(S("abcde"), 4, 1, SV("12345"), 2, 4, S("abcd345")); + test(S("abcde"), 4, 1, SV("12345"), 4, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345"), 4, 1, S("abcd5")); + test(S("abcde"), 4, 1, SV("12345"), 4, 2, S("abcd5")); + test(S("abcde"), 4, 1, SV("12345"), 5, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345"), 5, 1, S("abcd")); + test(S("abcde"), 4, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 4, 1, SV("1234567890"), 0, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("1234567890"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 1, SV("1234567890"), 0, 5, S("abcd12345")); + test(S("abcde"), 4, 1, SV("1234567890"), 0, 9, S("abcd123456789")); + test(S("abcde"), 4, 1, SV("1234567890"), 0, 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, SV("1234567890"), 0, 11, S("abcd1234567890")); + test(S("abcde"), 4, 1, SV("1234567890"), 1, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("1234567890"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 1, SV("1234567890"), 1, 4, S("abcd2345")); + test(S("abcde"), 4, 1, SV("1234567890"), 1, 8, S("abcd23456789")); + test(S("abcde"), 4, 1, SV("1234567890"), 1, 9, S("abcd234567890")); + test(S("abcde"), 4, 1, SV("1234567890"), 1, 10, S("abcd234567890")); + test(S("abcde"), 4, 1, SV("1234567890"), 5, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("1234567890"), 5, 1, S("abcd6")); + test(S("abcde"), 4, 1, SV("1234567890"), 5, 2, S("abcd67")); + test(S("abcde"), 4, 1, SV("1234567890"), 5, 4, S("abcd6789")); + test(S("abcde"), 4, 1, SV("1234567890"), 5, 5, S("abcd67890")); + test(S("abcde"), 4, 1, SV("1234567890"), 5, 6, S("abcd67890")); + test(S("abcde"), 4, 1, SV("1234567890"), 9, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("1234567890"), 9, 1, S("abcd0")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test16() -{ - test(S("abcde"), 4, 1, SV("1234567890"), 9, 2, S("abcd0")); - test(S("abcde"), 4, 1, SV("1234567890"), 10, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("1234567890"), 10, 1, S("abcd")); - test(S("abcde"), 4, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 9, S("abcd234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 1, S("abcd1")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 5, S("abcd12345")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 9, S("abcd123456789")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 11, S("abcd1234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 19, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 19, 1, S("abcd0")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 19, 2, S("abcd0")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 20, 0, S("abcd")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 20, 1, S("abcd")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 4, 2, SV(""), 0, 0, S("abcd")); - test(S("abcde"), 4, 2, SV(""), 0, 1, S("abcd")); - test(S("abcde"), 4, 2, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 4, 2, SV("12345"), 0, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 2, SV("12345"), 0, 2, S("abcd12")); - test(S("abcde"), 4, 2, SV("12345"), 0, 4, S("abcd1234")); - test(S("abcde"), 4, 2, SV("12345"), 0, 5, S("abcd12345")); - test(S("abcde"), 4, 2, SV("12345"), 0, 6, S("abcd12345")); - test(S("abcde"), 4, 2, SV("12345"), 1, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 2, SV("12345"), 1, 2, S("abcd23")); - test(S("abcde"), 4, 2, SV("12345"), 1, 3, S("abcd234")); - test(S("abcde"), 4, 2, SV("12345"), 1, 4, S("abcd2345")); - test(S("abcde"), 4, 2, SV("12345"), 1, 5, S("abcd2345")); - test(S("abcde"), 4, 2, SV("12345"), 2, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345"), 2, 1, S("abcd3")); - test(S("abcde"), 4, 2, SV("12345"), 2, 2, S("abcd34")); - test(S("abcde"), 4, 2, SV("12345"), 2, 3, S("abcd345")); - test(S("abcde"), 4, 2, SV("12345"), 2, 4, S("abcd345")); - test(S("abcde"), 4, 2, SV("12345"), 4, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345"), 4, 1, S("abcd5")); - test(S("abcde"), 4, 2, SV("12345"), 4, 2, S("abcd5")); - test(S("abcde"), 4, 2, SV("12345"), 5, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345"), 5, 1, S("abcd")); - test(S("abcde"), 4, 2, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 4, 2, SV("1234567890"), 0, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("1234567890"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 2, SV("1234567890"), 0, 5, S("abcd12345")); - test(S("abcde"), 4, 2, SV("1234567890"), 0, 9, S("abcd123456789")); - test(S("abcde"), 4, 2, SV("1234567890"), 0, 10, S("abcd1234567890")); - test(S("abcde"), 4, 2, SV("1234567890"), 0, 11, S("abcd1234567890")); - test(S("abcde"), 4, 2, SV("1234567890"), 1, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("1234567890"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 2, SV("1234567890"), 1, 4, S("abcd2345")); - test(S("abcde"), 4, 2, SV("1234567890"), 1, 8, S("abcd23456789")); - test(S("abcde"), 4, 2, SV("1234567890"), 1, 9, S("abcd234567890")); - test(S("abcde"), 4, 2, SV("1234567890"), 1, 10, S("abcd234567890")); - test(S("abcde"), 4, 2, SV("1234567890"), 5, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("1234567890"), 5, 1, S("abcd6")); - test(S("abcde"), 4, 2, SV("1234567890"), 5, 2, S("abcd67")); - test(S("abcde"), 4, 2, SV("1234567890"), 5, 4, S("abcd6789")); - test(S("abcde"), 4, 2, SV("1234567890"), 5, 5, S("abcd67890")); - test(S("abcde"), 4, 2, SV("1234567890"), 5, 6, S("abcd67890")); - test(S("abcde"), 4, 2, SV("1234567890"), 9, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("1234567890"), 9, 1, S("abcd0")); - test(S("abcde"), 4, 2, SV("1234567890"), 9, 2, S("abcd0")); - test(S("abcde"), 4, 2, SV("1234567890"), 10, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("1234567890"), 10, 1, S("abcd")); - test(S("abcde"), 4, 2, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 10, S("abcd1234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 9, S("abcd234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 1, S("abcd1")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 5, S("abcd12345")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 9, S("abcd123456789")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 10, S("abcd1234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 11, S("abcd1234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 19, 0, S("abcd")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 19, 1, S("abcd0")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 19, 2, S("abcd0")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 20, 0, S("abcd")); - - return true; +TEST_CONSTEXPR_CXX20 bool test16() { + test(S("abcde"), 4, 1, SV("1234567890"), 9, 2, S("abcd0")); + test(S("abcde"), 4, 1, SV("1234567890"), 10, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("1234567890"), 10, 1, S("abcd")); + test(S("abcde"), 4, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 9, S("abcd234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 1, S("abcd1")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 5, S("abcd12345")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 9, S("abcd123456789")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 10, 11, S("abcd1234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 19, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 19, 1, S("abcd0")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 19, 2, S("abcd0")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 20, 0, S("abcd")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 20, 1, S("abcd")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 4, 2, SV(""), 0, 0, S("abcd")); + test(S("abcde"), 4, 2, SV(""), 0, 1, S("abcd")); + test(S("abcde"), 4, 2, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 4, 2, SV("12345"), 0, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 2, SV("12345"), 0, 2, S("abcd12")); + test(S("abcde"), 4, 2, SV("12345"), 0, 4, S("abcd1234")); + test(S("abcde"), 4, 2, SV("12345"), 0, 5, S("abcd12345")); + test(S("abcde"), 4, 2, SV("12345"), 0, 6, S("abcd12345")); + test(S("abcde"), 4, 2, SV("12345"), 1, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 2, SV("12345"), 1, 2, S("abcd23")); + test(S("abcde"), 4, 2, SV("12345"), 1, 3, S("abcd234")); + test(S("abcde"), 4, 2, SV("12345"), 1, 4, S("abcd2345")); + test(S("abcde"), 4, 2, SV("12345"), 1, 5, S("abcd2345")); + test(S("abcde"), 4, 2, SV("12345"), 2, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345"), 2, 1, S("abcd3")); + test(S("abcde"), 4, 2, SV("12345"), 2, 2, S("abcd34")); + test(S("abcde"), 4, 2, SV("12345"), 2, 3, S("abcd345")); + test(S("abcde"), 4, 2, SV("12345"), 2, 4, S("abcd345")); + test(S("abcde"), 4, 2, SV("12345"), 4, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345"), 4, 1, S("abcd5")); + test(S("abcde"), 4, 2, SV("12345"), 4, 2, S("abcd5")); + test(S("abcde"), 4, 2, SV("12345"), 5, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345"), 5, 1, S("abcd")); + test(S("abcde"), 4, 2, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 4, 2, SV("1234567890"), 0, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("1234567890"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 2, SV("1234567890"), 0, 5, S("abcd12345")); + test(S("abcde"), 4, 2, SV("1234567890"), 0, 9, S("abcd123456789")); + test(S("abcde"), 4, 2, SV("1234567890"), 0, 10, S("abcd1234567890")); + test(S("abcde"), 4, 2, SV("1234567890"), 0, 11, S("abcd1234567890")); + test(S("abcde"), 4, 2, SV("1234567890"), 1, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("1234567890"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 2, SV("1234567890"), 1, 4, S("abcd2345")); + test(S("abcde"), 4, 2, SV("1234567890"), 1, 8, S("abcd23456789")); + test(S("abcde"), 4, 2, SV("1234567890"), 1, 9, S("abcd234567890")); + test(S("abcde"), 4, 2, SV("1234567890"), 1, 10, S("abcd234567890")); + test(S("abcde"), 4, 2, SV("1234567890"), 5, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("1234567890"), 5, 1, S("abcd6")); + test(S("abcde"), 4, 2, SV("1234567890"), 5, 2, S("abcd67")); + test(S("abcde"), 4, 2, SV("1234567890"), 5, 4, S("abcd6789")); + test(S("abcde"), 4, 2, SV("1234567890"), 5, 5, S("abcd67890")); + test(S("abcde"), 4, 2, SV("1234567890"), 5, 6, S("abcd67890")); + test(S("abcde"), 4, 2, SV("1234567890"), 9, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("1234567890"), 9, 1, S("abcd0")); + test(S("abcde"), 4, 2, SV("1234567890"), 9, 2, S("abcd0")); + test(S("abcde"), 4, 2, SV("1234567890"), 10, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("1234567890"), 10, 1, S("abcd")); + test(S("abcde"), 4, 2, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 10, S("abcd1234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 9, S("abcd234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 18, S("abcd234567890123456789")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 1, S("abcd1")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 5, S("abcd12345")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 9, S("abcd123456789")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 10, S("abcd1234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 10, 11, S("abcd1234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 19, 0, S("abcd")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 19, 1, S("abcd0")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 19, 2, S("abcd0")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 20, 0, S("abcd")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test17() -{ - test(S("abcde"), 4, 2, SV("12345678901234567890"), 20, 1, S("abcd")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 5, 0, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 5, 0, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 5, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 5, 0, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 0, SV("12345"), 0, 2, S("abcde12")); - test(S("abcde"), 5, 0, SV("12345"), 0, 4, S("abcde1234")); - test(S("abcde"), 5, 0, SV("12345"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, 0, SV("12345"), 0, 6, S("abcde12345")); - test(S("abcde"), 5, 0, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 0, SV("12345"), 1, 2, S("abcde23")); - test(S("abcde"), 5, 0, SV("12345"), 1, 3, S("abcde234")); - test(S("abcde"), 5, 0, SV("12345"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, 0, SV("12345"), 1, 5, S("abcde2345")); - test(S("abcde"), 5, 0, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345"), 2, 1, S("abcde3")); - test(S("abcde"), 5, 0, SV("12345"), 2, 2, S("abcde34")); - test(S("abcde"), 5, 0, SV("12345"), 2, 3, S("abcde345")); - test(S("abcde"), 5, 0, SV("12345"), 2, 4, S("abcde345")); - test(S("abcde"), 5, 0, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345"), 4, 1, S("abcde5")); - test(S("abcde"), 5, 0, SV("12345"), 4, 2, S("abcde5")); - test(S("abcde"), 5, 0, SV("12345"), 5, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 5, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 5, 0, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("1234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 0, SV("1234567890"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, 0, SV("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcde"), 5, 0, SV("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, SV("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcde"), 5, 0, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("1234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 0, SV("1234567890"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, 0, SV("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcde"), 5, 0, SV("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, 0, SV("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcde"), 5, 0, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("1234567890"), 5, 1, S("abcde6")); - test(S("abcde"), 5, 0, SV("1234567890"), 5, 2, S("abcde67")); - test(S("abcde"), 5, 0, SV("1234567890"), 5, 4, S("abcde6789")); - test(S("abcde"), 5, 0, SV("1234567890"), 5, 5, S("abcde67890")); - test(S("abcde"), 5, 0, SV("1234567890"), 5, 6, S("abcde67890")); - test(S("abcde"), 5, 0, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("1234567890"), 9, 1, S("abcde0")); - test(S("abcde"), 5, 0, SV("1234567890"), 9, 2, S("abcde0")); - test(S("abcde"), 5, 0, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 5, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 5, 1, SV(""), 0, 0, S("abcde")); - test(S("abcde"), 5, 1, SV(""), 0, 1, S("abcde")); - test(S("abcde"), 5, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 5, 1, SV("12345"), 0, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 1, SV("12345"), 0, 2, S("abcde12")); - test(S("abcde"), 5, 1, SV("12345"), 0, 4, S("abcde1234")); - test(S("abcde"), 5, 1, SV("12345"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, 1, SV("12345"), 0, 6, S("abcde12345")); - test(S("abcde"), 5, 1, SV("12345"), 1, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 1, SV("12345"), 1, 2, S("abcde23")); - test(S("abcde"), 5, 1, SV("12345"), 1, 3, S("abcde234")); - test(S("abcde"), 5, 1, SV("12345"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, 1, SV("12345"), 1, 5, S("abcde2345")); - test(S("abcde"), 5, 1, SV("12345"), 2, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345"), 2, 1, S("abcde3")); - test(S("abcde"), 5, 1, SV("12345"), 2, 2, S("abcde34")); - test(S("abcde"), 5, 1, SV("12345"), 2, 3, S("abcde345")); - test(S("abcde"), 5, 1, SV("12345"), 2, 4, S("abcde345")); - test(S("abcde"), 5, 1, SV("12345"), 4, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345"), 4, 1, S("abcde5")); - test(S("abcde"), 5, 1, SV("12345"), 4, 2, S("abcde5")); - test(S("abcde"), 5, 1, SV("12345"), 5, 0, S("abcde")); - - return true; +TEST_CONSTEXPR_CXX20 bool test17() { + test(S("abcde"), 4, 2, SV("12345678901234567890"), 20, 1, S("abcd")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 5, 0, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 5, 0, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 5, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 5, 0, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 0, SV("12345"), 0, 2, S("abcde12")); + test(S("abcde"), 5, 0, SV("12345"), 0, 4, S("abcde1234")); + test(S("abcde"), 5, 0, SV("12345"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, 0, SV("12345"), 0, 6, S("abcde12345")); + test(S("abcde"), 5, 0, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 0, SV("12345"), 1, 2, S("abcde23")); + test(S("abcde"), 5, 0, SV("12345"), 1, 3, S("abcde234")); + test(S("abcde"), 5, 0, SV("12345"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, 0, SV("12345"), 1, 5, S("abcde2345")); + test(S("abcde"), 5, 0, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345"), 2, 1, S("abcde3")); + test(S("abcde"), 5, 0, SV("12345"), 2, 2, S("abcde34")); + test(S("abcde"), 5, 0, SV("12345"), 2, 3, S("abcde345")); + test(S("abcde"), 5, 0, SV("12345"), 2, 4, S("abcde345")); + test(S("abcde"), 5, 0, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345"), 4, 1, S("abcde5")); + test(S("abcde"), 5, 0, SV("12345"), 4, 2, S("abcde5")); + test(S("abcde"), 5, 0, SV("12345"), 5, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 5, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 5, 0, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("1234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 0, SV("1234567890"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, 0, SV("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcde"), 5, 0, SV("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, SV("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcde"), 5, 0, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("1234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 0, SV("1234567890"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, 0, SV("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcde"), 5, 0, SV("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, 0, SV("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcde"), 5, 0, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("1234567890"), 5, 1, S("abcde6")); + test(S("abcde"), 5, 0, SV("1234567890"), 5, 2, S("abcde67")); + test(S("abcde"), 5, 0, SV("1234567890"), 5, 4, S("abcde6789")); + test(S("abcde"), 5, 0, SV("1234567890"), 5, 5, S("abcde67890")); + test(S("abcde"), 5, 0, SV("1234567890"), 5, 6, S("abcde67890")); + test(S("abcde"), 5, 0, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("1234567890"), 9, 1, S("abcde0")); + test(S("abcde"), 5, 0, SV("1234567890"), 9, 2, S("abcde0")); + test(S("abcde"), 5, 0, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 5, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 5, 1, SV(""), 0, 0, S("abcde")); + test(S("abcde"), 5, 1, SV(""), 0, 1, S("abcde")); + test(S("abcde"), 5, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 5, 1, SV("12345"), 0, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 1, SV("12345"), 0, 2, S("abcde12")); + test(S("abcde"), 5, 1, SV("12345"), 0, 4, S("abcde1234")); + test(S("abcde"), 5, 1, SV("12345"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, 1, SV("12345"), 0, 6, S("abcde12345")); + test(S("abcde"), 5, 1, SV("12345"), 1, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 1, SV("12345"), 1, 2, S("abcde23")); + test(S("abcde"), 5, 1, SV("12345"), 1, 3, S("abcde234")); + test(S("abcde"), 5, 1, SV("12345"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, 1, SV("12345"), 1, 5, S("abcde2345")); + test(S("abcde"), 5, 1, SV("12345"), 2, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345"), 2, 1, S("abcde3")); + test(S("abcde"), 5, 1, SV("12345"), 2, 2, S("abcde34")); + test(S("abcde"), 5, 1, SV("12345"), 2, 3, S("abcde345")); + test(S("abcde"), 5, 1, SV("12345"), 2, 4, S("abcde345")); + test(S("abcde"), 5, 1, SV("12345"), 4, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345"), 4, 1, S("abcde5")); + test(S("abcde"), 5, 1, SV("12345"), 4, 2, S("abcde5")); + test(S("abcde"), 5, 1, SV("12345"), 5, 0, S("abcde")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test18() -{ - test(S("abcde"), 5, 1, SV("12345"), 5, 1, S("abcde")); - test(S("abcde"), 5, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 5, 1, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("1234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 1, SV("1234567890"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, 1, SV("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcde"), 5, 1, SV("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, 1, SV("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcde"), 5, 1, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("1234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 1, SV("1234567890"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, 1, SV("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcde"), 5, 1, SV("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, 1, SV("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcde"), 5, 1, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("1234567890"), 5, 1, S("abcde6")); - test(S("abcde"), 5, 1, SV("1234567890"), 5, 2, S("abcde67")); - test(S("abcde"), 5, 1, SV("1234567890"), 5, 4, S("abcde6789")); - test(S("abcde"), 5, 1, SV("1234567890"), 5, 5, S("abcde67890")); - test(S("abcde"), 5, 1, SV("1234567890"), 5, 6, S("abcde67890")); - test(S("abcde"), 5, 1, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("1234567890"), 9, 1, S("abcde0")); - test(S("abcde"), 5, 1, SV("1234567890"), 9, 2, S("abcde0")); - test(S("abcde"), 5, 1, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 5, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV(""), 0, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV(""), 0, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 0, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 0, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 0, 2, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 0, 4, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 0, 5, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 0, 6, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 1, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 1, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 1, 2, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 1, 3, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 1, 4, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 1, 5, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 2, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 2, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 2, 2, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 2, 3, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 2, 4, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 4, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 4, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 4, 2, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 5, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 5, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 0, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 0, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 0, 5, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 0, 9, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 0, 10, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 0, 11, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 1, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 1, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 1, 4, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 1, 8, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 1, 9, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 1, 10, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 5, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 5, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 5, 2, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 5, 4, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 5, 5, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 5, 6, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 9, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 9, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 9, 2, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 10, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 10, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), 11, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test18() { + test(S("abcde"), 5, 1, SV("12345"), 5, 1, S("abcde")); + test(S("abcde"), 5, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 5, 1, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("1234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 1, SV("1234567890"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, 1, SV("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcde"), 5, 1, SV("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, 1, SV("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcde"), 5, 1, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("1234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 1, SV("1234567890"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, 1, SV("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcde"), 5, 1, SV("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, 1, SV("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcde"), 5, 1, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("1234567890"), 5, 1, S("abcde6")); + test(S("abcde"), 5, 1, SV("1234567890"), 5, 2, S("abcde67")); + test(S("abcde"), 5, 1, SV("1234567890"), 5, 4, S("abcde6789")); + test(S("abcde"), 5, 1, SV("1234567890"), 5, 5, S("abcde67890")); + test(S("abcde"), 5, 1, SV("1234567890"), 5, 6, S("abcde67890")); + test(S("abcde"), 5, 1, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("1234567890"), 9, 1, S("abcde0")); + test(S("abcde"), 5, 1, SV("1234567890"), 9, 2, S("abcde0")); + test(S("abcde"), 5, 1, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 5, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV(""), 0, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV(""), 0, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 0, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 0, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 0, 2, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 0, 4, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 0, 5, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 0, 6, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 1, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 1, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 1, 2, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 1, 3, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 1, 4, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 1, 5, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 2, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 2, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 2, 2, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 2, 3, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 2, 4, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 4, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 4, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 4, 2, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 5, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 5, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 0, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 0, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 0, 5, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 0, 9, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 0, 10, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 0, 11, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 1, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 1, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 1, 4, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 1, 8, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 1, 9, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 1, 10, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 5, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 5, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 5, 2, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 5, 4, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 5, 5, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 5, 6, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 9, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 9, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 9, 2, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 10, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 10, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), 11, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test19() -{ - test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 0, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 0, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 0, 2, S("12abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 0, 4, S("1234abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 0, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 0, 6, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 1, 2, S("23abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 1, 3, S("234abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 1, 4, S("2345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 1, 5, S("2345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 2, 1, S("3abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 2, 2, S("34abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 2, 3, S("345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 2, 4, S("345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 4, 1, S("5abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 4, 2, S("5abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 11, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 4, S("2345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 8, S("23456789abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 9, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 10, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 1, S("6abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 2, S("67abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 4, S("6789abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 5, S("67890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 6, S("67890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 9, 1, S("0abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 9, 2, S("0abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 19, 1, S("0abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 19, 2, S("0abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 1, SV(""), 0, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV(""), 0, 1, S("bcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test19() { + test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 0, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 0, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 0, 2, S("12abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 0, 4, S("1234abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 0, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 0, 6, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 1, 2, S("23abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 1, 3, S("234abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 1, 4, S("2345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 1, 5, S("2345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 2, 1, S("3abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 2, 2, S("34abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 2, 3, S("345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 2, 4, S("345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 4, 1, S("5abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 4, 2, S("5abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 0, 11, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 4, S("2345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 8, S("23456789abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 9, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 1, 10, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 1, S("6abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 2, S("67abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 4, S("6789abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 5, S("67890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 5, 6, S("67890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 9, 1, S("0abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 9, 2, S("0abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 19, 1, S("0abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 19, 2, S("0abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 1, SV(""), 0, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV(""), 0, 1, S("bcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test20() -{ - test(S("abcdefghij"), 0, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 1, SV("12345"), 0, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 0, 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 0, 2, S("12bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 0, 4, S("1234bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 0, 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 0, 6, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 1, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 1, 1, S("2bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 1, 2, S("23bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 1, 3, S("234bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 1, 4, S("2345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 1, 5, S("2345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 2, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 2, 1, S("3bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 2, 2, S("34bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 2, 3, S("345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 2, 4, S("345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 4, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 4, 1, S("5bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 4, 2, S("5bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 5, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 5, 1, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 9, S("123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 11, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 1, S("2bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 4, S("2345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 8, S("23456789bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 9, S("234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 10, S("234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 1, S("6bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 2, S("67bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 4, S("6789bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 5, S("67890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 6, S("67890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 9, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 9, 1, S("0bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 9, 2, S("0bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 10, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 10, 1, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 1, S("2bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 9, S("234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 18, S("234567890123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 9, S("123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 11, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 19, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 19, 1, S("0bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 19, 2, S("0bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 20, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 20, 1, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 5, SV(""), 0, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV(""), 0, 1, S("fghij")); - test(S("abcdefghij"), 0, 5, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 5, SV("12345"), 0, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 0, 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 0, 2, S("12fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 0, 4, S("1234fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 0, 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 0, 6, S("12345fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 1, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 1, 1, S("2fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 1, 2, S("23fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 1, 3, S("234fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 1, 4, S("2345fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 1, 5, S("2345fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 2, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 2, 1, S("3fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 2, 2, S("34fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 2, 3, S("345fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 2, 4, S("345fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 4, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 4, 1, S("5fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 4, 2, S("5fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 5, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 5, 1, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 1, S("1fghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test20() { + test(S("abcdefghij"), 0, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 1, SV("12345"), 0, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 0, 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 0, 2, S("12bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 0, 4, S("1234bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 0, 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 0, 6, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 1, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 1, 1, S("2bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 1, 2, S("23bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 1, 3, S("234bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 1, 4, S("2345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 1, 5, S("2345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 2, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 2, 1, S("3bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 2, 2, S("34bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 2, 3, S("345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 2, 4, S("345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 4, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 4, 1, S("5bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 4, 2, S("5bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 5, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 5, 1, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 9, S("123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 0, 11, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 1, S("2bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 4, S("2345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 8, S("23456789bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 9, S("234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 1, 10, S("234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 1, S("6bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 2, S("67bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 4, S("6789bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 5, S("67890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 5, 6, S("67890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 9, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 9, 1, S("0bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 9, 2, S("0bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 10, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 10, 1, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 1, S("2bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 9, S("234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 18, S("234567890123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 9, S("123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 10, 11, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 19, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 19, 1, S("0bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 19, 2, S("0bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 20, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 20, 1, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 5, SV(""), 0, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV(""), 0, 1, S("fghij")); + test(S("abcdefghij"), 0, 5, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 5, SV("12345"), 0, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 0, 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 0, 2, S("12fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 0, 4, S("1234fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 0, 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 0, 6, S("12345fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 1, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 1, 1, S("2fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 1, 2, S("23fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 1, 3, S("234fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 1, 4, S("2345fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 1, 5, S("2345fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 2, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 2, 1, S("3fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 2, 2, S("34fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 2, 3, S("345fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 2, 4, S("345fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 4, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 4, 1, S("5fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 4, 2, S("5fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 5, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 5, 1, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 1, S("1fghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test21() -{ - test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 9, S("123456789fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 11, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 1, S("2fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 4, S("2345fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 8, S("23456789fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 9, S("234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 10, S("234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 1, S("6fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 2, S("67fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 4, S("6789fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 5, S("67890fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 6, S("67890fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 9, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 9, 1, S("0fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 9, 2, S("0fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 10, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 10, 1, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 19, S("1234567890123456789fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 20, S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 21, S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 1, S("2fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 9, S("234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 18, S("234567890123456789fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 19, S("2345678901234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 20, S("2345678901234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 9, S("123456789fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 11, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 19, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 19, 1, S("0fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 19, 2, S("0fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 20, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 20, 1, S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 9, SV(""), 0, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV(""), 0, 1, S("j")); - test(S("abcdefghij"), 0, 9, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 9, SV("12345"), 0, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 0, 1, S("1j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 0, 2, S("12j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 0, 4, S("1234j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 0, 5, S("12345j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 0, 6, S("12345j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 1, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 1, 1, S("2j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 1, 2, S("23j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 1, 3, S("234j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 1, 4, S("2345j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 1, 5, S("2345j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 2, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 2, 1, S("3j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 2, 2, S("34j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 2, 3, S("345j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 2, 4, S("345j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 4, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 4, 1, S("5j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 4, 2, S("5j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 5, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 5, 1, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 1, S("1j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 5, S("12345j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 9, S("123456789j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 11, S("1234567890j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 1, S("2j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 4, S("2345j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 8, S("23456789j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 9, S("234567890j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 10, S("234567890j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 1, S("6j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 2, S("67j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 4, S("6789j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 5, S("67890j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 6, S("67890j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 9, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 9, 1, S("0j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 9, 2, S("0j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 10, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 10, 1, S("j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 1, S("1j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 19, S("1234567890123456789j")); - - return true; +TEST_CONSTEXPR_CXX20 bool test21() { + test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 9, S("123456789fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 0, 11, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 1, S("2fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 4, S("2345fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 8, S("23456789fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 9, S("234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 1, 10, S("234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 1, S("6fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 2, S("67fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 4, S("6789fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 5, S("67890fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 5, 6, S("67890fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 9, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 9, 1, S("0fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 9, 2, S("0fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 10, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 10, 1, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 19, S("1234567890123456789fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 20, S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 0, 21, S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 1, S("2fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 9, S("234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 18, S("234567890123456789fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 19, S("2345678901234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 1, 20, S("2345678901234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 9, S("123456789fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 10, 11, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 19, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 19, 1, S("0fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 19, 2, S("0fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 20, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 20, 1, S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 9, SV(""), 0, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV(""), 0, 1, S("j")); + test(S("abcdefghij"), 0, 9, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 9, SV("12345"), 0, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 0, 1, S("1j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 0, 2, S("12j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 0, 4, S("1234j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 0, 5, S("12345j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 0, 6, S("12345j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 1, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 1, 1, S("2j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 1, 2, S("23j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 1, 3, S("234j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 1, 4, S("2345j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 1, 5, S("2345j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 2, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 2, 1, S("3j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 2, 2, S("34j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 2, 3, S("345j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 2, 4, S("345j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 4, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 4, 1, S("5j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 4, 2, S("5j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 5, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 5, 1, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 1, S("1j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 5, S("12345j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 9, S("123456789j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 0, 11, S("1234567890j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 1, S("2j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 4, S("2345j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 8, S("23456789j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 9, S("234567890j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 1, 10, S("234567890j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 1, S("6j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 2, S("67j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 4, S("6789j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 5, S("67890j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 5, 6, S("67890j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 9, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 9, 1, S("0j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 9, 2, S("0j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 10, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 10, 1, S("j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 1, S("1j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 19, S("1234567890123456789j")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test22() -{ - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 20, S("12345678901234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 21, S("12345678901234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 1, S("2j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 9, S("234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 18, S("234567890123456789j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 19, S("2345678901234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 20, S("2345678901234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 1, S("1j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 5, S("12345j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 9, S("123456789j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 11, S("1234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 19, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 19, 1, S("0j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 19, 2, S("0j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 20, 0, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 20, 1, S("j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 10, SV(""), 0, 0, S("")); - test(S("abcdefghij"), 0, 10, SV(""), 0, 1, S("")); - test(S("abcdefghij"), 0, 10, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 10, SV("12345"), 0, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 10, SV("12345"), 0, 2, S("12")); - test(S("abcdefghij"), 0, 10, SV("12345"), 0, 4, S("1234")); - test(S("abcdefghij"), 0, 10, SV("12345"), 0, 5, S("12345")); - test(S("abcdefghij"), 0, 10, SV("12345"), 0, 6, S("12345")); - test(S("abcdefghij"), 0, 10, SV("12345"), 1, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 10, SV("12345"), 1, 2, S("23")); - test(S("abcdefghij"), 0, 10, SV("12345"), 1, 3, S("234")); - test(S("abcdefghij"), 0, 10, SV("12345"), 1, 4, S("2345")); - test(S("abcdefghij"), 0, 10, SV("12345"), 1, 5, S("2345")); - test(S("abcdefghij"), 0, 10, SV("12345"), 2, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345"), 2, 1, S("3")); - test(S("abcdefghij"), 0, 10, SV("12345"), 2, 2, S("34")); - test(S("abcdefghij"), 0, 10, SV("12345"), 2, 3, S("345")); - test(S("abcdefghij"), 0, 10, SV("12345"), 2, 4, S("345")); - test(S("abcdefghij"), 0, 10, SV("12345"), 4, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345"), 4, 1, S("5")); - test(S("abcdefghij"), 0, 10, SV("12345"), 4, 2, S("5")); - test(S("abcdefghij"), 0, 10, SV("12345"), 5, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345"), 5, 1, S("")); - test(S("abcdefghij"), 0, 10, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 5, S("12345")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 9, S("123456789")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 11, S("1234567890")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 4, S("2345")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 8, S("23456789")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 9, S("234567890")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 10, S("234567890")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 1, S("6")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 2, S("67")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 4, S("6789")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 5, S("67890")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 6, S("67890")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 9, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 9, 1, S("0")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 9, 2, S("0")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 10, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 10, 1, S("")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 1, S("1")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 5, S("12345")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 19, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 19, 1, S("0")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 19, 2, S("0")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 20, 0, S("")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 20, 1, S("")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 11, SV(""), 0, 0, S("")); - test(S("abcdefghij"), 0, 11, SV(""), 0, 1, S("")); - test(S("abcdefghij"), 0, 11, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 11, SV("12345"), 0, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 11, SV("12345"), 0, 2, S("12")); - - return true; +TEST_CONSTEXPR_CXX20 bool test22() { + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 20, S("12345678901234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 0, 21, S("12345678901234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 1, S("2j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 9, S("234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 18, S("234567890123456789j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 19, S("2345678901234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 1, 20, S("2345678901234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 1, S("1j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 5, S("12345j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 9, S("123456789j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 10, 11, S("1234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 19, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 19, 1, S("0j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 19, 2, S("0j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 20, 0, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 20, 1, S("j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 10, SV(""), 0, 0, S("")); + test(S("abcdefghij"), 0, 10, SV(""), 0, 1, S("")); + test(S("abcdefghij"), 0, 10, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 10, SV("12345"), 0, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 10, SV("12345"), 0, 2, S("12")); + test(S("abcdefghij"), 0, 10, SV("12345"), 0, 4, S("1234")); + test(S("abcdefghij"), 0, 10, SV("12345"), 0, 5, S("12345")); + test(S("abcdefghij"), 0, 10, SV("12345"), 0, 6, S("12345")); + test(S("abcdefghij"), 0, 10, SV("12345"), 1, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 10, SV("12345"), 1, 2, S("23")); + test(S("abcdefghij"), 0, 10, SV("12345"), 1, 3, S("234")); + test(S("abcdefghij"), 0, 10, SV("12345"), 1, 4, S("2345")); + test(S("abcdefghij"), 0, 10, SV("12345"), 1, 5, S("2345")); + test(S("abcdefghij"), 0, 10, SV("12345"), 2, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345"), 2, 1, S("3")); + test(S("abcdefghij"), 0, 10, SV("12345"), 2, 2, S("34")); + test(S("abcdefghij"), 0, 10, SV("12345"), 2, 3, S("345")); + test(S("abcdefghij"), 0, 10, SV("12345"), 2, 4, S("345")); + test(S("abcdefghij"), 0, 10, SV("12345"), 4, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345"), 4, 1, S("5")); + test(S("abcdefghij"), 0, 10, SV("12345"), 4, 2, S("5")); + test(S("abcdefghij"), 0, 10, SV("12345"), 5, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345"), 5, 1, S("")); + test(S("abcdefghij"), 0, 10, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 5, S("12345")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 9, S("123456789")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 0, 11, S("1234567890")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 4, S("2345")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 8, S("23456789")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 9, S("234567890")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 1, 10, S("234567890")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 1, S("6")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 2, S("67")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 4, S("6789")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 5, S("67890")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 5, 6, S("67890")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 9, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 9, 1, S("0")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 9, 2, S("0")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 10, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 10, 1, S("")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 1, S("1")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 5, S("12345")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 19, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 19, 1, S("0")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 19, 2, S("0")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 20, 0, S("")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 20, 1, S("")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 11, SV(""), 0, 0, S("")); + test(S("abcdefghij"), 0, 11, SV(""), 0, 1, S("")); + test(S("abcdefghij"), 0, 11, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 11, SV("12345"), 0, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 11, SV("12345"), 0, 2, S("12")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test23() -{ - test(S("abcdefghij"), 0, 11, SV("12345"), 0, 4, S("1234")); - test(S("abcdefghij"), 0, 11, SV("12345"), 0, 5, S("12345")); - test(S("abcdefghij"), 0, 11, SV("12345"), 0, 6, S("12345")); - test(S("abcdefghij"), 0, 11, SV("12345"), 1, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 11, SV("12345"), 1, 2, S("23")); - test(S("abcdefghij"), 0, 11, SV("12345"), 1, 3, S("234")); - test(S("abcdefghij"), 0, 11, SV("12345"), 1, 4, S("2345")); - test(S("abcdefghij"), 0, 11, SV("12345"), 1, 5, S("2345")); - test(S("abcdefghij"), 0, 11, SV("12345"), 2, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345"), 2, 1, S("3")); - test(S("abcdefghij"), 0, 11, SV("12345"), 2, 2, S("34")); - test(S("abcdefghij"), 0, 11, SV("12345"), 2, 3, S("345")); - test(S("abcdefghij"), 0, 11, SV("12345"), 2, 4, S("345")); - test(S("abcdefghij"), 0, 11, SV("12345"), 4, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345"), 4, 1, S("5")); - test(S("abcdefghij"), 0, 11, SV("12345"), 4, 2, S("5")); - test(S("abcdefghij"), 0, 11, SV("12345"), 5, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345"), 5, 1, S("")); - test(S("abcdefghij"), 0, 11, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 5, S("12345")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 9, S("123456789")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 10, S("1234567890")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 11, S("1234567890")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 4, S("2345")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 8, S("23456789")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 9, S("234567890")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 10, S("234567890")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 1, S("6")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 2, S("67")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 4, S("6789")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 5, S("67890")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 6, S("67890")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 9, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 9, 1, S("0")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 9, 2, S("0")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 10, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 10, 1, S("")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 1, S("1")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 5, S("12345")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 19, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 19, 1, S("0")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 19, 2, S("0")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 20, 0, S("")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 20, 1, S("")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 0, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 0, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 0, 2, S("a12bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 0, 4, S("a1234bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 0, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 0, 6, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 1, 2, S("a23bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 1, 3, S("a234bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 1, 4, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 1, 5, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 2, 1, S("a3bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 2, 2, S("a34bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 2, 3, S("a345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 2, 4, S("a345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 4, 1, S("a5bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 4, 2, S("a5bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 11, S("a1234567890bcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test23() { + test(S("abcdefghij"), 0, 11, SV("12345"), 0, 4, S("1234")); + test(S("abcdefghij"), 0, 11, SV("12345"), 0, 5, S("12345")); + test(S("abcdefghij"), 0, 11, SV("12345"), 0, 6, S("12345")); + test(S("abcdefghij"), 0, 11, SV("12345"), 1, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 11, SV("12345"), 1, 2, S("23")); + test(S("abcdefghij"), 0, 11, SV("12345"), 1, 3, S("234")); + test(S("abcdefghij"), 0, 11, SV("12345"), 1, 4, S("2345")); + test(S("abcdefghij"), 0, 11, SV("12345"), 1, 5, S("2345")); + test(S("abcdefghij"), 0, 11, SV("12345"), 2, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345"), 2, 1, S("3")); + test(S("abcdefghij"), 0, 11, SV("12345"), 2, 2, S("34")); + test(S("abcdefghij"), 0, 11, SV("12345"), 2, 3, S("345")); + test(S("abcdefghij"), 0, 11, SV("12345"), 2, 4, S("345")); + test(S("abcdefghij"), 0, 11, SV("12345"), 4, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345"), 4, 1, S("5")); + test(S("abcdefghij"), 0, 11, SV("12345"), 4, 2, S("5")); + test(S("abcdefghij"), 0, 11, SV("12345"), 5, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345"), 5, 1, S("")); + test(S("abcdefghij"), 0, 11, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 5, S("12345")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 9, S("123456789")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 10, S("1234567890")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 0, 11, S("1234567890")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 4, S("2345")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 8, S("23456789")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 9, S("234567890")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 1, 10, S("234567890")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 1, S("6")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 2, S("67")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 4, S("6789")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 5, S("67890")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 5, 6, S("67890")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 9, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 9, 1, S("0")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 9, 2, S("0")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 10, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 10, 1, S("")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 1, S("1")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 5, S("12345")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 19, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 19, 1, S("0")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 19, 2, S("0")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 20, 0, S("")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 20, 1, S("")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 0, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 0, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 0, 2, S("a12bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 0, 4, S("a1234bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 0, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 0, 6, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 1, 2, S("a23bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 1, 3, S("a234bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 1, 4, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 1, 5, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 2, 1, S("a3bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 2, 2, S("a34bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 2, 3, S("a345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 2, 4, S("a345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 4, 1, S("a5bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 4, 2, S("a5bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 0, 11, S("a1234567890bcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test24() -{ - test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 4, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 8, S("a23456789bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 9, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 10, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 1, S("a6bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 2, S("a67bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 4, S("a6789bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 5, S("a67890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 6, S("a67890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 9, 1, S("a0bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 9, 2, S("a0bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 19, 1, S("a0bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 19, 2, S("a0bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 1, SV(""), 0, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV(""), 0, 1, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 1, SV("12345"), 0, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 0, 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 0, 2, S("a12cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 0, 4, S("a1234cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 0, 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 0, 6, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 1, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 1, 1, S("a2cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 1, 2, S("a23cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 1, 3, S("a234cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 1, 4, S("a2345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 1, 5, S("a2345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 2, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 2, 1, S("a3cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 2, 2, S("a34cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 2, 3, S("a345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 2, 4, S("a345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 4, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 4, 1, S("a5cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 4, 2, S("a5cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 5, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 5, 1, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 9, S("a123456789cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 11, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 1, S("a2cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 4, S("a2345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 8, S("a23456789cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 9, S("a234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 10, S("a234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 1, S("a6cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 2, S("a67cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 4, S("a6789cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 5, S("a67890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 6, S("a67890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 9, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 9, 1, S("a0cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 9, 2, S("a0cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 10, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 10, 1, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 1, S("a2cdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test24() { + test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 4, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 8, S("a23456789bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 9, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 1, 10, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 1, S("a6bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 2, S("a67bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 4, S("a6789bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 5, S("a67890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 5, 6, S("a67890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 9, 1, S("a0bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 9, 2, S("a0bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 19, 1, S("a0bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 19, 2, S("a0bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 1, SV(""), 0, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV(""), 0, 1, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 1, SV("12345"), 0, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 0, 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 0, 2, S("a12cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 0, 4, S("a1234cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 0, 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 0, 6, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 1, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 1, 1, S("a2cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 1, 2, S("a23cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 1, 3, S("a234cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 1, 4, S("a2345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 1, 5, S("a2345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 2, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 2, 1, S("a3cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 2, 2, S("a34cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 2, 3, S("a345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 2, 4, S("a345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 4, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 4, 1, S("a5cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 4, 2, S("a5cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 5, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 5, 1, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 9, S("a123456789cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 0, 11, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 1, S("a2cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 4, S("a2345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 8, S("a23456789cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 9, S("a234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 1, 10, S("a234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 1, S("a6cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 2, S("a67cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 4, S("a6789cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 5, S("a67890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 5, 6, S("a67890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 9, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 9, 1, S("a0cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 9, 2, S("a0cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 10, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 10, 1, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 1, S("a2cdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test25() -{ - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 9, S("a234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 9, S("a123456789cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 11, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 19, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 19, 1, S("a0cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 19, 2, S("a0cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 20, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 20, 1, S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 4, SV(""), 0, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV(""), 0, 1, S("afghij")); - test(S("abcdefghij"), 1, 4, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 4, SV("12345"), 0, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 0, 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 0, 2, S("a12fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 0, 4, S("a1234fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 0, 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 0, 6, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 1, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 1, 1, S("a2fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 1, 2, S("a23fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 1, 3, S("a234fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 1, 4, S("a2345fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 1, 5, S("a2345fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 2, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 2, 1, S("a3fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 2, 2, S("a34fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 2, 3, S("a345fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 2, 4, S("a345fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 4, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 4, 1, S("a5fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 4, 2, S("a5fghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 5, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 5, 1, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 9, S("a123456789fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 11, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 1, S("a2fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 4, S("a2345fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 8, S("a23456789fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 9, S("a234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 10, S("a234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 1, S("a6fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 2, S("a67fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 4, S("a6789fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 5, S("a67890fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 6, S("a67890fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 9, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 9, 1, S("a0fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 9, 2, S("a0fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 10, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 10, 1, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 19, S("a1234567890123456789fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 20, S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 21, S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 1, S("a2fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 9, S("a234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 18, S("a234567890123456789fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 19, S("a2345678901234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 20, S("a2345678901234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 9, S("a123456789fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 11, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 19, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 19, 1, S("a0fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 19, 2, S("a0fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 20, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 20, 1, S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 8, SV(""), 0, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV(""), 0, 1, S("aj")); - test(S("abcdefghij"), 1, 8, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 8, SV("12345"), 0, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345"), 0, 1, S("a1j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 0, 2, S("a12j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 0, 4, S("a1234j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 0, 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 0, 6, S("a12345j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 1, 0, S("aj")); - - return true; +TEST_CONSTEXPR_CXX20 bool test25() { + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 9, S("a234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 9, S("a123456789cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 10, 11, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 19, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 19, 1, S("a0cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 19, 2, S("a0cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 20, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 20, 1, S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 4, SV(""), 0, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV(""), 0, 1, S("afghij")); + test(S("abcdefghij"), 1, 4, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 4, SV("12345"), 0, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 0, 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 0, 2, S("a12fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 0, 4, S("a1234fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 0, 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 0, 6, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 1, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 1, 1, S("a2fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 1, 2, S("a23fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 1, 3, S("a234fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 1, 4, S("a2345fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 1, 5, S("a2345fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 2, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 2, 1, S("a3fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 2, 2, S("a34fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 2, 3, S("a345fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 2, 4, S("a345fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 4, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 4, 1, S("a5fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 4, 2, S("a5fghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 5, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 5, 1, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 9, S("a123456789fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 0, 11, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 1, S("a2fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 4, S("a2345fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 8, S("a23456789fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 9, S("a234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 1, 10, S("a234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 1, S("a6fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 2, S("a67fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 4, S("a6789fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 5, S("a67890fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 5, 6, S("a67890fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 9, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 9, 1, S("a0fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 9, 2, S("a0fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 10, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 10, 1, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 19, S("a1234567890123456789fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 20, S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 0, 21, S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 1, S("a2fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 9, S("a234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 18, S("a234567890123456789fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 19, S("a2345678901234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 1, 20, S("a2345678901234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 9, S("a123456789fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 10, 11, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 19, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 19, 1, S("a0fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 19, 2, S("a0fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 20, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 20, 1, S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 8, SV(""), 0, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV(""), 0, 1, S("aj")); + test(S("abcdefghij"), 1, 8, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 8, SV("12345"), 0, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345"), 0, 1, S("a1j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 0, 2, S("a12j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 0, 4, S("a1234j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 0, 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 0, 6, S("a12345j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 1, 0, S("aj")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test26() -{ - test(S("abcdefghij"), 1, 8, SV("12345"), 1, 1, S("a2j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 1, 2, S("a23j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 1, 3, S("a234j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 1, 4, S("a2345j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 1, 5, S("a2345j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 2, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345"), 2, 1, S("a3j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 2, 2, S("a34j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 2, 3, S("a345j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 2, 4, S("a345j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 4, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345"), 4, 1, S("a5j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 4, 2, S("a5j")); - test(S("abcdefghij"), 1, 8, SV("12345"), 5, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345"), 5, 1, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 1, S("a1j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 9, S("a123456789j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 11, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 1, S("a2j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 4, S("a2345j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 8, S("a23456789j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 9, S("a234567890j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 10, S("a234567890j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 1, S("a6j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 2, S("a67j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 4, S("a6789j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 5, S("a67890j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 6, S("a67890j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 9, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 9, 1, S("a0j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 9, 2, S("a0j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 10, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 10, 1, S("aj")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 1, S("a1j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 19, S("a1234567890123456789j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 20, S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 21, S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 1, S("a2j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 9, S("a234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 18, S("a234567890123456789j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 19, S("a2345678901234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 20, S("a2345678901234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 1, S("a1j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 9, S("a123456789j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 11, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 19, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 19, 1, S("a0j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 19, 2, S("a0j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 20, 0, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 20, 1, S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 9, SV(""), 0, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV(""), 0, 1, S("a")); - test(S("abcdefghij"), 1, 9, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 9, SV("12345"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 9, SV("12345"), 0, 2, S("a12")); - test(S("abcdefghij"), 1, 9, SV("12345"), 0, 4, S("a1234")); - test(S("abcdefghij"), 1, 9, SV("12345"), 0, 5, S("a12345")); - test(S("abcdefghij"), 1, 9, SV("12345"), 0, 6, S("a12345")); - test(S("abcdefghij"), 1, 9, SV("12345"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 9, SV("12345"), 1, 2, S("a23")); - test(S("abcdefghij"), 1, 9, SV("12345"), 1, 3, S("a234")); - test(S("abcdefghij"), 1, 9, SV("12345"), 1, 4, S("a2345")); - test(S("abcdefghij"), 1, 9, SV("12345"), 1, 5, S("a2345")); - test(S("abcdefghij"), 1, 9, SV("12345"), 2, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345"), 2, 1, S("a3")); - test(S("abcdefghij"), 1, 9, SV("12345"), 2, 2, S("a34")); - test(S("abcdefghij"), 1, 9, SV("12345"), 2, 3, S("a345")); - test(S("abcdefghij"), 1, 9, SV("12345"), 2, 4, S("a345")); - test(S("abcdefghij"), 1, 9, SV("12345"), 4, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345"), 4, 1, S("a5")); - test(S("abcdefghij"), 1, 9, SV("12345"), 4, 2, S("a5")); - test(S("abcdefghij"), 1, 9, SV("12345"), 5, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345"), 5, 1, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 5, S("a12345")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 9, S("a123456789")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 11, S("a1234567890")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 4, S("a2345")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 8, S("a23456789")); - - return true; +TEST_CONSTEXPR_CXX20 bool test26() { + test(S("abcdefghij"), 1, 8, SV("12345"), 1, 1, S("a2j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 1, 2, S("a23j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 1, 3, S("a234j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 1, 4, S("a2345j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 1, 5, S("a2345j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 2, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345"), 2, 1, S("a3j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 2, 2, S("a34j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 2, 3, S("a345j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 2, 4, S("a345j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 4, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345"), 4, 1, S("a5j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 4, 2, S("a5j")); + test(S("abcdefghij"), 1, 8, SV("12345"), 5, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345"), 5, 1, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 1, S("a1j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 9, S("a123456789j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 0, 11, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 1, S("a2j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 4, S("a2345j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 8, S("a23456789j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 9, S("a234567890j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 1, 10, S("a234567890j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 1, S("a6j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 2, S("a67j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 4, S("a6789j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 5, S("a67890j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 5, 6, S("a67890j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 9, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 9, 1, S("a0j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 9, 2, S("a0j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 10, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 10, 1, S("aj")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 1, S("a1j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 19, S("a1234567890123456789j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 20, S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 0, 21, S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 1, S("a2j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 9, S("a234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 18, S("a234567890123456789j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 19, S("a2345678901234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 1, 20, S("a2345678901234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 1, S("a1j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 9, S("a123456789j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 10, 11, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 19, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 19, 1, S("a0j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 19, 2, S("a0j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 20, 0, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 20, 1, S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 9, SV(""), 0, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV(""), 0, 1, S("a")); + test(S("abcdefghij"), 1, 9, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 9, SV("12345"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 9, SV("12345"), 0, 2, S("a12")); + test(S("abcdefghij"), 1, 9, SV("12345"), 0, 4, S("a1234")); + test(S("abcdefghij"), 1, 9, SV("12345"), 0, 5, S("a12345")); + test(S("abcdefghij"), 1, 9, SV("12345"), 0, 6, S("a12345")); + test(S("abcdefghij"), 1, 9, SV("12345"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 9, SV("12345"), 1, 2, S("a23")); + test(S("abcdefghij"), 1, 9, SV("12345"), 1, 3, S("a234")); + test(S("abcdefghij"), 1, 9, SV("12345"), 1, 4, S("a2345")); + test(S("abcdefghij"), 1, 9, SV("12345"), 1, 5, S("a2345")); + test(S("abcdefghij"), 1, 9, SV("12345"), 2, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345"), 2, 1, S("a3")); + test(S("abcdefghij"), 1, 9, SV("12345"), 2, 2, S("a34")); + test(S("abcdefghij"), 1, 9, SV("12345"), 2, 3, S("a345")); + test(S("abcdefghij"), 1, 9, SV("12345"), 2, 4, S("a345")); + test(S("abcdefghij"), 1, 9, SV("12345"), 4, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345"), 4, 1, S("a5")); + test(S("abcdefghij"), 1, 9, SV("12345"), 4, 2, S("a5")); + test(S("abcdefghij"), 1, 9, SV("12345"), 5, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345"), 5, 1, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 5, S("a12345")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 9, S("a123456789")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 0, 11, S("a1234567890")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 4, S("a2345")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 8, S("a23456789")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test27() -{ - test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 9, S("a234567890")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 10, S("a234567890")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 1, S("a6")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 2, S("a67")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 4, S("a6789")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 5, S("a67890")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 6, S("a67890")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 9, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 9, 1, S("a0")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 9, 2, S("a0")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 10, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 10, 1, S("a")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 1, S("a1")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 19, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 19, 1, S("a0")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 19, 2, S("a0")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 20, 0, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 20, 1, S("a")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 10, SV(""), 0, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV(""), 0, 1, S("a")); - test(S("abcdefghij"), 1, 10, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 10, SV("12345"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 10, SV("12345"), 0, 2, S("a12")); - test(S("abcdefghij"), 1, 10, SV("12345"), 0, 4, S("a1234")); - test(S("abcdefghij"), 1, 10, SV("12345"), 0, 5, S("a12345")); - test(S("abcdefghij"), 1, 10, SV("12345"), 0, 6, S("a12345")); - test(S("abcdefghij"), 1, 10, SV("12345"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 10, SV("12345"), 1, 2, S("a23")); - test(S("abcdefghij"), 1, 10, SV("12345"), 1, 3, S("a234")); - test(S("abcdefghij"), 1, 10, SV("12345"), 1, 4, S("a2345")); - test(S("abcdefghij"), 1, 10, SV("12345"), 1, 5, S("a2345")); - test(S("abcdefghij"), 1, 10, SV("12345"), 2, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345"), 2, 1, S("a3")); - test(S("abcdefghij"), 1, 10, SV("12345"), 2, 2, S("a34")); - test(S("abcdefghij"), 1, 10, SV("12345"), 2, 3, S("a345")); - test(S("abcdefghij"), 1, 10, SV("12345"), 2, 4, S("a345")); - test(S("abcdefghij"), 1, 10, SV("12345"), 4, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345"), 4, 1, S("a5")); - test(S("abcdefghij"), 1, 10, SV("12345"), 4, 2, S("a5")); - test(S("abcdefghij"), 1, 10, SV("12345"), 5, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345"), 5, 1, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 5, S("a12345")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 9, S("a123456789")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 11, S("a1234567890")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 4, S("a2345")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 8, S("a23456789")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 9, S("a234567890")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 10, S("a234567890")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 1, S("a6")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 2, S("a67")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 4, S("a6789")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 5, S("a67890")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 6, S("a67890")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 9, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 9, 1, S("a0")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 9, 2, S("a0")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 10, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 10, 1, S("a")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); - - return true; +TEST_CONSTEXPR_CXX20 bool test27() { + test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 9, S("a234567890")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 1, 10, S("a234567890")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 1, S("a6")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 2, S("a67")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 4, S("a6789")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 5, S("a67890")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 5, 6, S("a67890")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 9, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 9, 1, S("a0")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 9, 2, S("a0")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 10, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 10, 1, S("a")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 1, S("a1")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 19, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 19, 1, S("a0")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 19, 2, S("a0")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 20, 0, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 20, 1, S("a")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 10, SV(""), 0, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV(""), 0, 1, S("a")); + test(S("abcdefghij"), 1, 10, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 10, SV("12345"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 10, SV("12345"), 0, 2, S("a12")); + test(S("abcdefghij"), 1, 10, SV("12345"), 0, 4, S("a1234")); + test(S("abcdefghij"), 1, 10, SV("12345"), 0, 5, S("a12345")); + test(S("abcdefghij"), 1, 10, SV("12345"), 0, 6, S("a12345")); + test(S("abcdefghij"), 1, 10, SV("12345"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 10, SV("12345"), 1, 2, S("a23")); + test(S("abcdefghij"), 1, 10, SV("12345"), 1, 3, S("a234")); + test(S("abcdefghij"), 1, 10, SV("12345"), 1, 4, S("a2345")); + test(S("abcdefghij"), 1, 10, SV("12345"), 1, 5, S("a2345")); + test(S("abcdefghij"), 1, 10, SV("12345"), 2, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345"), 2, 1, S("a3")); + test(S("abcdefghij"), 1, 10, SV("12345"), 2, 2, S("a34")); + test(S("abcdefghij"), 1, 10, SV("12345"), 2, 3, S("a345")); + test(S("abcdefghij"), 1, 10, SV("12345"), 2, 4, S("a345")); + test(S("abcdefghij"), 1, 10, SV("12345"), 4, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345"), 4, 1, S("a5")); + test(S("abcdefghij"), 1, 10, SV("12345"), 4, 2, S("a5")); + test(S("abcdefghij"), 1, 10, SV("12345"), 5, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345"), 5, 1, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 5, S("a12345")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 9, S("a123456789")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 0, 11, S("a1234567890")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 4, S("a2345")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 8, S("a23456789")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 9, S("a234567890")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 1, 10, S("a234567890")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 1, S("a6")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 2, S("a67")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 4, S("a6789")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 5, S("a67890")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 5, 6, S("a67890")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 9, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 9, 1, S("a0")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 9, 2, S("a0")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 10, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 10, 1, S("a")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test28() -{ - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 1, S("a1")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 19, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 19, 1, S("a0")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 19, 2, S("a0")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 20, 0, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 20, 1, S("a")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 0, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 0, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 0, 2, S("abcde12fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 0, 4, S("abcde1234fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 0, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 0, 6, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 1, 2, S("abcde23fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 1, 3, S("abcde234fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 1, 4, S("abcde2345fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 1, 5, S("abcde2345fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 2, 1, S("abcde3fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 2, 2, S("abcde34fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 2, 3, S("abcde345fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 2, 4, S("abcde345fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 4, 1, S("abcde5fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 4, 2, S("abcde5fghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 11, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 4, S("abcde2345fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 8, S("abcde23456789fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 9, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 10, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 1, S("abcde6fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 2, S("abcde67fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 4, S("abcde6789fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 5, S("abcde67890fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 6, S("abcde67890fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 9, 1, S("abcde0fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 9, 2, S("abcde0fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 9, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 19, 1, S("abcde0fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 19, 2, S("abcde0fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 1, SV(""), 0, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV(""), 0, 1, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 1, SV("12345"), 0, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 0, 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 0, 2, S("abcde12ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 0, 4, S("abcde1234ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 0, 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 0, 6, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 1, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 1, 1, S("abcde2ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 1, 2, S("abcde23ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 1, 3, S("abcde234ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 1, 4, S("abcde2345ghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test28() { + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 1, S("a1")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 19, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 19, 1, S("a0")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 19, 2, S("a0")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 20, 0, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 20, 1, S("a")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 0, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 0, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 0, 2, S("abcde12fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 0, 4, S("abcde1234fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 0, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 0, 6, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 1, 2, S("abcde23fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 1, 3, S("abcde234fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 1, 4, S("abcde2345fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 1, 5, S("abcde2345fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 2, 1, S("abcde3fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 2, 2, S("abcde34fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 2, 3, S("abcde345fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 2, 4, S("abcde345fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 4, 1, S("abcde5fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 4, 2, S("abcde5fghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 0, 11, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 4, S("abcde2345fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 8, S("abcde23456789fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 9, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 1, 10, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 1, S("abcde6fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 2, S("abcde67fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 4, S("abcde6789fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 5, S("abcde67890fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 5, 6, S("abcde67890fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 9, 1, S("abcde0fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 9, 2, S("abcde0fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 9, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 19, 1, S("abcde0fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 19, 2, S("abcde0fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 1, SV(""), 0, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV(""), 0, 1, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 1, SV("12345"), 0, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 0, 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 0, 2, S("abcde12ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 0, 4, S("abcde1234ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 0, 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 0, 6, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 1, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 1, 1, S("abcde2ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 1, 2, S("abcde23ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 1, 3, S("abcde234ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 1, 4, S("abcde2345ghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test29() -{ - test(S("abcdefghij"), 5, 1, SV("12345"), 1, 5, S("abcde2345ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 2, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 2, 1, S("abcde3ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 2, 2, S("abcde34ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 2, 3, S("abcde345ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 2, 4, S("abcde345ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 4, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 4, 1, S("abcde5ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 4, 2, S("abcde5ghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 5, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 5, 1, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 9, S("abcde123456789ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 11, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 1, S("abcde2ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 4, S("abcde2345ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 8, S("abcde23456789ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 9, S("abcde234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 10, S("abcde234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 1, S("abcde6ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 2, S("abcde67ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 4, S("abcde6789ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 5, S("abcde67890ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 6, S("abcde67890ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 9, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 9, 1, S("abcde0ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 9, 2, S("abcde0ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 10, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 10, 1, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 1, S("abcde2ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 9, S("abcde234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 9, S("abcde123456789ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 11, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 19, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 19, 1, S("abcde0ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 19, 2, S("abcde0ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 20, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 20, 1, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 2, SV(""), 0, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV(""), 0, 1, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 2, SV("12345"), 0, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 0, 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 0, 2, S("abcde12hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 0, 4, S("abcde1234hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 0, 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 0, 6, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 1, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 1, 1, S("abcde2hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 1, 2, S("abcde23hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 1, 3, S("abcde234hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 1, 4, S("abcde2345hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 1, 5, S("abcde2345hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 2, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 2, 1, S("abcde3hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 2, 2, S("abcde34hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 2, 3, S("abcde345hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 2, 4, S("abcde345hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 4, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 4, 1, S("abcde5hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 4, 2, S("abcde5hij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 5, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 5, 1, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 9, S("abcde123456789hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 11, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 1, S("abcde2hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 4, S("abcde2345hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 8, S("abcde23456789hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 9, S("abcde234567890hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 10, S("abcde234567890hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 1, S("abcde6hij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test29() { + test(S("abcdefghij"), 5, 1, SV("12345"), 1, 5, S("abcde2345ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 2, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 2, 1, S("abcde3ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 2, 2, S("abcde34ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 2, 3, S("abcde345ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 2, 4, S("abcde345ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 4, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 4, 1, S("abcde5ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 4, 2, S("abcde5ghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 5, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 5, 1, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 9, S("abcde123456789ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 0, 11, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 1, S("abcde2ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 4, S("abcde2345ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 8, S("abcde23456789ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 9, S("abcde234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 1, 10, S("abcde234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 1, S("abcde6ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 2, S("abcde67ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 4, S("abcde6789ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 5, S("abcde67890ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 5, 6, S("abcde67890ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 9, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 9, 1, S("abcde0ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 9, 2, S("abcde0ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 10, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 10, 1, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 1, S("abcde2ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 9, S("abcde234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 9, S("abcde123456789ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 10, 11, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 19, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 19, 1, S("abcde0ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 19, 2, S("abcde0ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 20, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 20, 1, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 2, SV(""), 0, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV(""), 0, 1, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 2, SV("12345"), 0, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 0, 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 0, 2, S("abcde12hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 0, 4, S("abcde1234hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 0, 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 0, 6, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 1, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 1, 1, S("abcde2hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 1, 2, S("abcde23hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 1, 3, S("abcde234hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 1, 4, S("abcde2345hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 1, 5, S("abcde2345hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 2, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 2, 1, S("abcde3hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 2, 2, S("abcde34hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 2, 3, S("abcde345hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 2, 4, S("abcde345hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 4, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 4, 1, S("abcde5hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 4, 2, S("abcde5hij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 5, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 5, 1, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 9, S("abcde123456789hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 0, 11, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 1, S("abcde2hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 4, S("abcde2345hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 8, S("abcde23456789hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 9, S("abcde234567890hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 1, 10, S("abcde234567890hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 1, S("abcde6hij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test30() -{ - test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 2, S("abcde67hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 4, S("abcde6789hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 5, S("abcde67890hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 6, S("abcde67890hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 9, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 9, 1, S("abcde0hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 9, 2, S("abcde0hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 10, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 10, 1, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 1, S("abcde2hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 9, S("abcde234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 9, S("abcde123456789hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 11, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 19, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 19, 1, S("abcde0hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 19, 2, S("abcde0hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 20, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 20, 1, S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 4, SV(""), 0, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV(""), 0, 1, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 4, SV("12345"), 0, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345"), 0, 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 0, 2, S("abcde12j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 0, 4, S("abcde1234j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 0, 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 0, 6, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 1, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345"), 1, 1, S("abcde2j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 1, 2, S("abcde23j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 1, 3, S("abcde234j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 1, 4, S("abcde2345j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 1, 5, S("abcde2345j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 2, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345"), 2, 1, S("abcde3j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 2, 2, S("abcde34j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 2, 3, S("abcde345j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 2, 4, S("abcde345j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 4, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345"), 4, 1, S("abcde5j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 4, 2, S("abcde5j")); - test(S("abcdefghij"), 5, 4, SV("12345"), 5, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345"), 5, 1, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 9, S("abcde123456789j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 11, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 1, S("abcde2j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 4, S("abcde2345j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 8, S("abcde23456789j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 9, S("abcde234567890j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 10, S("abcde234567890j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 1, S("abcde6j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 2, S("abcde67j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 4, S("abcde6789j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 5, S("abcde67890j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 6, S("abcde67890j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 9, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 9, 1, S("abcde0j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 9, 2, S("abcde0j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 10, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 10, 1, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 1, S("abcde2j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 9, S("abcde234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 9, S("abcde123456789j")); - - return true; +TEST_CONSTEXPR_CXX20 bool test30() { + test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 2, S("abcde67hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 4, S("abcde6789hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 5, S("abcde67890hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 5, 6, S("abcde67890hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 9, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 9, 1, S("abcde0hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 9, 2, S("abcde0hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 10, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 10, 1, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 1, S("abcde2hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 9, S("abcde234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 9, S("abcde123456789hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 10, 11, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 19, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 19, 1, S("abcde0hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 19, 2, S("abcde0hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 20, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 20, 1, S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 4, SV(""), 0, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV(""), 0, 1, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 4, SV("12345"), 0, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345"), 0, 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 0, 2, S("abcde12j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 0, 4, S("abcde1234j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 0, 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 0, 6, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 1, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345"), 1, 1, S("abcde2j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 1, 2, S("abcde23j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 1, 3, S("abcde234j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 1, 4, S("abcde2345j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 1, 5, S("abcde2345j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 2, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345"), 2, 1, S("abcde3j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 2, 2, S("abcde34j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 2, 3, S("abcde345j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 2, 4, S("abcde345j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 4, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345"), 4, 1, S("abcde5j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 4, 2, S("abcde5j")); + test(S("abcdefghij"), 5, 4, SV("12345"), 5, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345"), 5, 1, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 9, S("abcde123456789j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 0, 11, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 1, S("abcde2j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 4, S("abcde2345j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 8, S("abcde23456789j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 9, S("abcde234567890j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 1, 10, S("abcde234567890j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 1, S("abcde6j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 2, S("abcde67j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 4, S("abcde6789j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 5, S("abcde67890j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 5, 6, S("abcde67890j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 9, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 9, 1, S("abcde0j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 9, 2, S("abcde0j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 10, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 10, 1, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 1, S("abcde2j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 9, S("abcde234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 9, S("abcde123456789j")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test31() -{ - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 11, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 19, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 19, 1, S("abcde0j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 19, 2, S("abcde0j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 20, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 20, 1, S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 5, SV(""), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV(""), 0, 1, S("abcde")); - test(S("abcdefghij"), 5, 5, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 5, SV("12345"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, SV("12345"), 0, 2, S("abcde12")); - test(S("abcdefghij"), 5, 5, SV("12345"), 0, 4, S("abcde1234")); - test(S("abcdefghij"), 5, 5, SV("12345"), 0, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, SV("12345"), 0, 6, S("abcde12345")); - test(S("abcdefghij"), 5, 5, SV("12345"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 5, SV("12345"), 1, 2, S("abcde23")); - test(S("abcdefghij"), 5, 5, SV("12345"), 1, 3, S("abcde234")); - test(S("abcdefghij"), 5, 5, SV("12345"), 1, 4, S("abcde2345")); - test(S("abcdefghij"), 5, 5, SV("12345"), 1, 5, S("abcde2345")); - test(S("abcdefghij"), 5, 5, SV("12345"), 2, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345"), 2, 1, S("abcde3")); - test(S("abcdefghij"), 5, 5, SV("12345"), 2, 2, S("abcde34")); - test(S("abcdefghij"), 5, 5, SV("12345"), 2, 3, S("abcde345")); - test(S("abcdefghij"), 5, 5, SV("12345"), 2, 4, S("abcde345")); - test(S("abcdefghij"), 5, 5, SV("12345"), 4, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345"), 4, 1, S("abcde5")); - test(S("abcdefghij"), 5, 5, SV("12345"), 4, 2, S("abcde5")); - test(S("abcdefghij"), 5, 5, SV("12345"), 5, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345"), 5, 1, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 4, S("abcde2345")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 1, S("abcde6")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 2, S("abcde67")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 4, S("abcde6789")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 5, S("abcde67890")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 6, S("abcde67890")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 9, 1, S("abcde0")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 9, 2, S("abcde0")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 6, SV(""), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV(""), 0, 1, S("abcde")); - test(S("abcdefghij"), 5, 6, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 6, SV("12345"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, SV("12345"), 0, 2, S("abcde12")); - test(S("abcdefghij"), 5, 6, SV("12345"), 0, 4, S("abcde1234")); - test(S("abcdefghij"), 5, 6, SV("12345"), 0, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 6, SV("12345"), 0, 6, S("abcde12345")); - test(S("abcdefghij"), 5, 6, SV("12345"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 6, SV("12345"), 1, 2, S("abcde23")); - test(S("abcdefghij"), 5, 6, SV("12345"), 1, 3, S("abcde234")); - test(S("abcdefghij"), 5, 6, SV("12345"), 1, 4, S("abcde2345")); - test(S("abcdefghij"), 5, 6, SV("12345"), 1, 5, S("abcde2345")); - test(S("abcdefghij"), 5, 6, SV("12345"), 2, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345"), 2, 1, S("abcde3")); - test(S("abcdefghij"), 5, 6, SV("12345"), 2, 2, S("abcde34")); - - return true; +TEST_CONSTEXPR_CXX20 bool test31() { + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 10, 11, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 19, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 19, 1, S("abcde0j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 19, 2, S("abcde0j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 20, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 20, 1, S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 5, SV(""), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV(""), 0, 1, S("abcde")); + test(S("abcdefghij"), 5, 5, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 5, SV("12345"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, SV("12345"), 0, 2, S("abcde12")); + test(S("abcdefghij"), 5, 5, SV("12345"), 0, 4, S("abcde1234")); + test(S("abcdefghij"), 5, 5, SV("12345"), 0, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, SV("12345"), 0, 6, S("abcde12345")); + test(S("abcdefghij"), 5, 5, SV("12345"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 5, SV("12345"), 1, 2, S("abcde23")); + test(S("abcdefghij"), 5, 5, SV("12345"), 1, 3, S("abcde234")); + test(S("abcdefghij"), 5, 5, SV("12345"), 1, 4, S("abcde2345")); + test(S("abcdefghij"), 5, 5, SV("12345"), 1, 5, S("abcde2345")); + test(S("abcdefghij"), 5, 5, SV("12345"), 2, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345"), 2, 1, S("abcde3")); + test(S("abcdefghij"), 5, 5, SV("12345"), 2, 2, S("abcde34")); + test(S("abcdefghij"), 5, 5, SV("12345"), 2, 3, S("abcde345")); + test(S("abcdefghij"), 5, 5, SV("12345"), 2, 4, S("abcde345")); + test(S("abcdefghij"), 5, 5, SV("12345"), 4, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345"), 4, 1, S("abcde5")); + test(S("abcdefghij"), 5, 5, SV("12345"), 4, 2, S("abcde5")); + test(S("abcdefghij"), 5, 5, SV("12345"), 5, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345"), 5, 1, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 4, S("abcde2345")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 1, S("abcde6")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 2, S("abcde67")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 4, S("abcde6789")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 5, S("abcde67890")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 5, 6, S("abcde67890")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 9, 1, S("abcde0")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 9, 2, S("abcde0")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 6, SV(""), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV(""), 0, 1, S("abcde")); + test(S("abcdefghij"), 5, 6, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 6, SV("12345"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, SV("12345"), 0, 2, S("abcde12")); + test(S("abcdefghij"), 5, 6, SV("12345"), 0, 4, S("abcde1234")); + test(S("abcdefghij"), 5, 6, SV("12345"), 0, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 6, SV("12345"), 0, 6, S("abcde12345")); + test(S("abcdefghij"), 5, 6, SV("12345"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 6, SV("12345"), 1, 2, S("abcde23")); + test(S("abcdefghij"), 5, 6, SV("12345"), 1, 3, S("abcde234")); + test(S("abcdefghij"), 5, 6, SV("12345"), 1, 4, S("abcde2345")); + test(S("abcdefghij"), 5, 6, SV("12345"), 1, 5, S("abcde2345")); + test(S("abcdefghij"), 5, 6, SV("12345"), 2, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345"), 2, 1, S("abcde3")); + test(S("abcdefghij"), 5, 6, SV("12345"), 2, 2, S("abcde34")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test32() -{ - test(S("abcdefghij"), 5, 6, SV("12345"), 2, 3, S("abcde345")); - test(S("abcdefghij"), 5, 6, SV("12345"), 2, 4, S("abcde345")); - test(S("abcdefghij"), 5, 6, SV("12345"), 4, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345"), 4, 1, S("abcde5")); - test(S("abcdefghij"), 5, 6, SV("12345"), 4, 2, S("abcde5")); - test(S("abcdefghij"), 5, 6, SV("12345"), 5, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345"), 5, 1, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 4, S("abcde2345")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 1, S("abcde6")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 2, S("abcde67")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 4, S("abcde6789")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 5, S("abcde67890")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 6, S("abcde67890")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 9, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 9, 1, S("abcde0")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 9, 2, S("abcde0")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 10, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 10, 1, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 9, 0, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 9, 0, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 0, 2, S("abcdefghi12j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 0, 4, S("abcdefghi1234j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 0, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 0, 6, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 1, 2, S("abcdefghi23j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 1, 3, S("abcdefghi234j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 1, 4, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 1, 5, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345"), 2, 1, S("abcdefghi3j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 2, 2, S("abcdefghi34j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 2, 3, S("abcdefghi345j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 2, 4, S("abcdefghi345j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345"), 4, 1, S("abcdefghi5j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 4, 2, S("abcdefghi5j")); - test(S("abcdefghij"), 9, 0, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 11, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 4, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 8, S("abcdefghi23456789j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 9, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 10, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 1, S("abcdefghi6j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 2, S("abcdefghi67j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 4, S("abcdefghi6789j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 5, S("abcdefghi67890j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 6, S("abcdefghi67890j")); - - return true; +TEST_CONSTEXPR_CXX20 bool test32() { + test(S("abcdefghij"), 5, 6, SV("12345"), 2, 3, S("abcde345")); + test(S("abcdefghij"), 5, 6, SV("12345"), 2, 4, S("abcde345")); + test(S("abcdefghij"), 5, 6, SV("12345"), 4, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345"), 4, 1, S("abcde5")); + test(S("abcdefghij"), 5, 6, SV("12345"), 4, 2, S("abcde5")); + test(S("abcdefghij"), 5, 6, SV("12345"), 5, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345"), 5, 1, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 4, S("abcde2345")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 1, S("abcde6")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 2, S("abcde67")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 4, S("abcde6789")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 5, S("abcde67890")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 5, 6, S("abcde67890")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 9, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 9, 1, S("abcde0")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 9, 2, S("abcde0")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 10, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 10, 1, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 9, 0, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 9, 0, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 0, 2, S("abcdefghi12j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 0, 4, S("abcdefghi1234j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 0, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 0, 6, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 1, 2, S("abcdefghi23j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 1, 3, S("abcdefghi234j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 1, 4, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 1, 5, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345"), 2, 1, S("abcdefghi3j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 2, 2, S("abcdefghi34j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 2, 3, S("abcdefghi345j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 2, 4, S("abcdefghi345j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345"), 4, 1, S("abcdefghi5j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 4, 2, S("abcdefghi5j")); + test(S("abcdefghij"), 9, 0, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 0, 11, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 4, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 8, S("abcdefghi23456789j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 9, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 1, 10, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 1, S("abcdefghi6j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 2, S("abcdefghi67j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 4, S("abcdefghi6789j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 5, S("abcdefghi67890j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 5, 6, S("abcdefghi67890j")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test33() -{ - test(S("abcdefghij"), 9, 0, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 9, 1, S("abcdefghi0j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 9, 2, S("abcdefghi0j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 19, 1, S("abcdefghi0j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 19, 2, S("abcdefghi0j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 9, 1, SV(""), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV(""), 0, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 9, 1, SV("12345"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, SV("12345"), 0, 2, S("abcdefghi12")); - test(S("abcdefghij"), 9, 1, SV("12345"), 0, 4, S("abcdefghi1234")); - test(S("abcdefghij"), 9, 1, SV("12345"), 0, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, SV("12345"), 0, 6, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, SV("12345"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 1, SV("12345"), 1, 2, S("abcdefghi23")); - test(S("abcdefghij"), 9, 1, SV("12345"), 1, 3, S("abcdefghi234")); - test(S("abcdefghij"), 9, 1, SV("12345"), 1, 4, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 1, SV("12345"), 1, 5, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 1, SV("12345"), 2, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345"), 2, 1, S("abcdefghi3")); - test(S("abcdefghij"), 9, 1, SV("12345"), 2, 2, S("abcdefghi34")); - test(S("abcdefghij"), 9, 1, SV("12345"), 2, 3, S("abcdefghi345")); - test(S("abcdefghij"), 9, 1, SV("12345"), 2, 4, S("abcdefghi345")); - test(S("abcdefghij"), 9, 1, SV("12345"), 4, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345"), 4, 1, S("abcdefghi5")); - test(S("abcdefghij"), 9, 1, SV("12345"), 4, 2, S("abcdefghi5")); - test(S("abcdefghij"), 9, 1, SV("12345"), 5, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345"), 5, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 11, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 4, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 8, S("abcdefghi23456789")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 9, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 10, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 1, S("abcdefghi6")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 2, S("abcdefghi67")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 4, S("abcdefghi6789")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 5, S("abcdefghi67890")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 6, S("abcdefghi67890")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 9, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 9, 1, S("abcdefghi0")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 9, 2, S("abcdefghi0")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 10, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 10, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 19, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 19, 1, S("abcdefghi0")); - - return true; +TEST_CONSTEXPR_CXX20 bool test33() { + test(S("abcdefghij"), 9, 0, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 9, 1, S("abcdefghi0j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 9, 2, S("abcdefghi0j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 19, 1, S("abcdefghi0j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 19, 2, S("abcdefghi0j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 9, 1, SV(""), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV(""), 0, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 9, 1, SV("12345"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, SV("12345"), 0, 2, S("abcdefghi12")); + test(S("abcdefghij"), 9, 1, SV("12345"), 0, 4, S("abcdefghi1234")); + test(S("abcdefghij"), 9, 1, SV("12345"), 0, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, SV("12345"), 0, 6, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, SV("12345"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 1, SV("12345"), 1, 2, S("abcdefghi23")); + test(S("abcdefghij"), 9, 1, SV("12345"), 1, 3, S("abcdefghi234")); + test(S("abcdefghij"), 9, 1, SV("12345"), 1, 4, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 1, SV("12345"), 1, 5, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 1, SV("12345"), 2, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345"), 2, 1, S("abcdefghi3")); + test(S("abcdefghij"), 9, 1, SV("12345"), 2, 2, S("abcdefghi34")); + test(S("abcdefghij"), 9, 1, SV("12345"), 2, 3, S("abcdefghi345")); + test(S("abcdefghij"), 9, 1, SV("12345"), 2, 4, S("abcdefghi345")); + test(S("abcdefghij"), 9, 1, SV("12345"), 4, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345"), 4, 1, S("abcdefghi5")); + test(S("abcdefghij"), 9, 1, SV("12345"), 4, 2, S("abcdefghi5")); + test(S("abcdefghij"), 9, 1, SV("12345"), 5, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345"), 5, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 0, 11, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 4, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 8, S("abcdefghi23456789")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 9, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 1, 10, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 1, S("abcdefghi6")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 2, S("abcdefghi67")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 4, S("abcdefghi6789")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 5, S("abcdefghi67890")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 5, 6, S("abcdefghi67890")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 9, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 9, 1, S("abcdefghi0")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 9, 2, S("abcdefghi0")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 10, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 10, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 19, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 19, 1, S("abcdefghi0")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test34() -{ - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 19, 2, S("abcdefghi0")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 20, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 20, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 9, 2, SV(""), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV(""), 0, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 9, 2, SV("12345"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, SV("12345"), 0, 2, S("abcdefghi12")); - test(S("abcdefghij"), 9, 2, SV("12345"), 0, 4, S("abcdefghi1234")); - test(S("abcdefghij"), 9, 2, SV("12345"), 0, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, SV("12345"), 0, 6, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, SV("12345"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 2, SV("12345"), 1, 2, S("abcdefghi23")); - test(S("abcdefghij"), 9, 2, SV("12345"), 1, 3, S("abcdefghi234")); - test(S("abcdefghij"), 9, 2, SV("12345"), 1, 4, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 2, SV("12345"), 1, 5, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 2, SV("12345"), 2, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345"), 2, 1, S("abcdefghi3")); - test(S("abcdefghij"), 9, 2, SV("12345"), 2, 2, S("abcdefghi34")); - test(S("abcdefghij"), 9, 2, SV("12345"), 2, 3, S("abcdefghi345")); - test(S("abcdefghij"), 9, 2, SV("12345"), 2, 4, S("abcdefghi345")); - test(S("abcdefghij"), 9, 2, SV("12345"), 4, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345"), 4, 1, S("abcdefghi5")); - test(S("abcdefghij"), 9, 2, SV("12345"), 4, 2, S("abcdefghi5")); - test(S("abcdefghij"), 9, 2, SV("12345"), 5, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345"), 5, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 11, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 4, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 8, S("abcdefghi23456789")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 9, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 10, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 1, S("abcdefghi6")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 2, S("abcdefghi67")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 4, S("abcdefghi6789")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 5, S("abcdefghi67890")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 6, S("abcdefghi67890")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 9, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 9, 1, S("abcdefghi0")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 9, 2, S("abcdefghi0")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 10, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 10, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 19, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 19, 1, S("abcdefghi0")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 19, 2, S("abcdefghi0")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 20, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 20, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 10, 0, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 10, 0, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, SV("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, 0, SV("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, 0, SV("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, SV("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 0, SV("12345"), 1, 2, S("abcdefghij23")); - test(S("abcdefghij"), 10, 0, SV("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghij"), 10, 0, SV("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 0, SV("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 0, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghij"), 10, 0, SV("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghij"), 10, 0, SV("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghij"), 10, 0, SV("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghij"), 10, 0, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345"), 4, 1, S("abcdefghij5")); - - return true; +TEST_CONSTEXPR_CXX20 bool test34() { + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 19, 2, S("abcdefghi0")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 20, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 20, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 9, 2, SV(""), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV(""), 0, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 9, 2, SV("12345"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, SV("12345"), 0, 2, S("abcdefghi12")); + test(S("abcdefghij"), 9, 2, SV("12345"), 0, 4, S("abcdefghi1234")); + test(S("abcdefghij"), 9, 2, SV("12345"), 0, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, SV("12345"), 0, 6, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, SV("12345"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 2, SV("12345"), 1, 2, S("abcdefghi23")); + test(S("abcdefghij"), 9, 2, SV("12345"), 1, 3, S("abcdefghi234")); + test(S("abcdefghij"), 9, 2, SV("12345"), 1, 4, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 2, SV("12345"), 1, 5, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 2, SV("12345"), 2, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345"), 2, 1, S("abcdefghi3")); + test(S("abcdefghij"), 9, 2, SV("12345"), 2, 2, S("abcdefghi34")); + test(S("abcdefghij"), 9, 2, SV("12345"), 2, 3, S("abcdefghi345")); + test(S("abcdefghij"), 9, 2, SV("12345"), 2, 4, S("abcdefghi345")); + test(S("abcdefghij"), 9, 2, SV("12345"), 4, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345"), 4, 1, S("abcdefghi5")); + test(S("abcdefghij"), 9, 2, SV("12345"), 4, 2, S("abcdefghi5")); + test(S("abcdefghij"), 9, 2, SV("12345"), 5, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345"), 5, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 0, 11, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 4, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 8, S("abcdefghi23456789")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 9, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 1, 10, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 1, S("abcdefghi6")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 2, S("abcdefghi67")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 4, S("abcdefghi6789")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 5, S("abcdefghi67890")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 5, 6, S("abcdefghi67890")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 9, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 9, 1, S("abcdefghi0")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 9, 2, S("abcdefghi0")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 10, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 10, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 9, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 19, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 19, 1, S("abcdefghi0")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 19, 2, S("abcdefghi0")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 20, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 20, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 10, 0, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 10, 0, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, SV("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, 0, SV("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, 0, SV("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, SV("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 0, SV("12345"), 1, 2, S("abcdefghij23")); + test(S("abcdefghij"), 10, 0, SV("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghij"), 10, 0, SV("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 0, SV("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 0, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghij"), 10, 0, SV("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghij"), 10, 0, SV("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghij"), 10, 0, SV("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghij"), 10, 0, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345"), 4, 1, S("abcdefghij5")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test35() -{ - test(S("abcdefghij"), 10, 0, SV("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghij"), 10, 0, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 4, S("abcdefghij6789")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 10, 1, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 10, 1, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, SV("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, 1, SV("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, 1, SV("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, SV("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 1, SV("12345"), 1, 2, S("abcdefghij23")); - test(S("abcdefghij"), 10, 1, SV("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghij"), 10, 1, SV("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 1, SV("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 1, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghij"), 10, 1, SV("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghij"), 10, 1, SV("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghij"), 10, 1, SV("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghij"), 10, 1, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345"), 4, 1, S("abcdefghij5")); - test(S("abcdefghij"), 10, 1, SV("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghij"), 10, 1, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 4, S("abcdefghij6789")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 10, 0, S("abcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test35() { + test(S("abcdefghij"), 10, 0, SV("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghij"), 10, 0, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 4, S("abcdefghij6789")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 10, 1, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 10, 1, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, SV("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, 1, SV("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, 1, SV("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, SV("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 1, SV("12345"), 1, 2, S("abcdefghij23")); + test(S("abcdefghij"), 10, 1, SV("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghij"), 10, 1, SV("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 1, SV("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 1, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghij"), 10, 1, SV("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghij"), 10, 1, SV("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghij"), 10, 1, SV("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghij"), 10, 1, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345"), 4, 1, S("abcdefghij5")); + test(S("abcdefghij"), 10, 1, SV("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghij"), 10, 1, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 4, S("abcdefghij6789")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 10, 0, S("abcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test36() -{ - test(S("abcdefghij"), 10, 1, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV(""), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV(""), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 0, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 0, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 0, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 0, 6, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 1, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 1, 3, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 1, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 1, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 2, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 2, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 2, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 2, 3, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 2, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 4, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 4, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 4, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 5, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 5, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 11, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 8, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 6, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 9, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 9, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 9, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 10, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 10, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test36() { + test(S("abcdefghij"), 10, 1, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV(""), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV(""), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 0, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 0, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 0, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 0, 6, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 1, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 1, 3, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 1, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 1, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 2, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 2, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 2, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 2, 3, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 2, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 4, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 4, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 4, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 5, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 5, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 0, 11, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 8, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 1, 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 5, 6, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 9, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 9, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 9, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 10, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 10, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test37() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 2, S("12abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 2, S("23abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 3, S("234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 1, S("3abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 2, S("34abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 3, S("345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 4, S("345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 4, 1, S("5abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 4, 2, S("5abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 1, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 2, S("12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 4, S("1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 6, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 1, S("2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 2, S("23bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 3, S("234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 4, S("2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 5, S("2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 1, S("3bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 2, S("34bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 3, S("345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 4, S("345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 4, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 4, 1, S("5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 4, 2, S("5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 5, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 5, 1, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 6, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test37() { + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 2, S("12abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 2, S("23abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 3, S("234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 1, S("3abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 2, S("34abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 3, S("345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 2, 4, S("345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 4, 1, S("5abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 4, 2, S("5abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 0, + 0, + SV("12345678901234567890"), + 0, + 20, + S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 0, + 0, + SV("12345678901234567890"), + 0, + 21, + S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 1, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 2, S("12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 4, S("1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 0, 6, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 1, S("2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 2, S("23bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 3, S("234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 4, S("2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 1, 5, S("2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 1, S("3bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 2, S("34bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 3, S("345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 2, 4, S("345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 4, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 4, 1, S("5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 4, 2, S("5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 5, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 5, 1, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), 6, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test38() -{ - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 9, S("123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 11, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 1, S("2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 4, S("2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 8, S("23456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 10, S("234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 1, S("6bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 2, S("67bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 4, S("6789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 5, S("67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 6, S("67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 9, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 9, 1, S("0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 9, 2, S("0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 10, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 10, 1, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 1, S("2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 18, S("234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 9, S("123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 11, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 19, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 19, 1, S("0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 19, 2, S("0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 20, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 20, 1, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 1, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 2, S("12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 4, S("1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 6, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 1, S("2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 2, S("23klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 3, S("234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 4, S("2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 5, S("2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 1, S("3klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 2, S("34klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 3, S("345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 4, S("345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 4, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 4, 1, S("5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 4, 2, S("5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 5, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 5, 1, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 9, S("123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 11, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 1, S("2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 4, S("2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 8, S("23456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 9, S("234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 10, S("234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 1, S("6klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 2, S("67klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 4, S("6789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 5, S("67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 6, S("67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 9, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 9, 1, S("0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 9, 2, S("0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 10, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 10, 1, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 1, S("1klmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test38() { + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 9, S("123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 0, 11, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 1, S("2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 4, S("2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 8, S("23456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 1, 10, S("234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 1, S("6bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 2, S("67bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 4, S("6789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 5, S("67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 5, 6, S("67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 9, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 9, 1, S("0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 9, 2, S("0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 10, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 10, 1, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 1, S("2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 18, S("234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 9, S("123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 10, 11, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 19, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 19, 1, S("0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 19, 2, S("0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 20, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 20, 1, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 1, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 2, S("12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 4, S("1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 0, 6, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 1, S("2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 2, S("23klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 3, S("234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 4, S("2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 1, 5, S("2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 1, S("3klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 2, S("34klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 3, S("345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 2, 4, S("345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 4, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 4, 1, S("5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 4, 2, S("5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 5, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 5, 1, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 9, S("123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 0, 11, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 1, S("2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 4, S("2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 8, S("23456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 9, S("234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 1, 10, S("234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 1, S("6klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 2, S("67klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 4, S("6789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 5, S("67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 5, 6, S("67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 9, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 9, 1, S("0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 9, 2, S("0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 10, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 10, 1, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 1, S("1klmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test39() -{ - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 19, S("1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 20, S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 21, S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 1, S("2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 9, S("234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 18, S("234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 19, S("2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 20, S("2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 9, S("123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 11, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 19, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 19, 1, S("0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 19, 2, S("0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 20, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 20, 1, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 1, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 2, S("12t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 4, S("1234t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 6, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 1, S("2t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 2, S("23t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 3, S("234t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 4, S("2345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 5, S("2345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 1, S("3t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 2, S("34t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 3, S("345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 4, S("345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 4, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 4, 1, S("5t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 4, 2, S("5t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 5, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 5, 1, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 9, S("123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 11, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 1, S("2t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 4, S("2345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 8, S("23456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 9, S("234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 10, S("234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 1, S("6t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 2, S("67t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 4, S("6789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 5, S("67890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 6, S("67890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 9, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 9, 1, S("0t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 9, 2, S("0t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 10, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 10, 1, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 19, S("1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 20, S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 21, S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 1, S("2t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 9, S("234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 18, S("234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 19, S("2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 20, S("2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 9, S("123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 11, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 19, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 19, 1, S("0t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 19, 2, S("0t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 20, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 20, 1, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 0, S("")); - - return true; +TEST_CONSTEXPR_CXX20 bool test39() { + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 19, S("1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 20, S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 0, 21, S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 1, S("2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 9, S("234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 18, S("234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 19, S("2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 1, 20, S("2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 9, S("123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 10, 11, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 19, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 19, 1, S("0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 19, 2, S("0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 20, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 20, 1, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 1, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 2, S("12t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 4, S("1234t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 0, 6, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 1, S("2t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 2, S("23t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 3, S("234t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 4, S("2345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 1, 5, S("2345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 1, S("3t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 2, S("34t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 3, S("345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 2, 4, S("345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 4, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 4, 1, S("5t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 4, 2, S("5t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 5, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 5, 1, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 9, S("123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 0, 11, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 1, S("2t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 4, S("2345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 8, S("23456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 9, S("234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 1, 10, S("234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 1, S("6t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 2, S("67t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 4, S("6789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 5, S("67890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 5, 6, S("67890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 9, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 9, 1, S("0t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 9, 2, S("0t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 10, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 10, 1, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 19, S("1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 20, S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 0, 21, S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 1, S("2t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 9, S("234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 18, S("234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 19, S("2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 1, 20, S("2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 9, S("123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 10, 11, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 19, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 19, 1, S("0t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 19, 2, S("0t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 20, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 20, 1, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 0, S("")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test40() -{ - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 2, S("12")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 4, S("1234")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 6, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 2, S("23")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 3, S("234")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 4, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 5, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 1, S("3")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 2, S("34")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 3, S("345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 4, S("345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 4, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 4, 1, S("5")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 4, 2, S("5")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 5, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 5, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 11, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 4, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 8, S("23456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 9, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 10, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 1, S("6")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 2, S("67")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 4, S("6789")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 5, S("67890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 6, S("67890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 9, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 9, 1, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 9, 2, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 10, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 10, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 19, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 19, 1, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 19, 2, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 20, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 20, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 2, S("12")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 4, S("1234")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 6, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 2, S("23")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 3, S("234")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 4, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 5, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 1, S("3")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 2, S("34")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 3, S("345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 4, S("345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 4, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 4, 1, S("5")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 4, 2, S("5")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 5, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 5, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 9, S("123456789")); - - return true; +TEST_CONSTEXPR_CXX20 bool test40() { + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 2, S("12")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 4, S("1234")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 0, 6, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 2, S("23")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 3, S("234")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 4, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 1, 5, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 1, S("3")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 2, S("34")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 3, S("345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 2, 4, S("345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 4, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 4, 1, S("5")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 4, 2, S("5")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 5, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 5, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 0, 11, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 4, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 8, S("23456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 9, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 1, 10, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 1, S("6")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 2, S("67")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 4, S("6789")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 5, S("67890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 5, 6, S("67890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 9, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 9, 1, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 9, 2, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 10, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 10, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 19, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 19, 1, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 19, 2, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 20, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 20, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 2, S("12")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 4, S("1234")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 0, 6, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 2, S("23")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 3, S("234")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 4, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 1, 5, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 1, S("3")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 2, S("34")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 3, S("345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 2, 4, S("345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 4, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 4, 1, S("5")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 4, 2, S("5")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 5, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 5, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 9, S("123456789")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test41() -{ - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 11, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 4, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 8, S("23456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 9, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 10, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 1, S("6")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 2, S("67")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 4, S("6789")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 5, S("67890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 6, S("67890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 9, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 9, 1, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 9, 2, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 10, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 10, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 19, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 19, 1, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 19, 2, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 20, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 20, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test41() { + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 0, 11, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 4, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 8, S("23456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 9, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 1, 10, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 1, S("6")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 2, S("67")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 4, S("6789")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 5, S("67890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 5, 6, S("67890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 9, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 9, 1, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 9, 2, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 10, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 10, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 19, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 19, 1, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 19, 2, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 20, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 20, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 1, + 0, + SV("12345678901234567890"), + 0, + 20, + S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 1, + 0, + SV("12345678901234567890"), + 0, + 21, + S("a12345678901234567890bcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test42() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 1, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 2, S("a12cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 4, S("a1234cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 6, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 1, S("a2cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 2, S("a23cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 3, S("a234cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 4, S("a2345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 5, S("a2345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 1, S("a3cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 2, S("a34cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 3, S("a345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 4, S("a345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 4, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 4, 1, S("a5cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 4, 2, S("a5cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 5, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 5, 1, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 9, S("a123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 11, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 1, S("a2cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 4, S("a2345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 8, S("a23456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 10, S("a234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 1, S("a6cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 2, S("a67cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 4, S("a6789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 5, S("a67890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 6, S("a67890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 9, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 9, 1, S("a0cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 9, 2, S("a0cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 10, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 10, 1, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 1, S("a2cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 9, S("a123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 11, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 19, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 19, 1, S("a0cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 19, 2, S("a0cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 20, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 20, 1, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 1, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 2, S("a12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 4, S("a1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 5, S("a12345klmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test42() { + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 1, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 2, S("a12cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 4, S("a1234cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 0, 6, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 1, S("a2cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 2, S("a23cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 3, S("a234cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 4, S("a2345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 1, 5, S("a2345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 1, S("a3cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 2, S("a34cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 3, S("a345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 2, 4, S("a345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 4, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 4, 1, S("a5cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 4, 2, S("a5cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 5, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 5, 1, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 9, S("a123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 0, 11, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 1, S("a2cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 4, S("a2345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 8, S("a23456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 1, 10, S("a234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 1, S("a6cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 2, S("a67cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 4, S("a6789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 5, S("a67890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 5, 6, S("a67890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 9, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 9, 1, S("a0cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 9, 2, S("a0cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 10, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 10, 1, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 1, S("a2cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 18, S("a234567890123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 9, S("a123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 10, 11, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 19, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 19, 1, S("a0cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 19, 2, S("a0cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 20, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 20, 1, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 1, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 2, S("a12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 4, S("a1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 5, S("a12345klmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test43() -{ - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 6, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 1, S("a2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 2, S("a23klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 3, S("a234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 4, S("a2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 5, S("a2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 1, S("a3klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 2, S("a34klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 3, S("a345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 4, S("a345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 4, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 4, 1, S("a5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 4, 2, S("a5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 5, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 5, 1, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 9, S("a123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 11, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 1, S("a2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 4, S("a2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 8, S("a23456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 9, S("a234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 10, S("a234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 1, S("a6klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 2, S("a67klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 4, S("a6789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 5, S("a67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 6, S("a67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 9, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 9, 1, S("a0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 9, 2, S("a0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 10, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 10, 1, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 19, S("a1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 20, S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 21, S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 1, S("a2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 9, S("a234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 18, S("a234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 19, S("a2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 20, S("a2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 9, S("a123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 11, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 19, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 19, 1, S("a0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 19, 2, S("a0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 20, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 20, 1, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 1, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 2, S("a12t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 4, S("a1234t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 6, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 1, S("a2t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 2, S("a23t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 3, S("a234t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 4, S("a2345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 5, S("a2345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 1, S("a3t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 2, S("a34t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 3, S("a345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 4, S("a345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 4, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 4, 1, S("a5t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 4, 2, S("a5t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 5, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 5, 1, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 9, S("a123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 11, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 1, S("a2t")); - - return true; +TEST_CONSTEXPR_CXX20 bool test43() { + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 0, 6, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 1, S("a2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 2, S("a23klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 3, S("a234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 4, S("a2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 1, 5, S("a2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 1, S("a3klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 2, S("a34klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 3, S("a345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 2, 4, S("a345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 4, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 4, 1, S("a5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 4, 2, S("a5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 5, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 5, 1, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 9, S("a123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 0, 11, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 1, S("a2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 4, S("a2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 8, S("a23456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 9, S("a234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 1, 10, S("a234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 1, S("a6klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 2, S("a67klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 4, S("a6789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 5, S("a67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 5, 6, S("a67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 9, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 9, 1, S("a0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 9, 2, S("a0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 10, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 10, 1, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 19, S("a1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 20, S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 0, 21, S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 1, S("a2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 9, S("a234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 18, S("a234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 19, S("a2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 1, 20, S("a2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 9, S("a123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 10, 11, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 19, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 19, 1, S("a0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 19, 2, S("a0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 20, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 20, 1, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 1, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 2, S("a12t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 4, S("a1234t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 0, 6, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 1, S("a2t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 2, S("a23t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 3, S("a234t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 4, S("a2345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 1, 5, S("a2345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 1, S("a3t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 2, S("a34t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 3, S("a345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 2, 4, S("a345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 4, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 4, 1, S("a5t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 4, 2, S("a5t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 5, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 5, 1, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 9, S("a123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 0, 11, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 1, S("a2t")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test44() -{ - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 4, S("a2345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 8, S("a23456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 9, S("a234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 10, S("a234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 1, S("a6t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 2, S("a67t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 4, S("a6789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 5, S("a67890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 6, S("a67890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 9, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 9, 1, S("a0t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 9, 2, S("a0t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 10, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 10, 1, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 19, S("a1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 20, S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 21, S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 1, S("a2t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 9, S("a234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 18, S("a234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 19, S("a2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 20, S("a2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 9, S("a123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 11, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 19, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 19, 1, S("a0t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 19, 2, S("a0t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 20, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 20, 1, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 2, S("a12")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 4, S("a1234")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 6, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 2, S("a23")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 3, S("a234")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 4, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 5, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 1, S("a3")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 2, S("a34")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 3, S("a345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 4, S("a345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 4, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 4, 1, S("a5")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 4, 2, S("a5")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 5, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 5, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 11, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 4, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 8, S("a23456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 9, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 10, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 1, S("a6")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 2, S("a67")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 4, S("a6789")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 5, S("a67890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 6, S("a67890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 9, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 9, 1, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 9, 2, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 10, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 10, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); - - return true; +TEST_CONSTEXPR_CXX20 bool test44() { + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 4, S("a2345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 8, S("a23456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 9, S("a234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 1, 10, S("a234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 1, S("a6t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 2, S("a67t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 4, S("a6789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 5, S("a67890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 5, 6, S("a67890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 9, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 9, 1, S("a0t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 9, 2, S("a0t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 10, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 10, 1, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 19, S("a1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 20, S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 0, 21, S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 1, S("a2t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 9, S("a234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 18, S("a234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 19, S("a2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 1, 20, S("a2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 9, S("a123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 10, 11, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 19, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 19, 1, S("a0t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 19, 2, S("a0t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 20, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 20, 1, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 2, S("a12")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 4, S("a1234")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 0, 6, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 2, S("a23")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 3, S("a234")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 4, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 1, 5, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 1, S("a3")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 2, S("a34")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 3, S("a345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 2, 4, S("a345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 4, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 4, 1, S("a5")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 4, 2, S("a5")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 5, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 5, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 0, 11, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 4, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 8, S("a23456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 9, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 1, 10, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 1, S("a6")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 2, S("a67")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 4, S("a6789")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 5, S("a67890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 5, 6, S("a67890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 9, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 9, 1, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 9, 2, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 10, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 10, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test45() -{ - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 19, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 19, 1, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 19, 2, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 20, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 20, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 2, S("a12")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 4, S("a1234")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 6, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 2, S("a23")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 3, S("a234")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 4, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 5, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 1, S("a3")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 2, S("a34")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 3, S("a345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 4, S("a345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 4, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 4, 1, S("a5")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 4, 2, S("a5")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 5, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 5, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 11, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 4, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 8, S("a23456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 9, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 10, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 1, S("a6")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 2, S("a67")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 4, S("a6789")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 5, S("a67890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 6, S("a67890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 9, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 9, 1, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 9, 2, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 10, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 10, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 19, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 19, 1, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 19, 2, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 20, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 20, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 2, S("abcdefghij12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 2, S("abcdefghij23klmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test45() { + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 19, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 19, 1, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 19, 2, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 20, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 20, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 2, S("a12")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 4, S("a1234")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 0, 6, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 2, S("a23")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 3, S("a234")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 4, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 1, 5, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 1, S("a3")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 2, S("a34")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 3, S("a345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 2, 4, S("a345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 4, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 4, 1, S("a5")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 4, 2, S("a5")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 5, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 5, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 0, 11, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 4, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 8, S("a23456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 9, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 1, 10, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 1, S("a6")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 2, S("a67")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 4, S("a6789")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 5, S("a67890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 5, 6, S("a67890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 9, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 9, 1, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 9, 2, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 10, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 10, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 19, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 19, 1, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 19, 2, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 20, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 20, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 2, S("abcdefghij12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 2, S("abcdefghij23klmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test46() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 3, S("abcdefghij234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 1, S("abcdefghij3klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 2, S("abcdefghij34klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 3, S("abcdefghij345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 4, S("abcdefghij345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 4, 1, S("abcdefghij5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 4, 2, S("abcdefghij5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 1, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 2, S("abcdefghij12lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 4, S("abcdefghij1234lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 6, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 1, S("abcdefghij2lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 2, S("abcdefghij23lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 3, S("abcdefghij234lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 4, S("abcdefghij2345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 5, S("abcdefghij2345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 1, S("abcdefghij3lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 2, S("abcdefghij34lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 3, S("abcdefghij345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 4, S("abcdefghij345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 4, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 4, 1, S("abcdefghij5lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 4, 2, S("abcdefghij5lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 5, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 5, 1, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 9, S("abcdefghij123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 11, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 1, S("abcdefghij2lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 4, S("abcdefghij2345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 8, S("abcdefghij23456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 10, S("abcdefghij234567890lmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test46() { + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 3, S("abcdefghij234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 1, S("abcdefghij3klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 2, S("abcdefghij34klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 3, S("abcdefghij345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 2, 4, S("abcdefghij345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 4, 1, S("abcdefghij5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 4, 2, S("abcdefghij5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 0, + SV("12345678901234567890"), + 0, + 19, + S("abcdefghij1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 0, + SV("12345678901234567890"), + 0, + 20, + S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 0, + SV("12345678901234567890"), + 0, + 21, + S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 0, + SV("12345678901234567890"), + 1, + 19, + S("abcdefghij2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 0, + SV("12345678901234567890"), + 1, + 20, + S("abcdefghij2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 1, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 2, S("abcdefghij12lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 4, S("abcdefghij1234lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 0, 6, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 1, S("abcdefghij2lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 2, S("abcdefghij23lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 3, S("abcdefghij234lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 4, S("abcdefghij2345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 1, 5, S("abcdefghij2345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 1, S("abcdefghij3lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 2, S("abcdefghij34lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 3, S("abcdefghij345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 2, 4, S("abcdefghij345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 4, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 4, 1, S("abcdefghij5lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 4, 2, S("abcdefghij5lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 5, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 5, 1, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 9, S("abcdefghij123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 0, 11, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 1, S("abcdefghij2lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 4, S("abcdefghij2345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 8, S("abcdefghij23456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 1, 10, S("abcdefghij234567890lmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test47() -{ - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 1, S("abcdefghij6lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 2, S("abcdefghij67lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 4, S("abcdefghij6789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 5, S("abcdefghij67890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 6, S("abcdefghij67890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 9, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 9, 1, S("abcdefghij0lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 9, 2, S("abcdefghij0lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 10, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 10, 1, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 1, S("abcdefghij2lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 19, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 19, 1, S("abcdefghij0lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 19, 2, S("abcdefghij0lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 20, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 20, 1, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 1, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 2, S("abcdefghij12pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 4, S("abcdefghij1234pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 6, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 1, S("abcdefghij2pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 2, S("abcdefghij23pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 3, S("abcdefghij234pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 4, S("abcdefghij2345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 5, S("abcdefghij2345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 1, S("abcdefghij3pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 2, S("abcdefghij34pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 3, S("abcdefghij345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 4, S("abcdefghij345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 4, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 4, 1, S("abcdefghij5pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 4, 2, S("abcdefghij5pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 5, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 5, 1, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 9, S("abcdefghij123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 11, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 1, S("abcdefghij2pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 4, S("abcdefghij2345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 8, S("abcdefghij23456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 9, S("abcdefghij234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 10, S("abcdefghij234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 1, S("abcdefghij6pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 2, S("abcdefghij67pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 4, S("abcdefghij6789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 5, S("abcdefghij67890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 6, S("abcdefghij67890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 9, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 9, 1, S("abcdefghij0pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 9, 2, S("abcdefghij0pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 10, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 10, 1, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 1, S("abcdefghij2pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 1, S("abcdefghij1pqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test47() { + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 1, S("abcdefghij6lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 2, S("abcdefghij67lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 4, S("abcdefghij6789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 5, S("abcdefghij67890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 5, 6, S("abcdefghij67890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 9, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 9, 1, S("abcdefghij0lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 9, 2, S("abcdefghij0lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 10, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 10, 1, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 1, + SV("12345678901234567890"), + 0, + 20, + S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 1, + SV("12345678901234567890"), + 0, + 21, + S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 1, S("abcdefghij2lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789lmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890lmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 19, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 19, 1, S("abcdefghij0lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 19, 2, S("abcdefghij0lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 20, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 20, 1, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 1, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 2, S("abcdefghij12pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 4, S("abcdefghij1234pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 0, 6, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 1, S("abcdefghij2pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 2, S("abcdefghij23pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 3, S("abcdefghij234pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 4, S("abcdefghij2345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 1, 5, S("abcdefghij2345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 1, S("abcdefghij3pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 2, S("abcdefghij34pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 3, S("abcdefghij345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 2, 4, S("abcdefghij345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 4, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 4, 1, S("abcdefghij5pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 4, 2, S("abcdefghij5pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 5, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 5, 1, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 9, S("abcdefghij123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 0, 11, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 1, S("abcdefghij2pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 4, S("abcdefghij2345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 8, S("abcdefghij23456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 9, S("abcdefghij234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 1, 10, S("abcdefghij234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 1, S("abcdefghij6pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 2, S("abcdefghij67pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 4, S("abcdefghij6789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 5, S("abcdefghij67890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 5, 6, S("abcdefghij67890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 9, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 9, 1, S("abcdefghij0pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 9, 2, S("abcdefghij0pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 10, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 10, 1, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 1, S("abcdefghij2pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 1, S("abcdefghij1pqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test48() -{ - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 19, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 19, 1, S("abcdefghij0pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 19, 2, S("abcdefghij0pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 20, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 20, 1, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 1, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 2, S("abcdefghij12t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 4, S("abcdefghij1234t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 6, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 1, S("abcdefghij2t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 2, S("abcdefghij23t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 3, S("abcdefghij234t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 4, S("abcdefghij2345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 5, S("abcdefghij2345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 1, S("abcdefghij3t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 2, S("abcdefghij34t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 3, S("abcdefghij345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 4, S("abcdefghij345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 4, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 4, 1, S("abcdefghij5t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 4, 2, S("abcdefghij5t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 5, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 5, 1, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 9, S("abcdefghij123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 11, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 1, S("abcdefghij2t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 4, S("abcdefghij2345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 8, S("abcdefghij23456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 9, S("abcdefghij234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 10, S("abcdefghij234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 1, S("abcdefghij6t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 2, S("abcdefghij67t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 4, S("abcdefghij6789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 5, S("abcdefghij67890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 6, S("abcdefghij67890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 9, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 9, 1, S("abcdefghij0t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 9, 2, S("abcdefghij0t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 10, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 10, 1, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 1, S("abcdefghij2t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 19, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 19, 1, S("abcdefghij0t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 19, 2, S("abcdefghij0t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 20, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 20, 1, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 2, S("abcdefghij23")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 0, S("abcdefghij")); - - return true; +TEST_CONSTEXPR_CXX20 bool test48() { + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 19, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 19, 1, S("abcdefghij0pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 19, 2, S("abcdefghij0pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 20, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 20, 1, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 1, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 2, S("abcdefghij12t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 4, S("abcdefghij1234t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 0, 6, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 1, S("abcdefghij2t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 2, S("abcdefghij23t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 3, S("abcdefghij234t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 4, S("abcdefghij2345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 1, 5, S("abcdefghij2345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 1, S("abcdefghij3t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 2, S("abcdefghij34t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 3, S("abcdefghij345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 2, 4, S("abcdefghij345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 4, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 4, 1, S("abcdefghij5t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 4, 2, S("abcdefghij5t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 5, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 5, 1, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 9, S("abcdefghij123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 0, 11, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 1, S("abcdefghij2t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 4, S("abcdefghij2345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 8, S("abcdefghij23456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 9, S("abcdefghij234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 1, 10, S("abcdefghij234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 1, S("abcdefghij6t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 2, S("abcdefghij67t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 4, S("abcdefghij6789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 5, S("abcdefghij67890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 5, 6, S("abcdefghij67890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 9, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 9, 1, S("abcdefghij0t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 9, 2, S("abcdefghij0t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 10, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 10, 1, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 1, S("abcdefghij2t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 19, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 19, 1, S("abcdefghij0t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 19, 2, S("abcdefghij0t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 20, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 20, 1, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 2, S("abcdefghij23")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 0, S("abcdefghij")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test49() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 4, 1, S("abcdefghij5")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 4, S("abcdefghij6789")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 2, S("abcdefghij23")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 4, 1, S("abcdefghij5")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 4, S("abcdefghij6789")); - - return true; +TEST_CONSTEXPR_CXX20 bool test49() { + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 4, 1, S("abcdefghij5")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 4, S("abcdefghij6789")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 2, S("abcdefghij23")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 4, 1, S("abcdefghij5")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 4, S("abcdefghij6789")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test50() -{ - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); - - return true; +TEST_CONSTEXPR_CXX20 bool test50() { + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), + 19, + 0, + SV("12345678901234567890"), + 0, + 19, + S("abcdefghijklmnopqrs1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), + 19, + 0, + SV("12345678901234567890"), + 0, + 20, + S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), + 19, + 0, + SV("12345678901234567890"), + 0, + 21, + S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); + test( + S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); + test(S("abcdefghijklmnopqrst"), + 19, + 0, + SV("12345678901234567890"), + 1, + 19, + S("abcdefghijklmnopqrs2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), + 19, + 0, + SV("12345678901234567890"), + 1, + 20, + S("abcdefghijklmnopqrs2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test51() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 4, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 5, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 5, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345")); - - return true; +TEST_CONSTEXPR_CXX20 bool test51() { + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 4, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 5, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 5, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); + test( + S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); + test(S("abcdefghijklmnopqrst"), + 19, + 1, + SV("12345678901234567890"), + 0, + 20, + S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), + 19, + 1, + SV("12345678901234567890"), + 0, + 21, + S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); + test( + S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); + test( + S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 2, S("abcdefghijklmnopqrs12")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 2, S("abcdefghijklmnopqrs23")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 3, S("abcdefghijklmnopqrs234")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 1, S("abcdefghijklmnopqrs3")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 2, S("abcdefghijklmnopqrs34")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 3, S("abcdefghijklmnopqrs345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 2, 4, S("abcdefghijklmnopqrs345")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test52() -{ - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 4, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 5, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 5, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 2, S("abcdefghijklmnopqrst23")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 3, S("abcdefghijklmnopqrst234")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 1, S("abcdefghijklmnopqrst3")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 2, S("abcdefghijklmnopqrst34")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 3, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 4, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 4, 1, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 4, 2, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); - - return true; +TEST_CONSTEXPR_CXX20 bool test52() { + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 4, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 4, 1, S("abcdefghijklmnopqrs5")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 4, 2, S("abcdefghijklmnopqrs5")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 5, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 5, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); + test( + S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); + test(S("abcdefghijklmnopqrst"), + 19, + 2, + SV("12345678901234567890"), + 0, + 20, + S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), + 19, + 2, + SV("12345678901234567890"), + 0, + 21, + S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); + test( + S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); + test( + S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 2, S("abcdefghijklmnopqrst23")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 3, S("abcdefghijklmnopqrst234")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 1, S("abcdefghijklmnopqrst3")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 2, S("abcdefghijklmnopqrst34")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 3, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 2, 4, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 4, 1, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 4, 2, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test53() -{ - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 2, S("abcdefghijklmnopqrst23")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 3, S("abcdefghijklmnopqrst234")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 1, S("abcdefghijklmnopqrst3")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 2, S("abcdefghijklmnopqrst34")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 3, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 4, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 4, 1, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 4, 2, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - - return true; +TEST_CONSTEXPR_CXX20 bool test53() { + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), + 20, + 0, + SV("12345678901234567890"), + 0, + 19, + S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), + 20, + 0, + SV("12345678901234567890"), + 0, + 20, + S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), + 20, + 0, + SV("12345678901234567890"), + 0, + 21, + S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test( + S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); + test(S("abcdefghijklmnopqrst"), + 20, + 0, + SV("12345678901234567890"), + 1, + 19, + S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), + 20, + 0, + SV("12345678901234567890"), + 1, + 20, + S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 2, S("abcdefghijklmnopqrst23")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 3, S("abcdefghijklmnopqrst234")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 1, S("abcdefghijklmnopqrst3")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 2, S("abcdefghijklmnopqrst34")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 3, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 2, 4, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 4, 1, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 4, 2, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), + 20, + 1, + SV("12345678901234567890"), + 0, + 19, + S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), + 20, + 1, + SV("12345678901234567890"), + 0, + 20, + S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), + 20, + 1, + SV("12345678901234567890"), + 0, + 21, + S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test( + S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); + test(S("abcdefghijklmnopqrst"), + 20, + 1, + SV("12345678901234567890"), + 1, + 19, + S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), + 20, + 1, + SV("12345678901234567890"), + 1, + 20, + S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test54() -{ - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 6, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 3, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 3, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 4, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 4, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 4, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 5, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 5, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 11, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 8, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 6, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 9, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 9, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 9, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 10, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 10, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test54() { + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 0, 6, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 3, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 1, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 3, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 2, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 4, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 4, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 4, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 5, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 5, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 0, 11, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 8, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 1, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 5, 6, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 9, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 9, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 9, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 10, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 10, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), 21, 0, S("can't happen")); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test55() -{ - test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, S("abcdefghi1234567890")); - test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 19, S("abcdefghi0")); - test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 20, S("abcdefghi")); - test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 20, S("abcdefghi")); - test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 21, S("can't happen")); - test_npos(S("abcdefghij"), 9, 2, SV(""), 0, S("abcdefghi")); - test_npos(S("abcdefghij"), 9, 2, SV(""), 1, S("can't happen")); - test_npos(S("abcdefghij"), 9, 2, SV("12345"), 0, S("abcdefghi12345")); - test_npos(S("abcdefghij"), 9, 2, SV("12345"), 1, S("abcdefghi2345")); - test_npos(S("abcdefghij"), 9, 2, SV("12345"), 2, S("abcdefghi345")); - test_npos(S("abcdefghij"), 9, 2, SV("12345"), 4, S("abcdefghi5")); - test_npos(S("abcdefghij"), 9, 2, SV("12345"), 5, S("abcdefghi")); - test_npos(S("abcdefghij"), 9, 2, SV("12345"), 6, S("can't happen")); - - return true; +TEST_CONSTEXPR_CXX20 bool test55() { + test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 10, S("abcdefghi1234567890")); + test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 19, S("abcdefghi0")); + test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 20, S("abcdefghi")); + test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 20, S("abcdefghi")); + test_npos(S("abcdefghij"), 9, 1, SV("12345678901234567890"), 21, S("can't happen")); + test_npos(S("abcdefghij"), 9, 2, SV(""), 0, S("abcdefghi")); + test_npos(S("abcdefghij"), 9, 2, SV(""), 1, S("can't happen")); + test_npos(S("abcdefghij"), 9, 2, SV("12345"), 0, S("abcdefghi12345")); + test_npos(S("abcdefghij"), 9, 2, SV("12345"), 1, S("abcdefghi2345")); + test_npos(S("abcdefghij"), 9, 2, SV("12345"), 2, S("abcdefghi345")); + test_npos(S("abcdefghij"), 9, 2, SV("12345"), 4, S("abcdefghi5")); + test_npos(S("abcdefghij"), 9, 2, SV("12345"), 5, S("abcdefghi")); + test_npos(S("abcdefghij"), 9, 2, SV("12345"), 6, S("can't happen")); + + return true; } TEST_CONSTEXPR_CXX20 bool test56() { - typedef std::string S; - typedef std::string_view SV; - S s0 = "ABCD"; - S s; - SV sv = "EFGH"; - char arr[] = "IJKL"; - - s = s0; - s.replace(0, 4, "CDEF", 0); // calls replace(pos1, n1, const char *, len) - assert(s == ""); - - s = s0; - s.replace(0, 4, "QRST", 0, std::string::npos); // calls replace(pos1, n1, string("QRST"), pos, npos) - assert(s == "QRST"); - - s = s0; - s.replace(0, 4, sv, 0); // calls replace(pos1, n1, T, pos, npos) - assert(s == sv); - - s = s0; - s.replace(0, 4, sv, 0, std::string::npos); // calls replace(pos1, n1, T, pos, npos) - assert(s == sv); - - s = s0; - s.replace(0, 4, arr, 0); // calls replace(pos1, n1, const char *, len) - assert(s == ""); - - s = s0; - s.replace(0, 4, arr, 0, std::string::npos); // calls replace(pos1, n1, string("IJKL"), pos, npos) - assert(s == "IJKL"); - - return true; + typedef std::string S; + typedef std::string_view SV; + S s0 = "ABCD"; + S s; + SV sv = "EFGH"; + char arr[] = "IJKL"; + + s = s0; + s.replace(0, 4, "CDEF", 0); // calls replace(pos1, n1, const char *, len) + assert(s == ""); + + s = s0; + s.replace(0, 4, "QRST", 0, std::string::npos); // calls replace(pos1, n1, string("QRST"), pos, npos) + assert(s == "QRST"); + + s = s0; + s.replace(0, 4, sv, 0); // calls replace(pos1, n1, T, pos, npos) + assert(s == sv); + + s = s0; + s.replace(0, 4, sv, 0, std::string::npos); // calls replace(pos1, n1, T, pos, npos) + assert(s == sv); + + s = s0; + s.replace(0, 4, arr, 0); // calls replace(pos1, n1, const char *, len) + assert(s == ""); + + s = s0; + s.replace(0, 4, arr, 0, std::string::npos); // calls replace(pos1, n1, string("IJKL"), pos, npos) + assert(s == "IJKL"); + + return true; } template @@ -6139,8 +6275,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>, diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer.pass.cpp @@ -21,352 +21,342 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, typename S::size_type n1, - const typename S::value_type* str, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.replace(pos, n1, str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type xlen = std::min(n1, old_size - pos); - typename S::size_type rlen = S::traits_type::length(str); - assert(s.size() == old_size - xlen + rlen); - } +test(S s, typename S::size_type pos, typename S::size_type n1, const typename S::value_type* str, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.replace(pos, n1, str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type xlen = std::min(n1, old_size - pos); + typename S::size_type rlen = S::traits_type::length(str); + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos, n1, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos, n1, str); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, "", S("")); - test(S(""), 0, 0, "12345", S("12345")); - test(S(""), 0, 0, "1234567890", S("1234567890")); - test(S(""), 0, 0, "12345678901234567890", S("12345678901234567890")); - test(S(""), 0, 1, "", S("")); - test(S(""), 0, 1, "12345", S("12345")); - test(S(""), 0, 1, "1234567890", S("1234567890")); - test(S(""), 0, 1, "12345678901234567890", S("12345678901234567890")); - test(S(""), 1, 0, "", S("can't happen")); - test(S(""), 1, 0, "12345", S("can't happen")); - test(S(""), 1, 0, "1234567890", S("can't happen")); - test(S(""), 1, 0, "12345678901234567890", S("can't happen")); - test(S("abcde"), 0, 0, "", S("abcde")); - test(S("abcde"), 0, 0, "12345", S("12345abcde")); - test(S("abcde"), 0, 0, "1234567890", S("1234567890abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, "", S("bcde")); - test(S("abcde"), 0, 1, "12345", S("12345bcde")); - test(S("abcde"), 0, 1, "1234567890", S("1234567890bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, "", S("cde")); - test(S("abcde"), 0, 2, "12345", S("12345cde")); - test(S("abcde"), 0, 2, "1234567890", S("1234567890cde")); - test(S("abcde"), 0, 2, "12345678901234567890", S("12345678901234567890cde")); - test(S("abcde"), 0, 4, "", S("e")); - test(S("abcde"), 0, 4, "12345", S("12345e")); - test(S("abcde"), 0, 4, "1234567890", S("1234567890e")); - test(S("abcde"), 0, 4, "12345678901234567890", S("12345678901234567890e")); - test(S("abcde"), 0, 5, "", S("")); - test(S("abcde"), 0, 5, "12345", S("12345")); - test(S("abcde"), 0, 5, "1234567890", S("1234567890")); - test(S("abcde"), 0, 5, "12345678901234567890", S("12345678901234567890")); - test(S("abcde"), 0, 6, "", S("")); - test(S("abcde"), 0, 6, "12345", S("12345")); - test(S("abcde"), 0, 6, "1234567890", S("1234567890")); - test(S("abcde"), 0, 6, "12345678901234567890", S("12345678901234567890")); - test(S("abcde"), 1, 0, "", S("abcde")); - test(S("abcde"), 1, 0, "12345", S("a12345bcde")); - test(S("abcde"), 1, 0, "1234567890", S("a1234567890bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, "", S("acde")); - test(S("abcde"), 1, 1, "12345", S("a12345cde")); - test(S("abcde"), 1, 1, "1234567890", S("a1234567890cde")); - test(S("abcde"), 1, 1, "12345678901234567890", S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, "", S("ade")); - test(S("abcde"), 1, 2, "12345", S("a12345de")); - test(S("abcde"), 1, 2, "1234567890", S("a1234567890de")); - test(S("abcde"), 1, 2, "12345678901234567890", S("a12345678901234567890de")); - test(S("abcde"), 1, 3, "", S("ae")); - test(S("abcde"), 1, 3, "12345", S("a12345e")); - test(S("abcde"), 1, 3, "1234567890", S("a1234567890e")); - test(S("abcde"), 1, 3, "12345678901234567890", S("a12345678901234567890e")); - test(S("abcde"), 1, 4, "", S("a")); - test(S("abcde"), 1, 4, "12345", S("a12345")); - test(S("abcde"), 1, 4, "1234567890", S("a1234567890")); - test(S("abcde"), 1, 4, "12345678901234567890", S("a12345678901234567890")); - test(S("abcde"), 1, 5, "", S("a")); - test(S("abcde"), 1, 5, "12345", S("a12345")); - test(S("abcde"), 1, 5, "1234567890", S("a1234567890")); - test(S("abcde"), 1, 5, "12345678901234567890", S("a12345678901234567890")); - test(S("abcde"), 2, 0, "", S("abcde")); - test(S("abcde"), 2, 0, "12345", S("ab12345cde")); - test(S("abcde"), 2, 0, "1234567890", S("ab1234567890cde")); - test(S("abcde"), 2, 0, "12345678901234567890", S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, "", S("abde")); - test(S("abcde"), 2, 1, "12345", S("ab12345de")); - test(S("abcde"), 2, 1, "1234567890", S("ab1234567890de")); - test(S("abcde"), 2, 1, "12345678901234567890", S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, "", S("abe")); - test(S("abcde"), 2, 2, "12345", S("ab12345e")); - test(S("abcde"), 2, 2, "1234567890", S("ab1234567890e")); - test(S("abcde"), 2, 2, "12345678901234567890", S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, "", S("ab")); - test(S("abcde"), 2, 3, "12345", S("ab12345")); - test(S("abcde"), 2, 3, "1234567890", S("ab1234567890")); - test(S("abcde"), 2, 3, "12345678901234567890", S("ab12345678901234567890")); - test(S("abcde"), 2, 4, "", S("ab")); - test(S("abcde"), 2, 4, "12345", S("ab12345")); - test(S("abcde"), 2, 4, "1234567890", S("ab1234567890")); - test(S("abcde"), 2, 4, "12345678901234567890", S("ab12345678901234567890")); - test(S("abcde"), 4, 0, "", S("abcde")); - test(S("abcde"), 4, 0, "12345", S("abcd12345e")); - test(S("abcde"), 4, 0, "1234567890", S("abcd1234567890e")); - test(S("abcde"), 4, 0, "12345678901234567890", S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, "", S("abcd")); - test(S("abcde"), 4, 1, "12345", S("abcd12345")); - test(S("abcde"), 4, 1, "1234567890", S("abcd1234567890")); - test(S("abcde"), 4, 1, "12345678901234567890", S("abcd12345678901234567890")); - test(S("abcde"), 4, 2, "", S("abcd")); - test(S("abcde"), 4, 2, "12345", S("abcd12345")); - test(S("abcde"), 4, 2, "1234567890", S("abcd1234567890")); - test(S("abcde"), 4, 2, "12345678901234567890", S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, "", S("abcde")); - test(S("abcde"), 5, 0, "12345", S("abcde12345")); - test(S("abcde"), 5, 0, "1234567890", S("abcde1234567890")); - test(S("abcde"), 5, 0, "12345678901234567890", S("abcde12345678901234567890")); - test(S("abcde"), 5, 1, "", S("abcde")); - test(S("abcde"), 5, 1, "12345", S("abcde12345")); - test(S("abcde"), 5, 1, "1234567890", S("abcde1234567890")); - test(S("abcde"), 5, 1, "12345678901234567890", S("abcde12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, "", S("")); + test(S(""), 0, 0, "12345", S("12345")); + test(S(""), 0, 0, "1234567890", S("1234567890")); + test(S(""), 0, 0, "12345678901234567890", S("12345678901234567890")); + test(S(""), 0, 1, "", S("")); + test(S(""), 0, 1, "12345", S("12345")); + test(S(""), 0, 1, "1234567890", S("1234567890")); + test(S(""), 0, 1, "12345678901234567890", S("12345678901234567890")); + test(S(""), 1, 0, "", S("can't happen")); + test(S(""), 1, 0, "12345", S("can't happen")); + test(S(""), 1, 0, "1234567890", S("can't happen")); + test(S(""), 1, 0, "12345678901234567890", S("can't happen")); + test(S("abcde"), 0, 0, "", S("abcde")); + test(S("abcde"), 0, 0, "12345", S("12345abcde")); + test(S("abcde"), 0, 0, "1234567890", S("1234567890abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, "", S("bcde")); + test(S("abcde"), 0, 1, "12345", S("12345bcde")); + test(S("abcde"), 0, 1, "1234567890", S("1234567890bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, "", S("cde")); + test(S("abcde"), 0, 2, "12345", S("12345cde")); + test(S("abcde"), 0, 2, "1234567890", S("1234567890cde")); + test(S("abcde"), 0, 2, "12345678901234567890", S("12345678901234567890cde")); + test(S("abcde"), 0, 4, "", S("e")); + test(S("abcde"), 0, 4, "12345", S("12345e")); + test(S("abcde"), 0, 4, "1234567890", S("1234567890e")); + test(S("abcde"), 0, 4, "12345678901234567890", S("12345678901234567890e")); + test(S("abcde"), 0, 5, "", S("")); + test(S("abcde"), 0, 5, "12345", S("12345")); + test(S("abcde"), 0, 5, "1234567890", S("1234567890")); + test(S("abcde"), 0, 5, "12345678901234567890", S("12345678901234567890")); + test(S("abcde"), 0, 6, "", S("")); + test(S("abcde"), 0, 6, "12345", S("12345")); + test(S("abcde"), 0, 6, "1234567890", S("1234567890")); + test(S("abcde"), 0, 6, "12345678901234567890", S("12345678901234567890")); + test(S("abcde"), 1, 0, "", S("abcde")); + test(S("abcde"), 1, 0, "12345", S("a12345bcde")); + test(S("abcde"), 1, 0, "1234567890", S("a1234567890bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, "", S("acde")); + test(S("abcde"), 1, 1, "12345", S("a12345cde")); + test(S("abcde"), 1, 1, "1234567890", S("a1234567890cde")); + test(S("abcde"), 1, 1, "12345678901234567890", S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, "", S("ade")); + test(S("abcde"), 1, 2, "12345", S("a12345de")); + test(S("abcde"), 1, 2, "1234567890", S("a1234567890de")); + test(S("abcde"), 1, 2, "12345678901234567890", S("a12345678901234567890de")); + test(S("abcde"), 1, 3, "", S("ae")); + test(S("abcde"), 1, 3, "12345", S("a12345e")); + test(S("abcde"), 1, 3, "1234567890", S("a1234567890e")); + test(S("abcde"), 1, 3, "12345678901234567890", S("a12345678901234567890e")); + test(S("abcde"), 1, 4, "", S("a")); + test(S("abcde"), 1, 4, "12345", S("a12345")); + test(S("abcde"), 1, 4, "1234567890", S("a1234567890")); + test(S("abcde"), 1, 4, "12345678901234567890", S("a12345678901234567890")); + test(S("abcde"), 1, 5, "", S("a")); + test(S("abcde"), 1, 5, "12345", S("a12345")); + test(S("abcde"), 1, 5, "1234567890", S("a1234567890")); + test(S("abcde"), 1, 5, "12345678901234567890", S("a12345678901234567890")); + test(S("abcde"), 2, 0, "", S("abcde")); + test(S("abcde"), 2, 0, "12345", S("ab12345cde")); + test(S("abcde"), 2, 0, "1234567890", S("ab1234567890cde")); + test(S("abcde"), 2, 0, "12345678901234567890", S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, "", S("abde")); + test(S("abcde"), 2, 1, "12345", S("ab12345de")); + test(S("abcde"), 2, 1, "1234567890", S("ab1234567890de")); + test(S("abcde"), 2, 1, "12345678901234567890", S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, "", S("abe")); + test(S("abcde"), 2, 2, "12345", S("ab12345e")); + test(S("abcde"), 2, 2, "1234567890", S("ab1234567890e")); + test(S("abcde"), 2, 2, "12345678901234567890", S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, "", S("ab")); + test(S("abcde"), 2, 3, "12345", S("ab12345")); + test(S("abcde"), 2, 3, "1234567890", S("ab1234567890")); + test(S("abcde"), 2, 3, "12345678901234567890", S("ab12345678901234567890")); + test(S("abcde"), 2, 4, "", S("ab")); + test(S("abcde"), 2, 4, "12345", S("ab12345")); + test(S("abcde"), 2, 4, "1234567890", S("ab1234567890")); + test(S("abcde"), 2, 4, "12345678901234567890", S("ab12345678901234567890")); + test(S("abcde"), 4, 0, "", S("abcde")); + test(S("abcde"), 4, 0, "12345", S("abcd12345e")); + test(S("abcde"), 4, 0, "1234567890", S("abcd1234567890e")); + test(S("abcde"), 4, 0, "12345678901234567890", S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, "", S("abcd")); + test(S("abcde"), 4, 1, "12345", S("abcd12345")); + test(S("abcde"), 4, 1, "1234567890", S("abcd1234567890")); + test(S("abcde"), 4, 1, "12345678901234567890", S("abcd12345678901234567890")); + test(S("abcde"), 4, 2, "", S("abcd")); + test(S("abcde"), 4, 2, "12345", S("abcd12345")); + test(S("abcde"), 4, 2, "1234567890", S("abcd1234567890")); + test(S("abcde"), 4, 2, "12345678901234567890", S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, "", S("abcde")); + test(S("abcde"), 5, 0, "12345", S("abcde12345")); + test(S("abcde"), 5, 0, "1234567890", S("abcde1234567890")); + test(S("abcde"), 5, 0, "12345678901234567890", S("abcde12345678901234567890")); + test(S("abcde"), 5, 1, "", S("abcde")); + test(S("abcde"), 5, 1, "12345", S("abcde12345")); + test(S("abcde"), 5, 1, "1234567890", S("abcde1234567890")); + test(S("abcde"), 5, 1, "12345678901234567890", S("abcde12345678901234567890")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcde"), 6, 0, "", S("can't happen")); - test(S("abcde"), 6, 0, "12345", S("can't happen")); - test(S("abcde"), 6, 0, "1234567890", S("can't happen")); - test(S("abcde"), 6, 0, "12345678901234567890", S("can't happen")); - test(S("abcdefghij"), 0, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, "", S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, "", S("fghij")); - test(S("abcdefghij"), 0, 5, "12345", S("12345fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, "", S("j")); - test(S("abcdefghij"), 0, 9, "12345", S("12345j")); - test(S("abcdefghij"), 0, 9, "1234567890", S("1234567890j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, "", S("")); - test(S("abcdefghij"), 0, 10, "12345", S("12345")); - test(S("abcdefghij"), 0, 10, "1234567890", S("1234567890")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", S("12345678901234567890")); - test(S("abcdefghij"), 0, 11, "", S("")); - test(S("abcdefghij"), 0, 11, "12345", S("12345")); - test(S("abcdefghij"), 0, 11, "1234567890", S("1234567890")); - test(S("abcdefghij"), 0, 11, "12345678901234567890", S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, "", S("acdefghij")); - test(S("abcdefghij"), 1, 1, "12345", S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 4, "", S("afghij")); - test(S("abcdefghij"), 1, 4, "12345", S("a12345fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, "", S("aj")); - test(S("abcdefghij"), 1, 8, "12345", S("a12345j")); - test(S("abcdefghij"), 1, 8, "1234567890", S("a1234567890j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, "", S("a")); - test(S("abcdefghij"), 1, 9, "12345", S("a12345")); - test(S("abcdefghij"), 1, 9, "1234567890", S("a1234567890")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", S("a12345678901234567890")); - test(S("abcdefghij"), 1, 10, "", S("a")); - test(S("abcdefghij"), 1, 10, "12345", S("a12345")); - test(S("abcdefghij"), 1, 10, "1234567890", S("a1234567890")); - test(S("abcdefghij"), 1, 10, "12345678901234567890", S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "12345", S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, "", S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "12345", S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, "", S("abcdehij")); - test(S("abcdefghij"), 5, 2, "12345", S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, "1234567890", S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, "", S("abcdej")); - test(S("abcdefghij"), 5, 4, "12345", S("abcde12345j")); - test(S("abcdefghij"), 5, 4, "1234567890", S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, "", S("abcde")); - test(S("abcdefghij"), 5, 5, "12345", S("abcde12345")); - test(S("abcdefghij"), 5, 5, "1234567890", S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 6, "", S("abcde")); - test(S("abcdefghij"), 5, 6, "12345", S("abcde12345")); - test(S("abcdefghij"), 5, 6, "1234567890", S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, "12345678901234567890", S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "12345", S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, "1234567890", S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, "", S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "12345", S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, "1234567890", S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 2, "", S("abcdefghi")); - test(S("abcdefghij"), 9, 2, "12345", S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, "1234567890", S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, "12345678901234567890", S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, "", S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "12345", S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, "1234567890", S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 1, "", S("abcdefghij")); - test(S("abcdefghij"), 10, 1, "12345", S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, "1234567890", S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, "12345678901234567890", S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 11, 0, "", S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345", S("can't happen")); - test(S("abcdefghij"), 11, 0, "1234567890", S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345678901234567890", S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcde"), 6, 0, "", S("can't happen")); + test(S("abcde"), 6, 0, "12345", S("can't happen")); + test(S("abcde"), 6, 0, "1234567890", S("can't happen")); + test(S("abcde"), 6, 0, "12345678901234567890", S("can't happen")); + test(S("abcdefghij"), 0, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, "", S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, "", S("fghij")); + test(S("abcdefghij"), 0, 5, "12345", S("12345fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, "", S("j")); + test(S("abcdefghij"), 0, 9, "12345", S("12345j")); + test(S("abcdefghij"), 0, 9, "1234567890", S("1234567890j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, "", S("")); + test(S("abcdefghij"), 0, 10, "12345", S("12345")); + test(S("abcdefghij"), 0, 10, "1234567890", S("1234567890")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", S("12345678901234567890")); + test(S("abcdefghij"), 0, 11, "", S("")); + test(S("abcdefghij"), 0, 11, "12345", S("12345")); + test(S("abcdefghij"), 0, 11, "1234567890", S("1234567890")); + test(S("abcdefghij"), 0, 11, "12345678901234567890", S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, "", S("acdefghij")); + test(S("abcdefghij"), 1, 1, "12345", S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 4, "", S("afghij")); + test(S("abcdefghij"), 1, 4, "12345", S("a12345fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, "", S("aj")); + test(S("abcdefghij"), 1, 8, "12345", S("a12345j")); + test(S("abcdefghij"), 1, 8, "1234567890", S("a1234567890j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, "", S("a")); + test(S("abcdefghij"), 1, 9, "12345", S("a12345")); + test(S("abcdefghij"), 1, 9, "1234567890", S("a1234567890")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", S("a12345678901234567890")); + test(S("abcdefghij"), 1, 10, "", S("a")); + test(S("abcdefghij"), 1, 10, "12345", S("a12345")); + test(S("abcdefghij"), 1, 10, "1234567890", S("a1234567890")); + test(S("abcdefghij"), 1, 10, "12345678901234567890", S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "12345", S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, "", S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "12345", S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, "", S("abcdehij")); + test(S("abcdefghij"), 5, 2, "12345", S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, "1234567890", S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, "", S("abcdej")); + test(S("abcdefghij"), 5, 4, "12345", S("abcde12345j")); + test(S("abcdefghij"), 5, 4, "1234567890", S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, "", S("abcde")); + test(S("abcdefghij"), 5, 5, "12345", S("abcde12345")); + test(S("abcdefghij"), 5, 5, "1234567890", S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 6, "", S("abcde")); + test(S("abcdefghij"), 5, 6, "12345", S("abcde12345")); + test(S("abcdefghij"), 5, 6, "1234567890", S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, "12345678901234567890", S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "12345", S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, "1234567890", S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, "", S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "12345", S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, "1234567890", S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 2, "", S("abcdefghi")); + test(S("abcdefghij"), 9, 2, "12345", S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, "1234567890", S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, "12345678901234567890", S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, "", S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "12345", S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, "1234567890", S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 1, "", S("abcdefghij")); + test(S("abcdefghij"), 10, 1, "12345", S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, "1234567890", S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, "12345678901234567890", S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 11, 0, "", S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345", S("can't happen")); + test(S("abcdefghij"), 11, 0, "1234567890", S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345678901234567890", S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "", S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "", S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, "", S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, "", S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, "", S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345", S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "", S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "", S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, "", S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, "", S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, "", S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345", S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "", S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "", S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, "", S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", S("abcdefghij12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 10, "", S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, "", S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345", S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, "", S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, "", S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345", S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, "", S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345", S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 21, 0, "", S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345", S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcdefghijklmnopqrst"), 0, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "", S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "", S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, "", S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, "", S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, "", S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345", S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "", S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "", S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, "", S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, "", S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, "", S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345", S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "", S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "", S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, "", S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", S("abcdefghij12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 10, "", S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, "", S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345", S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, "", S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, "", S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345", S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, "", S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345", S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 21, 0, "", S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345", S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", S("can't happen")); - return true; + return true; } template @@ -383,8 +373,7 @@ } } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_pointer_size.pass.cpp @@ -21,1304 +21,1289 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, typename S::size_type n1, - const typename S::value_type* str, typename S::size_type n2, - S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.replace(pos, n1, str, n2); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type xlen = std::min(n1, old_size - pos); - typename S::size_type rlen = n2; - assert(s.size() == old_size - xlen + rlen); - } +test(S s, + typename S::size_type pos, + typename S::size_type n1, + const typename S::value_type* str, + typename S::size_type n2, + S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.replace(pos, n1, str, n2); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type xlen = std::min(n1, old_size - pos); + typename S::size_type rlen = n2; + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos, n1, str, n2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos, n1, str, n2); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, "", 0, S("")); - test(S(""), 0, 0, "12345", 0, S("")); - test(S(""), 0, 0, "12345", 1, S("1")); - test(S(""), 0, 0, "12345", 2, S("12")); - test(S(""), 0, 0, "12345", 4, S("1234")); - test(S(""), 0, 0, "12345", 5, S("12345")); - test(S(""), 0, 0, "1234567890", 0, S("")); - test(S(""), 0, 0, "1234567890", 1, S("1")); - test(S(""), 0, 0, "1234567890", 5, S("12345")); - test(S(""), 0, 0, "1234567890", 9, S("123456789")); - test(S(""), 0, 0, "1234567890", 10, S("1234567890")); - test(S(""), 0, 0, "12345678901234567890", 0, S("")); - test(S(""), 0, 0, "12345678901234567890", 1, S("1")); - test(S(""), 0, 0, "12345678901234567890", 10, S("1234567890")); - test(S(""), 0, 0, "12345678901234567890", 19, S("1234567890123456789")); - test(S(""), 0, 0, "12345678901234567890", 20, S("12345678901234567890")); - test(S(""), 0, 1, "", 0, S("")); - test(S(""), 0, 1, "12345", 0, S("")); - test(S(""), 0, 1, "12345", 1, S("1")); - test(S(""), 0, 1, "12345", 2, S("12")); - test(S(""), 0, 1, "12345", 4, S("1234")); - test(S(""), 0, 1, "12345", 5, S("12345")); - test(S(""), 0, 1, "1234567890", 0, S("")); - test(S(""), 0, 1, "1234567890", 1, S("1")); - test(S(""), 0, 1, "1234567890", 5, S("12345")); - test(S(""), 0, 1, "1234567890", 9, S("123456789")); - test(S(""), 0, 1, "1234567890", 10, S("1234567890")); - test(S(""), 0, 1, "12345678901234567890", 0, S("")); - test(S(""), 0, 1, "12345678901234567890", 1, S("1")); - test(S(""), 0, 1, "12345678901234567890", 10, S("1234567890")); - test(S(""), 0, 1, "12345678901234567890", 19, S("1234567890123456789")); - test(S(""), 0, 1, "12345678901234567890", 20, S("12345678901234567890")); - test(S(""), 1, 0, "", 0, S("can't happen")); - test(S(""), 1, 0, "12345", 0, S("can't happen")); - test(S(""), 1, 0, "12345", 1, S("can't happen")); - test(S(""), 1, 0, "12345", 2, S("can't happen")); - test(S(""), 1, 0, "12345", 4, S("can't happen")); - test(S(""), 1, 0, "12345", 5, S("can't happen")); - test(S(""), 1, 0, "1234567890", 0, S("can't happen")); - test(S(""), 1, 0, "1234567890", 1, S("can't happen")); - test(S(""), 1, 0, "1234567890", 5, S("can't happen")); - test(S(""), 1, 0, "1234567890", 9, S("can't happen")); - test(S(""), 1, 0, "1234567890", 10, S("can't happen")); - test(S(""), 1, 0, "12345678901234567890", 0, S("can't happen")); - test(S(""), 1, 0, "12345678901234567890", 1, S("can't happen")); - test(S(""), 1, 0, "12345678901234567890", 10, S("can't happen")); - test(S(""), 1, 0, "12345678901234567890", 19, S("can't happen")); - test(S(""), 1, 0, "12345678901234567890", 20, S("can't happen")); - test(S("abcde"), 0, 0, "", 0, S("abcde")); - test(S("abcde"), 0, 0, "12345", 0, S("abcde")); - test(S("abcde"), 0, 0, "12345", 1, S("1abcde")); - test(S("abcde"), 0, 0, "12345", 2, S("12abcde")); - test(S("abcde"), 0, 0, "12345", 4, S("1234abcde")); - test(S("abcde"), 0, 0, "12345", 5, S("12345abcde")); - test(S("abcde"), 0, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 0, 0, "1234567890", 1, S("1abcde")); - test(S("abcde"), 0, 0, "1234567890", 5, S("12345abcde")); - test(S("abcde"), 0, 0, "1234567890", 9, S("123456789abcde")); - test(S("abcde"), 0, 0, "1234567890", 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 1, S("1abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcde")); - test(S("abcde"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, "", 0, S("bcde")); - test(S("abcde"), 0, 1, "12345", 0, S("bcde")); - test(S("abcde"), 0, 1, "12345", 1, S("1bcde")); - test(S("abcde"), 0, 1, "12345", 2, S("12bcde")); - test(S("abcde"), 0, 1, "12345", 4, S("1234bcde")); - test(S("abcde"), 0, 1, "12345", 5, S("12345bcde")); - test(S("abcde"), 0, 1, "1234567890", 0, S("bcde")); - test(S("abcde"), 0, 1, "1234567890", 1, S("1bcde")); - test(S("abcde"), 0, 1, "1234567890", 5, S("12345bcde")); - test(S("abcde"), 0, 1, "1234567890", 9, S("123456789bcde")); - test(S("abcde"), 0, 1, "1234567890", 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 0, S("bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 1, S("1bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcde")); - test(S("abcde"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, "", 0, S("cde")); - test(S("abcde"), 0, 2, "12345", 0, S("cde")); - test(S("abcde"), 0, 2, "12345", 1, S("1cde")); - test(S("abcde"), 0, 2, "12345", 2, S("12cde")); - test(S("abcde"), 0, 2, "12345", 4, S("1234cde")); - test(S("abcde"), 0, 2, "12345", 5, S("12345cde")); - test(S("abcde"), 0, 2, "1234567890", 0, S("cde")); - test(S("abcde"), 0, 2, "1234567890", 1, S("1cde")); - test(S("abcde"), 0, 2, "1234567890", 5, S("12345cde")); - test(S("abcde"), 0, 2, "1234567890", 9, S("123456789cde")); - test(S("abcde"), 0, 2, "1234567890", 10, S("1234567890cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 0, S("cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 1, S("1cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 10, S("1234567890cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 19, S("1234567890123456789cde")); - test(S("abcde"), 0, 2, "12345678901234567890", 20, S("12345678901234567890cde")); - test(S("abcde"), 0, 4, "", 0, S("e")); - test(S("abcde"), 0, 4, "12345", 0, S("e")); - test(S("abcde"), 0, 4, "12345", 1, S("1e")); - test(S("abcde"), 0, 4, "12345", 2, S("12e")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, "", 0, S("")); + test(S(""), 0, 0, "12345", 0, S("")); + test(S(""), 0, 0, "12345", 1, S("1")); + test(S(""), 0, 0, "12345", 2, S("12")); + test(S(""), 0, 0, "12345", 4, S("1234")); + test(S(""), 0, 0, "12345", 5, S("12345")); + test(S(""), 0, 0, "1234567890", 0, S("")); + test(S(""), 0, 0, "1234567890", 1, S("1")); + test(S(""), 0, 0, "1234567890", 5, S("12345")); + test(S(""), 0, 0, "1234567890", 9, S("123456789")); + test(S(""), 0, 0, "1234567890", 10, S("1234567890")); + test(S(""), 0, 0, "12345678901234567890", 0, S("")); + test(S(""), 0, 0, "12345678901234567890", 1, S("1")); + test(S(""), 0, 0, "12345678901234567890", 10, S("1234567890")); + test(S(""), 0, 0, "12345678901234567890", 19, S("1234567890123456789")); + test(S(""), 0, 0, "12345678901234567890", 20, S("12345678901234567890")); + test(S(""), 0, 1, "", 0, S("")); + test(S(""), 0, 1, "12345", 0, S("")); + test(S(""), 0, 1, "12345", 1, S("1")); + test(S(""), 0, 1, "12345", 2, S("12")); + test(S(""), 0, 1, "12345", 4, S("1234")); + test(S(""), 0, 1, "12345", 5, S("12345")); + test(S(""), 0, 1, "1234567890", 0, S("")); + test(S(""), 0, 1, "1234567890", 1, S("1")); + test(S(""), 0, 1, "1234567890", 5, S("12345")); + test(S(""), 0, 1, "1234567890", 9, S("123456789")); + test(S(""), 0, 1, "1234567890", 10, S("1234567890")); + test(S(""), 0, 1, "12345678901234567890", 0, S("")); + test(S(""), 0, 1, "12345678901234567890", 1, S("1")); + test(S(""), 0, 1, "12345678901234567890", 10, S("1234567890")); + test(S(""), 0, 1, "12345678901234567890", 19, S("1234567890123456789")); + test(S(""), 0, 1, "12345678901234567890", 20, S("12345678901234567890")); + test(S(""), 1, 0, "", 0, S("can't happen")); + test(S(""), 1, 0, "12345", 0, S("can't happen")); + test(S(""), 1, 0, "12345", 1, S("can't happen")); + test(S(""), 1, 0, "12345", 2, S("can't happen")); + test(S(""), 1, 0, "12345", 4, S("can't happen")); + test(S(""), 1, 0, "12345", 5, S("can't happen")); + test(S(""), 1, 0, "1234567890", 0, S("can't happen")); + test(S(""), 1, 0, "1234567890", 1, S("can't happen")); + test(S(""), 1, 0, "1234567890", 5, S("can't happen")); + test(S(""), 1, 0, "1234567890", 9, S("can't happen")); + test(S(""), 1, 0, "1234567890", 10, S("can't happen")); + test(S(""), 1, 0, "12345678901234567890", 0, S("can't happen")); + test(S(""), 1, 0, "12345678901234567890", 1, S("can't happen")); + test(S(""), 1, 0, "12345678901234567890", 10, S("can't happen")); + test(S(""), 1, 0, "12345678901234567890", 19, S("can't happen")); + test(S(""), 1, 0, "12345678901234567890", 20, S("can't happen")); + test(S("abcde"), 0, 0, "", 0, S("abcde")); + test(S("abcde"), 0, 0, "12345", 0, S("abcde")); + test(S("abcde"), 0, 0, "12345", 1, S("1abcde")); + test(S("abcde"), 0, 0, "12345", 2, S("12abcde")); + test(S("abcde"), 0, 0, "12345", 4, S("1234abcde")); + test(S("abcde"), 0, 0, "12345", 5, S("12345abcde")); + test(S("abcde"), 0, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 0, 0, "1234567890", 1, S("1abcde")); + test(S("abcde"), 0, 0, "1234567890", 5, S("12345abcde")); + test(S("abcde"), 0, 0, "1234567890", 9, S("123456789abcde")); + test(S("abcde"), 0, 0, "1234567890", 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 1, S("1abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcde")); + test(S("abcde"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, "", 0, S("bcde")); + test(S("abcde"), 0, 1, "12345", 0, S("bcde")); + test(S("abcde"), 0, 1, "12345", 1, S("1bcde")); + test(S("abcde"), 0, 1, "12345", 2, S("12bcde")); + test(S("abcde"), 0, 1, "12345", 4, S("1234bcde")); + test(S("abcde"), 0, 1, "12345", 5, S("12345bcde")); + test(S("abcde"), 0, 1, "1234567890", 0, S("bcde")); + test(S("abcde"), 0, 1, "1234567890", 1, S("1bcde")); + test(S("abcde"), 0, 1, "1234567890", 5, S("12345bcde")); + test(S("abcde"), 0, 1, "1234567890", 9, S("123456789bcde")); + test(S("abcde"), 0, 1, "1234567890", 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 0, S("bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 1, S("1bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcde")); + test(S("abcde"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, "", 0, S("cde")); + test(S("abcde"), 0, 2, "12345", 0, S("cde")); + test(S("abcde"), 0, 2, "12345", 1, S("1cde")); + test(S("abcde"), 0, 2, "12345", 2, S("12cde")); + test(S("abcde"), 0, 2, "12345", 4, S("1234cde")); + test(S("abcde"), 0, 2, "12345", 5, S("12345cde")); + test(S("abcde"), 0, 2, "1234567890", 0, S("cde")); + test(S("abcde"), 0, 2, "1234567890", 1, S("1cde")); + test(S("abcde"), 0, 2, "1234567890", 5, S("12345cde")); + test(S("abcde"), 0, 2, "1234567890", 9, S("123456789cde")); + test(S("abcde"), 0, 2, "1234567890", 10, S("1234567890cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 0, S("cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 1, S("1cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 10, S("1234567890cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 19, S("1234567890123456789cde")); + test(S("abcde"), 0, 2, "12345678901234567890", 20, S("12345678901234567890cde")); + test(S("abcde"), 0, 4, "", 0, S("e")); + test(S("abcde"), 0, 4, "12345", 0, S("e")); + test(S("abcde"), 0, 4, "12345", 1, S("1e")); + test(S("abcde"), 0, 4, "12345", 2, S("12e")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcde"), 0, 4, "12345", 4, S("1234e")); - test(S("abcde"), 0, 4, "12345", 5, S("12345e")); - test(S("abcde"), 0, 4, "1234567890", 0, S("e")); - test(S("abcde"), 0, 4, "1234567890", 1, S("1e")); - test(S("abcde"), 0, 4, "1234567890", 5, S("12345e")); - test(S("abcde"), 0, 4, "1234567890", 9, S("123456789e")); - test(S("abcde"), 0, 4, "1234567890", 10, S("1234567890e")); - test(S("abcde"), 0, 4, "12345678901234567890", 0, S("e")); - test(S("abcde"), 0, 4, "12345678901234567890", 1, S("1e")); - test(S("abcde"), 0, 4, "12345678901234567890", 10, S("1234567890e")); - test(S("abcde"), 0, 4, "12345678901234567890", 19, S("1234567890123456789e")); - test(S("abcde"), 0, 4, "12345678901234567890", 20, S("12345678901234567890e")); - test(S("abcde"), 0, 5, "", 0, S("")); - test(S("abcde"), 0, 5, "12345", 0, S("")); - test(S("abcde"), 0, 5, "12345", 1, S("1")); - test(S("abcde"), 0, 5, "12345", 2, S("12")); - test(S("abcde"), 0, 5, "12345", 4, S("1234")); - test(S("abcde"), 0, 5, "12345", 5, S("12345")); - test(S("abcde"), 0, 5, "1234567890", 0, S("")); - test(S("abcde"), 0, 5, "1234567890", 1, S("1")); - test(S("abcde"), 0, 5, "1234567890", 5, S("12345")); - test(S("abcde"), 0, 5, "1234567890", 9, S("123456789")); - test(S("abcde"), 0, 5, "1234567890", 10, S("1234567890")); - test(S("abcde"), 0, 5, "12345678901234567890", 0, S("")); - test(S("abcde"), 0, 5, "12345678901234567890", 1, S("1")); - test(S("abcde"), 0, 5, "12345678901234567890", 10, S("1234567890")); - test(S("abcde"), 0, 5, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcde"), 0, 5, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcde"), 0, 6, "", 0, S("")); - test(S("abcde"), 0, 6, "12345", 0, S("")); - test(S("abcde"), 0, 6, "12345", 1, S("1")); - test(S("abcde"), 0, 6, "12345", 2, S("12")); - test(S("abcde"), 0, 6, "12345", 4, S("1234")); - test(S("abcde"), 0, 6, "12345", 5, S("12345")); - test(S("abcde"), 0, 6, "1234567890", 0, S("")); - test(S("abcde"), 0, 6, "1234567890", 1, S("1")); - test(S("abcde"), 0, 6, "1234567890", 5, S("12345")); - test(S("abcde"), 0, 6, "1234567890", 9, S("123456789")); - test(S("abcde"), 0, 6, "1234567890", 10, S("1234567890")); - test(S("abcde"), 0, 6, "12345678901234567890", 0, S("")); - test(S("abcde"), 0, 6, "12345678901234567890", 1, S("1")); - test(S("abcde"), 0, 6, "12345678901234567890", 10, S("1234567890")); - test(S("abcde"), 0, 6, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcde"), 0, 6, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcde"), 1, 0, "", 0, S("abcde")); - test(S("abcde"), 1, 0, "12345", 0, S("abcde")); - test(S("abcde"), 1, 0, "12345", 1, S("a1bcde")); - test(S("abcde"), 1, 0, "12345", 2, S("a12bcde")); - test(S("abcde"), 1, 0, "12345", 4, S("a1234bcde")); - test(S("abcde"), 1, 0, "12345", 5, S("a12345bcde")); - test(S("abcde"), 1, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 1, 0, "1234567890", 1, S("a1bcde")); - test(S("abcde"), 1, 0, "1234567890", 5, S("a12345bcde")); - test(S("abcde"), 1, 0, "1234567890", 9, S("a123456789bcde")); - test(S("abcde"), 1, 0, "1234567890", 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 1, S("a1bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcde")); - test(S("abcde"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, "", 0, S("acde")); - test(S("abcde"), 1, 1, "12345", 0, S("acde")); - test(S("abcde"), 1, 1, "12345", 1, S("a1cde")); - test(S("abcde"), 1, 1, "12345", 2, S("a12cde")); - test(S("abcde"), 1, 1, "12345", 4, S("a1234cde")); - test(S("abcde"), 1, 1, "12345", 5, S("a12345cde")); - test(S("abcde"), 1, 1, "1234567890", 0, S("acde")); - test(S("abcde"), 1, 1, "1234567890", 1, S("a1cde")); - test(S("abcde"), 1, 1, "1234567890", 5, S("a12345cde")); - test(S("abcde"), 1, 1, "1234567890", 9, S("a123456789cde")); - test(S("abcde"), 1, 1, "1234567890", 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, "12345678901234567890", 0, S("acde")); - test(S("abcde"), 1, 1, "12345678901234567890", 1, S("a1cde")); - test(S("abcde"), 1, 1, "12345678901234567890", 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cde")); - test(S("abcde"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, "", 0, S("ade")); - test(S("abcde"), 1, 2, "12345", 0, S("ade")); - test(S("abcde"), 1, 2, "12345", 1, S("a1de")); - test(S("abcde"), 1, 2, "12345", 2, S("a12de")); - test(S("abcde"), 1, 2, "12345", 4, S("a1234de")); - test(S("abcde"), 1, 2, "12345", 5, S("a12345de")); - test(S("abcde"), 1, 2, "1234567890", 0, S("ade")); - test(S("abcde"), 1, 2, "1234567890", 1, S("a1de")); - test(S("abcde"), 1, 2, "1234567890", 5, S("a12345de")); - test(S("abcde"), 1, 2, "1234567890", 9, S("a123456789de")); - test(S("abcde"), 1, 2, "1234567890", 10, S("a1234567890de")); - test(S("abcde"), 1, 2, "12345678901234567890", 0, S("ade")); - test(S("abcde"), 1, 2, "12345678901234567890", 1, S("a1de")); - test(S("abcde"), 1, 2, "12345678901234567890", 10, S("a1234567890de")); - test(S("abcde"), 1, 2, "12345678901234567890", 19, S("a1234567890123456789de")); - test(S("abcde"), 1, 2, "12345678901234567890", 20, S("a12345678901234567890de")); - test(S("abcde"), 1, 3, "", 0, S("ae")); - test(S("abcde"), 1, 3, "12345", 0, S("ae")); - test(S("abcde"), 1, 3, "12345", 1, S("a1e")); - test(S("abcde"), 1, 3, "12345", 2, S("a12e")); - test(S("abcde"), 1, 3, "12345", 4, S("a1234e")); - test(S("abcde"), 1, 3, "12345", 5, S("a12345e")); - test(S("abcde"), 1, 3, "1234567890", 0, S("ae")); - test(S("abcde"), 1, 3, "1234567890", 1, S("a1e")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcde"), 0, 4, "12345", 4, S("1234e")); + test(S("abcde"), 0, 4, "12345", 5, S("12345e")); + test(S("abcde"), 0, 4, "1234567890", 0, S("e")); + test(S("abcde"), 0, 4, "1234567890", 1, S("1e")); + test(S("abcde"), 0, 4, "1234567890", 5, S("12345e")); + test(S("abcde"), 0, 4, "1234567890", 9, S("123456789e")); + test(S("abcde"), 0, 4, "1234567890", 10, S("1234567890e")); + test(S("abcde"), 0, 4, "12345678901234567890", 0, S("e")); + test(S("abcde"), 0, 4, "12345678901234567890", 1, S("1e")); + test(S("abcde"), 0, 4, "12345678901234567890", 10, S("1234567890e")); + test(S("abcde"), 0, 4, "12345678901234567890", 19, S("1234567890123456789e")); + test(S("abcde"), 0, 4, "12345678901234567890", 20, S("12345678901234567890e")); + test(S("abcde"), 0, 5, "", 0, S("")); + test(S("abcde"), 0, 5, "12345", 0, S("")); + test(S("abcde"), 0, 5, "12345", 1, S("1")); + test(S("abcde"), 0, 5, "12345", 2, S("12")); + test(S("abcde"), 0, 5, "12345", 4, S("1234")); + test(S("abcde"), 0, 5, "12345", 5, S("12345")); + test(S("abcde"), 0, 5, "1234567890", 0, S("")); + test(S("abcde"), 0, 5, "1234567890", 1, S("1")); + test(S("abcde"), 0, 5, "1234567890", 5, S("12345")); + test(S("abcde"), 0, 5, "1234567890", 9, S("123456789")); + test(S("abcde"), 0, 5, "1234567890", 10, S("1234567890")); + test(S("abcde"), 0, 5, "12345678901234567890", 0, S("")); + test(S("abcde"), 0, 5, "12345678901234567890", 1, S("1")); + test(S("abcde"), 0, 5, "12345678901234567890", 10, S("1234567890")); + test(S("abcde"), 0, 5, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcde"), 0, 5, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcde"), 0, 6, "", 0, S("")); + test(S("abcde"), 0, 6, "12345", 0, S("")); + test(S("abcde"), 0, 6, "12345", 1, S("1")); + test(S("abcde"), 0, 6, "12345", 2, S("12")); + test(S("abcde"), 0, 6, "12345", 4, S("1234")); + test(S("abcde"), 0, 6, "12345", 5, S("12345")); + test(S("abcde"), 0, 6, "1234567890", 0, S("")); + test(S("abcde"), 0, 6, "1234567890", 1, S("1")); + test(S("abcde"), 0, 6, "1234567890", 5, S("12345")); + test(S("abcde"), 0, 6, "1234567890", 9, S("123456789")); + test(S("abcde"), 0, 6, "1234567890", 10, S("1234567890")); + test(S("abcde"), 0, 6, "12345678901234567890", 0, S("")); + test(S("abcde"), 0, 6, "12345678901234567890", 1, S("1")); + test(S("abcde"), 0, 6, "12345678901234567890", 10, S("1234567890")); + test(S("abcde"), 0, 6, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcde"), 0, 6, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcde"), 1, 0, "", 0, S("abcde")); + test(S("abcde"), 1, 0, "12345", 0, S("abcde")); + test(S("abcde"), 1, 0, "12345", 1, S("a1bcde")); + test(S("abcde"), 1, 0, "12345", 2, S("a12bcde")); + test(S("abcde"), 1, 0, "12345", 4, S("a1234bcde")); + test(S("abcde"), 1, 0, "12345", 5, S("a12345bcde")); + test(S("abcde"), 1, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 1, 0, "1234567890", 1, S("a1bcde")); + test(S("abcde"), 1, 0, "1234567890", 5, S("a12345bcde")); + test(S("abcde"), 1, 0, "1234567890", 9, S("a123456789bcde")); + test(S("abcde"), 1, 0, "1234567890", 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 1, S("a1bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcde")); + test(S("abcde"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, "", 0, S("acde")); + test(S("abcde"), 1, 1, "12345", 0, S("acde")); + test(S("abcde"), 1, 1, "12345", 1, S("a1cde")); + test(S("abcde"), 1, 1, "12345", 2, S("a12cde")); + test(S("abcde"), 1, 1, "12345", 4, S("a1234cde")); + test(S("abcde"), 1, 1, "12345", 5, S("a12345cde")); + test(S("abcde"), 1, 1, "1234567890", 0, S("acde")); + test(S("abcde"), 1, 1, "1234567890", 1, S("a1cde")); + test(S("abcde"), 1, 1, "1234567890", 5, S("a12345cde")); + test(S("abcde"), 1, 1, "1234567890", 9, S("a123456789cde")); + test(S("abcde"), 1, 1, "1234567890", 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, "12345678901234567890", 0, S("acde")); + test(S("abcde"), 1, 1, "12345678901234567890", 1, S("a1cde")); + test(S("abcde"), 1, 1, "12345678901234567890", 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cde")); + test(S("abcde"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, "", 0, S("ade")); + test(S("abcde"), 1, 2, "12345", 0, S("ade")); + test(S("abcde"), 1, 2, "12345", 1, S("a1de")); + test(S("abcde"), 1, 2, "12345", 2, S("a12de")); + test(S("abcde"), 1, 2, "12345", 4, S("a1234de")); + test(S("abcde"), 1, 2, "12345", 5, S("a12345de")); + test(S("abcde"), 1, 2, "1234567890", 0, S("ade")); + test(S("abcde"), 1, 2, "1234567890", 1, S("a1de")); + test(S("abcde"), 1, 2, "1234567890", 5, S("a12345de")); + test(S("abcde"), 1, 2, "1234567890", 9, S("a123456789de")); + test(S("abcde"), 1, 2, "1234567890", 10, S("a1234567890de")); + test(S("abcde"), 1, 2, "12345678901234567890", 0, S("ade")); + test(S("abcde"), 1, 2, "12345678901234567890", 1, S("a1de")); + test(S("abcde"), 1, 2, "12345678901234567890", 10, S("a1234567890de")); + test(S("abcde"), 1, 2, "12345678901234567890", 19, S("a1234567890123456789de")); + test(S("abcde"), 1, 2, "12345678901234567890", 20, S("a12345678901234567890de")); + test(S("abcde"), 1, 3, "", 0, S("ae")); + test(S("abcde"), 1, 3, "12345", 0, S("ae")); + test(S("abcde"), 1, 3, "12345", 1, S("a1e")); + test(S("abcde"), 1, 3, "12345", 2, S("a12e")); + test(S("abcde"), 1, 3, "12345", 4, S("a1234e")); + test(S("abcde"), 1, 3, "12345", 5, S("a12345e")); + test(S("abcde"), 1, 3, "1234567890", 0, S("ae")); + test(S("abcde"), 1, 3, "1234567890", 1, S("a1e")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcde"), 1, 3, "1234567890", 5, S("a12345e")); - test(S("abcde"), 1, 3, "1234567890", 9, S("a123456789e")); - test(S("abcde"), 1, 3, "1234567890", 10, S("a1234567890e")); - test(S("abcde"), 1, 3, "12345678901234567890", 0, S("ae")); - test(S("abcde"), 1, 3, "12345678901234567890", 1, S("a1e")); - test(S("abcde"), 1, 3, "12345678901234567890", 10, S("a1234567890e")); - test(S("abcde"), 1, 3, "12345678901234567890", 19, S("a1234567890123456789e")); - test(S("abcde"), 1, 3, "12345678901234567890", 20, S("a12345678901234567890e")); - test(S("abcde"), 1, 4, "", 0, S("a")); - test(S("abcde"), 1, 4, "12345", 0, S("a")); - test(S("abcde"), 1, 4, "12345", 1, S("a1")); - test(S("abcde"), 1, 4, "12345", 2, S("a12")); - test(S("abcde"), 1, 4, "12345", 4, S("a1234")); - test(S("abcde"), 1, 4, "12345", 5, S("a12345")); - test(S("abcde"), 1, 4, "1234567890", 0, S("a")); - test(S("abcde"), 1, 4, "1234567890", 1, S("a1")); - test(S("abcde"), 1, 4, "1234567890", 5, S("a12345")); - test(S("abcde"), 1, 4, "1234567890", 9, S("a123456789")); - test(S("abcde"), 1, 4, "1234567890", 10, S("a1234567890")); - test(S("abcde"), 1, 4, "12345678901234567890", 0, S("a")); - test(S("abcde"), 1, 4, "12345678901234567890", 1, S("a1")); - test(S("abcde"), 1, 4, "12345678901234567890", 10, S("a1234567890")); - test(S("abcde"), 1, 4, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcde"), 1, 4, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcde"), 1, 5, "", 0, S("a")); - test(S("abcde"), 1, 5, "12345", 0, S("a")); - test(S("abcde"), 1, 5, "12345", 1, S("a1")); - test(S("abcde"), 1, 5, "12345", 2, S("a12")); - test(S("abcde"), 1, 5, "12345", 4, S("a1234")); - test(S("abcde"), 1, 5, "12345", 5, S("a12345")); - test(S("abcde"), 1, 5, "1234567890", 0, S("a")); - test(S("abcde"), 1, 5, "1234567890", 1, S("a1")); - test(S("abcde"), 1, 5, "1234567890", 5, S("a12345")); - test(S("abcde"), 1, 5, "1234567890", 9, S("a123456789")); - test(S("abcde"), 1, 5, "1234567890", 10, S("a1234567890")); - test(S("abcde"), 1, 5, "12345678901234567890", 0, S("a")); - test(S("abcde"), 1, 5, "12345678901234567890", 1, S("a1")); - test(S("abcde"), 1, 5, "12345678901234567890", 10, S("a1234567890")); - test(S("abcde"), 1, 5, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcde"), 1, 5, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcde"), 2, 0, "", 0, S("abcde")); - test(S("abcde"), 2, 0, "12345", 0, S("abcde")); - test(S("abcde"), 2, 0, "12345", 1, S("ab1cde")); - test(S("abcde"), 2, 0, "12345", 2, S("ab12cde")); - test(S("abcde"), 2, 0, "12345", 4, S("ab1234cde")); - test(S("abcde"), 2, 0, "12345", 5, S("ab12345cde")); - test(S("abcde"), 2, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 2, 0, "1234567890", 1, S("ab1cde")); - test(S("abcde"), 2, 0, "1234567890", 5, S("ab12345cde")); - test(S("abcde"), 2, 0, "1234567890", 9, S("ab123456789cde")); - test(S("abcde"), 2, 0, "1234567890", 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 2, 0, "12345678901234567890", 1, S("ab1cde")); - test(S("abcde"), 2, 0, "12345678901234567890", 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, "12345678901234567890", 19, S("ab1234567890123456789cde")); - test(S("abcde"), 2, 0, "12345678901234567890", 20, S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, "", 0, S("abde")); - test(S("abcde"), 2, 1, "12345", 0, S("abde")); - test(S("abcde"), 2, 1, "12345", 1, S("ab1de")); - test(S("abcde"), 2, 1, "12345", 2, S("ab12de")); - test(S("abcde"), 2, 1, "12345", 4, S("ab1234de")); - test(S("abcde"), 2, 1, "12345", 5, S("ab12345de")); - test(S("abcde"), 2, 1, "1234567890", 0, S("abde")); - test(S("abcde"), 2, 1, "1234567890", 1, S("ab1de")); - test(S("abcde"), 2, 1, "1234567890", 5, S("ab12345de")); - test(S("abcde"), 2, 1, "1234567890", 9, S("ab123456789de")); - test(S("abcde"), 2, 1, "1234567890", 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, "12345678901234567890", 0, S("abde")); - test(S("abcde"), 2, 1, "12345678901234567890", 1, S("ab1de")); - test(S("abcde"), 2, 1, "12345678901234567890", 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, "12345678901234567890", 19, S("ab1234567890123456789de")); - test(S("abcde"), 2, 1, "12345678901234567890", 20, S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, "", 0, S("abe")); - test(S("abcde"), 2, 2, "12345", 0, S("abe")); - test(S("abcde"), 2, 2, "12345", 1, S("ab1e")); - test(S("abcde"), 2, 2, "12345", 2, S("ab12e")); - test(S("abcde"), 2, 2, "12345", 4, S("ab1234e")); - test(S("abcde"), 2, 2, "12345", 5, S("ab12345e")); - test(S("abcde"), 2, 2, "1234567890", 0, S("abe")); - test(S("abcde"), 2, 2, "1234567890", 1, S("ab1e")); - test(S("abcde"), 2, 2, "1234567890", 5, S("ab12345e")); - test(S("abcde"), 2, 2, "1234567890", 9, S("ab123456789e")); - test(S("abcde"), 2, 2, "1234567890", 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, "12345678901234567890", 0, S("abe")); - test(S("abcde"), 2, 2, "12345678901234567890", 1, S("ab1e")); - test(S("abcde"), 2, 2, "12345678901234567890", 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, "12345678901234567890", 19, S("ab1234567890123456789e")); - test(S("abcde"), 2, 2, "12345678901234567890", 20, S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, "", 0, S("ab")); - test(S("abcde"), 2, 3, "12345", 0, S("ab")); - test(S("abcde"), 2, 3, "12345", 1, S("ab1")); - test(S("abcde"), 2, 3, "12345", 2, S("ab12")); - test(S("abcde"), 2, 3, "12345", 4, S("ab1234")); - test(S("abcde"), 2, 3, "12345", 5, S("ab12345")); - test(S("abcde"), 2, 3, "1234567890", 0, S("ab")); - test(S("abcde"), 2, 3, "1234567890", 1, S("ab1")); - test(S("abcde"), 2, 3, "1234567890", 5, S("ab12345")); - test(S("abcde"), 2, 3, "1234567890", 9, S("ab123456789")); - test(S("abcde"), 2, 3, "1234567890", 10, S("ab1234567890")); - test(S("abcde"), 2, 3, "12345678901234567890", 0, S("ab")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcde"), 1, 3, "1234567890", 5, S("a12345e")); + test(S("abcde"), 1, 3, "1234567890", 9, S("a123456789e")); + test(S("abcde"), 1, 3, "1234567890", 10, S("a1234567890e")); + test(S("abcde"), 1, 3, "12345678901234567890", 0, S("ae")); + test(S("abcde"), 1, 3, "12345678901234567890", 1, S("a1e")); + test(S("abcde"), 1, 3, "12345678901234567890", 10, S("a1234567890e")); + test(S("abcde"), 1, 3, "12345678901234567890", 19, S("a1234567890123456789e")); + test(S("abcde"), 1, 3, "12345678901234567890", 20, S("a12345678901234567890e")); + test(S("abcde"), 1, 4, "", 0, S("a")); + test(S("abcde"), 1, 4, "12345", 0, S("a")); + test(S("abcde"), 1, 4, "12345", 1, S("a1")); + test(S("abcde"), 1, 4, "12345", 2, S("a12")); + test(S("abcde"), 1, 4, "12345", 4, S("a1234")); + test(S("abcde"), 1, 4, "12345", 5, S("a12345")); + test(S("abcde"), 1, 4, "1234567890", 0, S("a")); + test(S("abcde"), 1, 4, "1234567890", 1, S("a1")); + test(S("abcde"), 1, 4, "1234567890", 5, S("a12345")); + test(S("abcde"), 1, 4, "1234567890", 9, S("a123456789")); + test(S("abcde"), 1, 4, "1234567890", 10, S("a1234567890")); + test(S("abcde"), 1, 4, "12345678901234567890", 0, S("a")); + test(S("abcde"), 1, 4, "12345678901234567890", 1, S("a1")); + test(S("abcde"), 1, 4, "12345678901234567890", 10, S("a1234567890")); + test(S("abcde"), 1, 4, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcde"), 1, 4, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcde"), 1, 5, "", 0, S("a")); + test(S("abcde"), 1, 5, "12345", 0, S("a")); + test(S("abcde"), 1, 5, "12345", 1, S("a1")); + test(S("abcde"), 1, 5, "12345", 2, S("a12")); + test(S("abcde"), 1, 5, "12345", 4, S("a1234")); + test(S("abcde"), 1, 5, "12345", 5, S("a12345")); + test(S("abcde"), 1, 5, "1234567890", 0, S("a")); + test(S("abcde"), 1, 5, "1234567890", 1, S("a1")); + test(S("abcde"), 1, 5, "1234567890", 5, S("a12345")); + test(S("abcde"), 1, 5, "1234567890", 9, S("a123456789")); + test(S("abcde"), 1, 5, "1234567890", 10, S("a1234567890")); + test(S("abcde"), 1, 5, "12345678901234567890", 0, S("a")); + test(S("abcde"), 1, 5, "12345678901234567890", 1, S("a1")); + test(S("abcde"), 1, 5, "12345678901234567890", 10, S("a1234567890")); + test(S("abcde"), 1, 5, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcde"), 1, 5, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcde"), 2, 0, "", 0, S("abcde")); + test(S("abcde"), 2, 0, "12345", 0, S("abcde")); + test(S("abcde"), 2, 0, "12345", 1, S("ab1cde")); + test(S("abcde"), 2, 0, "12345", 2, S("ab12cde")); + test(S("abcde"), 2, 0, "12345", 4, S("ab1234cde")); + test(S("abcde"), 2, 0, "12345", 5, S("ab12345cde")); + test(S("abcde"), 2, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 2, 0, "1234567890", 1, S("ab1cde")); + test(S("abcde"), 2, 0, "1234567890", 5, S("ab12345cde")); + test(S("abcde"), 2, 0, "1234567890", 9, S("ab123456789cde")); + test(S("abcde"), 2, 0, "1234567890", 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 2, 0, "12345678901234567890", 1, S("ab1cde")); + test(S("abcde"), 2, 0, "12345678901234567890", 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, "12345678901234567890", 19, S("ab1234567890123456789cde")); + test(S("abcde"), 2, 0, "12345678901234567890", 20, S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, "", 0, S("abde")); + test(S("abcde"), 2, 1, "12345", 0, S("abde")); + test(S("abcde"), 2, 1, "12345", 1, S("ab1de")); + test(S("abcde"), 2, 1, "12345", 2, S("ab12de")); + test(S("abcde"), 2, 1, "12345", 4, S("ab1234de")); + test(S("abcde"), 2, 1, "12345", 5, S("ab12345de")); + test(S("abcde"), 2, 1, "1234567890", 0, S("abde")); + test(S("abcde"), 2, 1, "1234567890", 1, S("ab1de")); + test(S("abcde"), 2, 1, "1234567890", 5, S("ab12345de")); + test(S("abcde"), 2, 1, "1234567890", 9, S("ab123456789de")); + test(S("abcde"), 2, 1, "1234567890", 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, "12345678901234567890", 0, S("abde")); + test(S("abcde"), 2, 1, "12345678901234567890", 1, S("ab1de")); + test(S("abcde"), 2, 1, "12345678901234567890", 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, "12345678901234567890", 19, S("ab1234567890123456789de")); + test(S("abcde"), 2, 1, "12345678901234567890", 20, S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, "", 0, S("abe")); + test(S("abcde"), 2, 2, "12345", 0, S("abe")); + test(S("abcde"), 2, 2, "12345", 1, S("ab1e")); + test(S("abcde"), 2, 2, "12345", 2, S("ab12e")); + test(S("abcde"), 2, 2, "12345", 4, S("ab1234e")); + test(S("abcde"), 2, 2, "12345", 5, S("ab12345e")); + test(S("abcde"), 2, 2, "1234567890", 0, S("abe")); + test(S("abcde"), 2, 2, "1234567890", 1, S("ab1e")); + test(S("abcde"), 2, 2, "1234567890", 5, S("ab12345e")); + test(S("abcde"), 2, 2, "1234567890", 9, S("ab123456789e")); + test(S("abcde"), 2, 2, "1234567890", 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, "12345678901234567890", 0, S("abe")); + test(S("abcde"), 2, 2, "12345678901234567890", 1, S("ab1e")); + test(S("abcde"), 2, 2, "12345678901234567890", 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, "12345678901234567890", 19, S("ab1234567890123456789e")); + test(S("abcde"), 2, 2, "12345678901234567890", 20, S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, "", 0, S("ab")); + test(S("abcde"), 2, 3, "12345", 0, S("ab")); + test(S("abcde"), 2, 3, "12345", 1, S("ab1")); + test(S("abcde"), 2, 3, "12345", 2, S("ab12")); + test(S("abcde"), 2, 3, "12345", 4, S("ab1234")); + test(S("abcde"), 2, 3, "12345", 5, S("ab12345")); + test(S("abcde"), 2, 3, "1234567890", 0, S("ab")); + test(S("abcde"), 2, 3, "1234567890", 1, S("ab1")); + test(S("abcde"), 2, 3, "1234567890", 5, S("ab12345")); + test(S("abcde"), 2, 3, "1234567890", 9, S("ab123456789")); + test(S("abcde"), 2, 3, "1234567890", 10, S("ab1234567890")); + test(S("abcde"), 2, 3, "12345678901234567890", 0, S("ab")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcde"), 2, 3, "12345678901234567890", 1, S("ab1")); - test(S("abcde"), 2, 3, "12345678901234567890", 10, S("ab1234567890")); - test(S("abcde"), 2, 3, "12345678901234567890", 19, S("ab1234567890123456789")); - test(S("abcde"), 2, 3, "12345678901234567890", 20, S("ab12345678901234567890")); - test(S("abcde"), 2, 4, "", 0, S("ab")); - test(S("abcde"), 2, 4, "12345", 0, S("ab")); - test(S("abcde"), 2, 4, "12345", 1, S("ab1")); - test(S("abcde"), 2, 4, "12345", 2, S("ab12")); - test(S("abcde"), 2, 4, "12345", 4, S("ab1234")); - test(S("abcde"), 2, 4, "12345", 5, S("ab12345")); - test(S("abcde"), 2, 4, "1234567890", 0, S("ab")); - test(S("abcde"), 2, 4, "1234567890", 1, S("ab1")); - test(S("abcde"), 2, 4, "1234567890", 5, S("ab12345")); - test(S("abcde"), 2, 4, "1234567890", 9, S("ab123456789")); - test(S("abcde"), 2, 4, "1234567890", 10, S("ab1234567890")); - test(S("abcde"), 2, 4, "12345678901234567890", 0, S("ab")); - test(S("abcde"), 2, 4, "12345678901234567890", 1, S("ab1")); - test(S("abcde"), 2, 4, "12345678901234567890", 10, S("ab1234567890")); - test(S("abcde"), 2, 4, "12345678901234567890", 19, S("ab1234567890123456789")); - test(S("abcde"), 2, 4, "12345678901234567890", 20, S("ab12345678901234567890")); - test(S("abcde"), 4, 0, "", 0, S("abcde")); - test(S("abcde"), 4, 0, "12345", 0, S("abcde")); - test(S("abcde"), 4, 0, "12345", 1, S("abcd1e")); - test(S("abcde"), 4, 0, "12345", 2, S("abcd12e")); - test(S("abcde"), 4, 0, "12345", 4, S("abcd1234e")); - test(S("abcde"), 4, 0, "12345", 5, S("abcd12345e")); - test(S("abcde"), 4, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 4, 0, "1234567890", 1, S("abcd1e")); - test(S("abcde"), 4, 0, "1234567890", 5, S("abcd12345e")); - test(S("abcde"), 4, 0, "1234567890", 9, S("abcd123456789e")); - test(S("abcde"), 4, 0, "1234567890", 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 4, 0, "12345678901234567890", 1, S("abcd1e")); - test(S("abcde"), 4, 0, "12345678901234567890", 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, "12345678901234567890", 19, S("abcd1234567890123456789e")); - test(S("abcde"), 4, 0, "12345678901234567890", 20, S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, "", 0, S("abcd")); - test(S("abcde"), 4, 1, "12345", 0, S("abcd")); - test(S("abcde"), 4, 1, "12345", 1, S("abcd1")); - test(S("abcde"), 4, 1, "12345", 2, S("abcd12")); - test(S("abcde"), 4, 1, "12345", 4, S("abcd1234")); - test(S("abcde"), 4, 1, "12345", 5, S("abcd12345")); - test(S("abcde"), 4, 1, "1234567890", 0, S("abcd")); - test(S("abcde"), 4, 1, "1234567890", 1, S("abcd1")); - test(S("abcde"), 4, 1, "1234567890", 5, S("abcd12345")); - test(S("abcde"), 4, 1, "1234567890", 9, S("abcd123456789")); - test(S("abcde"), 4, 1, "1234567890", 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, "12345678901234567890", 0, S("abcd")); - test(S("abcde"), 4, 1, "12345678901234567890", 1, S("abcd1")); - test(S("abcde"), 4, 1, "12345678901234567890", 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, "12345678901234567890", 19, S("abcd1234567890123456789")); - test(S("abcde"), 4, 1, "12345678901234567890", 20, S("abcd12345678901234567890")); - test(S("abcde"), 4, 2, "", 0, S("abcd")); - test(S("abcde"), 4, 2, "12345", 0, S("abcd")); - test(S("abcde"), 4, 2, "12345", 1, S("abcd1")); - test(S("abcde"), 4, 2, "12345", 2, S("abcd12")); - test(S("abcde"), 4, 2, "12345", 4, S("abcd1234")); - test(S("abcde"), 4, 2, "12345", 5, S("abcd12345")); - test(S("abcde"), 4, 2, "1234567890", 0, S("abcd")); - test(S("abcde"), 4, 2, "1234567890", 1, S("abcd1")); - test(S("abcde"), 4, 2, "1234567890", 5, S("abcd12345")); - test(S("abcde"), 4, 2, "1234567890", 9, S("abcd123456789")); - test(S("abcde"), 4, 2, "1234567890", 10, S("abcd1234567890")); - test(S("abcde"), 4, 2, "12345678901234567890", 0, S("abcd")); - test(S("abcde"), 4, 2, "12345678901234567890", 1, S("abcd1")); - test(S("abcde"), 4, 2, "12345678901234567890", 10, S("abcd1234567890")); - test(S("abcde"), 4, 2, "12345678901234567890", 19, S("abcd1234567890123456789")); - test(S("abcde"), 4, 2, "12345678901234567890", 20, S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, "", 0, S("abcde")); - test(S("abcde"), 5, 0, "12345", 0, S("abcde")); - test(S("abcde"), 5, 0, "12345", 1, S("abcde1")); - test(S("abcde"), 5, 0, "12345", 2, S("abcde12")); - test(S("abcde"), 5, 0, "12345", 4, S("abcde1234")); - test(S("abcde"), 5, 0, "12345", 5, S("abcde12345")); - test(S("abcde"), 5, 0, "1234567890", 0, S("abcde")); - test(S("abcde"), 5, 0, "1234567890", 1, S("abcde1")); - test(S("abcde"), 5, 0, "1234567890", 5, S("abcde12345")); - test(S("abcde"), 5, 0, "1234567890", 9, S("abcde123456789")); - test(S("abcde"), 5, 0, "1234567890", 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 5, 0, "12345678901234567890", 1, S("abcde1")); - test(S("abcde"), 5, 0, "12345678901234567890", 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890")); - test(S("abcde"), 5, 1, "", 0, S("abcde")); - test(S("abcde"), 5, 1, "12345", 0, S("abcde")); - test(S("abcde"), 5, 1, "12345", 1, S("abcde1")); - test(S("abcde"), 5, 1, "12345", 2, S("abcde12")); - test(S("abcde"), 5, 1, "12345", 4, S("abcde1234")); - test(S("abcde"), 5, 1, "12345", 5, S("abcde12345")); - test(S("abcde"), 5, 1, "1234567890", 0, S("abcde")); - test(S("abcde"), 5, 1, "1234567890", 1, S("abcde1")); - test(S("abcde"), 5, 1, "1234567890", 5, S("abcde12345")); - test(S("abcde"), 5, 1, "1234567890", 9, S("abcde123456789")); - test(S("abcde"), 5, 1, "1234567890", 10, S("abcde1234567890")); - test(S("abcde"), 5, 1, "12345678901234567890", 0, S("abcde")); - test(S("abcde"), 5, 1, "12345678901234567890", 1, S("abcde1")); - test(S("abcde"), 5, 1, "12345678901234567890", 10, S("abcde1234567890")); - test(S("abcde"), 5, 1, "12345678901234567890", 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, 1, "12345678901234567890", 20, S("abcde12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcde"), 2, 3, "12345678901234567890", 1, S("ab1")); + test(S("abcde"), 2, 3, "12345678901234567890", 10, S("ab1234567890")); + test(S("abcde"), 2, 3, "12345678901234567890", 19, S("ab1234567890123456789")); + test(S("abcde"), 2, 3, "12345678901234567890", 20, S("ab12345678901234567890")); + test(S("abcde"), 2, 4, "", 0, S("ab")); + test(S("abcde"), 2, 4, "12345", 0, S("ab")); + test(S("abcde"), 2, 4, "12345", 1, S("ab1")); + test(S("abcde"), 2, 4, "12345", 2, S("ab12")); + test(S("abcde"), 2, 4, "12345", 4, S("ab1234")); + test(S("abcde"), 2, 4, "12345", 5, S("ab12345")); + test(S("abcde"), 2, 4, "1234567890", 0, S("ab")); + test(S("abcde"), 2, 4, "1234567890", 1, S("ab1")); + test(S("abcde"), 2, 4, "1234567890", 5, S("ab12345")); + test(S("abcde"), 2, 4, "1234567890", 9, S("ab123456789")); + test(S("abcde"), 2, 4, "1234567890", 10, S("ab1234567890")); + test(S("abcde"), 2, 4, "12345678901234567890", 0, S("ab")); + test(S("abcde"), 2, 4, "12345678901234567890", 1, S("ab1")); + test(S("abcde"), 2, 4, "12345678901234567890", 10, S("ab1234567890")); + test(S("abcde"), 2, 4, "12345678901234567890", 19, S("ab1234567890123456789")); + test(S("abcde"), 2, 4, "12345678901234567890", 20, S("ab12345678901234567890")); + test(S("abcde"), 4, 0, "", 0, S("abcde")); + test(S("abcde"), 4, 0, "12345", 0, S("abcde")); + test(S("abcde"), 4, 0, "12345", 1, S("abcd1e")); + test(S("abcde"), 4, 0, "12345", 2, S("abcd12e")); + test(S("abcde"), 4, 0, "12345", 4, S("abcd1234e")); + test(S("abcde"), 4, 0, "12345", 5, S("abcd12345e")); + test(S("abcde"), 4, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 4, 0, "1234567890", 1, S("abcd1e")); + test(S("abcde"), 4, 0, "1234567890", 5, S("abcd12345e")); + test(S("abcde"), 4, 0, "1234567890", 9, S("abcd123456789e")); + test(S("abcde"), 4, 0, "1234567890", 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 4, 0, "12345678901234567890", 1, S("abcd1e")); + test(S("abcde"), 4, 0, "12345678901234567890", 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, "12345678901234567890", 19, S("abcd1234567890123456789e")); + test(S("abcde"), 4, 0, "12345678901234567890", 20, S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, "", 0, S("abcd")); + test(S("abcde"), 4, 1, "12345", 0, S("abcd")); + test(S("abcde"), 4, 1, "12345", 1, S("abcd1")); + test(S("abcde"), 4, 1, "12345", 2, S("abcd12")); + test(S("abcde"), 4, 1, "12345", 4, S("abcd1234")); + test(S("abcde"), 4, 1, "12345", 5, S("abcd12345")); + test(S("abcde"), 4, 1, "1234567890", 0, S("abcd")); + test(S("abcde"), 4, 1, "1234567890", 1, S("abcd1")); + test(S("abcde"), 4, 1, "1234567890", 5, S("abcd12345")); + test(S("abcde"), 4, 1, "1234567890", 9, S("abcd123456789")); + test(S("abcde"), 4, 1, "1234567890", 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, "12345678901234567890", 0, S("abcd")); + test(S("abcde"), 4, 1, "12345678901234567890", 1, S("abcd1")); + test(S("abcde"), 4, 1, "12345678901234567890", 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, "12345678901234567890", 19, S("abcd1234567890123456789")); + test(S("abcde"), 4, 1, "12345678901234567890", 20, S("abcd12345678901234567890")); + test(S("abcde"), 4, 2, "", 0, S("abcd")); + test(S("abcde"), 4, 2, "12345", 0, S("abcd")); + test(S("abcde"), 4, 2, "12345", 1, S("abcd1")); + test(S("abcde"), 4, 2, "12345", 2, S("abcd12")); + test(S("abcde"), 4, 2, "12345", 4, S("abcd1234")); + test(S("abcde"), 4, 2, "12345", 5, S("abcd12345")); + test(S("abcde"), 4, 2, "1234567890", 0, S("abcd")); + test(S("abcde"), 4, 2, "1234567890", 1, S("abcd1")); + test(S("abcde"), 4, 2, "1234567890", 5, S("abcd12345")); + test(S("abcde"), 4, 2, "1234567890", 9, S("abcd123456789")); + test(S("abcde"), 4, 2, "1234567890", 10, S("abcd1234567890")); + test(S("abcde"), 4, 2, "12345678901234567890", 0, S("abcd")); + test(S("abcde"), 4, 2, "12345678901234567890", 1, S("abcd1")); + test(S("abcde"), 4, 2, "12345678901234567890", 10, S("abcd1234567890")); + test(S("abcde"), 4, 2, "12345678901234567890", 19, S("abcd1234567890123456789")); + test(S("abcde"), 4, 2, "12345678901234567890", 20, S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, "", 0, S("abcde")); + test(S("abcde"), 5, 0, "12345", 0, S("abcde")); + test(S("abcde"), 5, 0, "12345", 1, S("abcde1")); + test(S("abcde"), 5, 0, "12345", 2, S("abcde12")); + test(S("abcde"), 5, 0, "12345", 4, S("abcde1234")); + test(S("abcde"), 5, 0, "12345", 5, S("abcde12345")); + test(S("abcde"), 5, 0, "1234567890", 0, S("abcde")); + test(S("abcde"), 5, 0, "1234567890", 1, S("abcde1")); + test(S("abcde"), 5, 0, "1234567890", 5, S("abcde12345")); + test(S("abcde"), 5, 0, "1234567890", 9, S("abcde123456789")); + test(S("abcde"), 5, 0, "1234567890", 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 5, 0, "12345678901234567890", 1, S("abcde1")); + test(S("abcde"), 5, 0, "12345678901234567890", 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890")); + test(S("abcde"), 5, 1, "", 0, S("abcde")); + test(S("abcde"), 5, 1, "12345", 0, S("abcde")); + test(S("abcde"), 5, 1, "12345", 1, S("abcde1")); + test(S("abcde"), 5, 1, "12345", 2, S("abcde12")); + test(S("abcde"), 5, 1, "12345", 4, S("abcde1234")); + test(S("abcde"), 5, 1, "12345", 5, S("abcde12345")); + test(S("abcde"), 5, 1, "1234567890", 0, S("abcde")); + test(S("abcde"), 5, 1, "1234567890", 1, S("abcde1")); + test(S("abcde"), 5, 1, "1234567890", 5, S("abcde12345")); + test(S("abcde"), 5, 1, "1234567890", 9, S("abcde123456789")); + test(S("abcde"), 5, 1, "1234567890", 10, S("abcde1234567890")); + test(S("abcde"), 5, 1, "12345678901234567890", 0, S("abcde")); + test(S("abcde"), 5, 1, "12345678901234567890", 1, S("abcde1")); + test(S("abcde"), 5, 1, "12345678901234567890", 10, S("abcde1234567890")); + test(S("abcde"), 5, 1, "12345678901234567890", 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, 1, "12345678901234567890", 20, S("abcde12345678901234567890")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcde"), 6, 0, "", 0, S("can't happen")); - test(S("abcde"), 6, 0, "12345", 0, S("can't happen")); - test(S("abcde"), 6, 0, "12345", 1, S("can't happen")); - test(S("abcde"), 6, 0, "12345", 2, S("can't happen")); - test(S("abcde"), 6, 0, "12345", 4, S("can't happen")); - test(S("abcde"), 6, 0, "12345", 5, S("can't happen")); - test(S("abcde"), 6, 0, "1234567890", 0, S("can't happen")); - test(S("abcde"), 6, 0, "1234567890", 1, S("can't happen")); - test(S("abcde"), 6, 0, "1234567890", 5, S("can't happen")); - test(S("abcde"), 6, 0, "1234567890", 9, S("can't happen")); - test(S("abcde"), 6, 0, "1234567890", 10, S("can't happen")); - test(S("abcde"), 6, 0, "12345678901234567890", 0, S("can't happen")); - test(S("abcde"), 6, 0, "12345678901234567890", 1, S("can't happen")); - test(S("abcde"), 6, 0, "12345678901234567890", 10, S("can't happen")); - test(S("abcde"), 6, 0, "12345678901234567890", 19, S("can't happen")); - test(S("abcde"), 6, 0, "12345678901234567890", 20, S("can't happen")); - test(S("abcdefghij"), 0, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 2, S("12abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 4, S("1234abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345", 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, "1234567890", 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, "", 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 2, S("12bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 4, S("1234bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345", 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 9, S("123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, "1234567890", 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, "", 0, S("fghij")); - test(S("abcdefghij"), 0, 5, "12345", 0, S("fghij")); - test(S("abcdefghij"), 0, 5, "12345", 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, "12345", 2, S("12fghij")); - test(S("abcdefghij"), 0, 5, "12345", 4, S("1234fghij")); - test(S("abcdefghij"), 0, 5, "12345", 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 0, S("fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 9, S("123456789fghij")); - test(S("abcdefghij"), 0, 5, "1234567890", 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 0, S("fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 19, S("1234567890123456789fghij")); - test(S("abcdefghij"), 0, 5, "12345678901234567890", 20, S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, "", 0, S("j")); - test(S("abcdefghij"), 0, 9, "12345", 0, S("j")); - test(S("abcdefghij"), 0, 9, "12345", 1, S("1j")); - test(S("abcdefghij"), 0, 9, "12345", 2, S("12j")); - test(S("abcdefghij"), 0, 9, "12345", 4, S("1234j")); - test(S("abcdefghij"), 0, 9, "12345", 5, S("12345j")); - test(S("abcdefghij"), 0, 9, "1234567890", 0, S("j")); - test(S("abcdefghij"), 0, 9, "1234567890", 1, S("1j")); - test(S("abcdefghij"), 0, 9, "1234567890", 5, S("12345j")); - test(S("abcdefghij"), 0, 9, "1234567890", 9, S("123456789j")); - test(S("abcdefghij"), 0, 9, "1234567890", 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 0, S("j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 1, S("1j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 19, S("1234567890123456789j")); - test(S("abcdefghij"), 0, 9, "12345678901234567890", 20, S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, "", 0, S("")); - test(S("abcdefghij"), 0, 10, "12345", 0, S("")); - test(S("abcdefghij"), 0, 10, "12345", 1, S("1")); - test(S("abcdefghij"), 0, 10, "12345", 2, S("12")); - test(S("abcdefghij"), 0, 10, "12345", 4, S("1234")); - test(S("abcdefghij"), 0, 10, "12345", 5, S("12345")); - test(S("abcdefghij"), 0, 10, "1234567890", 0, S("")); - test(S("abcdefghij"), 0, 10, "1234567890", 1, S("1")); - test(S("abcdefghij"), 0, 10, "1234567890", 5, S("12345")); - test(S("abcdefghij"), 0, 10, "1234567890", 9, S("123456789")); - test(S("abcdefghij"), 0, 10, "1234567890", 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 0, S("")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 1, S("1")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcdefghij"), 0, 10, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcdefghij"), 0, 11, "", 0, S("")); - test(S("abcdefghij"), 0, 11, "12345", 0, S("")); - test(S("abcdefghij"), 0, 11, "12345", 1, S("1")); - test(S("abcdefghij"), 0, 11, "12345", 2, S("12")); +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcde"), 6, 0, "", 0, S("can't happen")); + test(S("abcde"), 6, 0, "12345", 0, S("can't happen")); + test(S("abcde"), 6, 0, "12345", 1, S("can't happen")); + test(S("abcde"), 6, 0, "12345", 2, S("can't happen")); + test(S("abcde"), 6, 0, "12345", 4, S("can't happen")); + test(S("abcde"), 6, 0, "12345", 5, S("can't happen")); + test(S("abcde"), 6, 0, "1234567890", 0, S("can't happen")); + test(S("abcde"), 6, 0, "1234567890", 1, S("can't happen")); + test(S("abcde"), 6, 0, "1234567890", 5, S("can't happen")); + test(S("abcde"), 6, 0, "1234567890", 9, S("can't happen")); + test(S("abcde"), 6, 0, "1234567890", 10, S("can't happen")); + test(S("abcde"), 6, 0, "12345678901234567890", 0, S("can't happen")); + test(S("abcde"), 6, 0, "12345678901234567890", 1, S("can't happen")); + test(S("abcde"), 6, 0, "12345678901234567890", 10, S("can't happen")); + test(S("abcde"), 6, 0, "12345678901234567890", 19, S("can't happen")); + test(S("abcde"), 6, 0, "12345678901234567890", 20, S("can't happen")); + test(S("abcdefghij"), 0, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 2, S("12abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 4, S("1234abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345", 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, "1234567890", 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, "", 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 2, S("12bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 4, S("1234bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345", 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 9, S("123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, "1234567890", 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, "", 0, S("fghij")); + test(S("abcdefghij"), 0, 5, "12345", 0, S("fghij")); + test(S("abcdefghij"), 0, 5, "12345", 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, "12345", 2, S("12fghij")); + test(S("abcdefghij"), 0, 5, "12345", 4, S("1234fghij")); + test(S("abcdefghij"), 0, 5, "12345", 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 0, S("fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 9, S("123456789fghij")); + test(S("abcdefghij"), 0, 5, "1234567890", 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 0, S("fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 19, S("1234567890123456789fghij")); + test(S("abcdefghij"), 0, 5, "12345678901234567890", 20, S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, "", 0, S("j")); + test(S("abcdefghij"), 0, 9, "12345", 0, S("j")); + test(S("abcdefghij"), 0, 9, "12345", 1, S("1j")); + test(S("abcdefghij"), 0, 9, "12345", 2, S("12j")); + test(S("abcdefghij"), 0, 9, "12345", 4, S("1234j")); + test(S("abcdefghij"), 0, 9, "12345", 5, S("12345j")); + test(S("abcdefghij"), 0, 9, "1234567890", 0, S("j")); + test(S("abcdefghij"), 0, 9, "1234567890", 1, S("1j")); + test(S("abcdefghij"), 0, 9, "1234567890", 5, S("12345j")); + test(S("abcdefghij"), 0, 9, "1234567890", 9, S("123456789j")); + test(S("abcdefghij"), 0, 9, "1234567890", 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 0, S("j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 1, S("1j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 19, S("1234567890123456789j")); + test(S("abcdefghij"), 0, 9, "12345678901234567890", 20, S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, "", 0, S("")); + test(S("abcdefghij"), 0, 10, "12345", 0, S("")); + test(S("abcdefghij"), 0, 10, "12345", 1, S("1")); + test(S("abcdefghij"), 0, 10, "12345", 2, S("12")); + test(S("abcdefghij"), 0, 10, "12345", 4, S("1234")); + test(S("abcdefghij"), 0, 10, "12345", 5, S("12345")); + test(S("abcdefghij"), 0, 10, "1234567890", 0, S("")); + test(S("abcdefghij"), 0, 10, "1234567890", 1, S("1")); + test(S("abcdefghij"), 0, 10, "1234567890", 5, S("12345")); + test(S("abcdefghij"), 0, 10, "1234567890", 9, S("123456789")); + test(S("abcdefghij"), 0, 10, "1234567890", 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 0, S("")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 1, S("1")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcdefghij"), 0, 10, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcdefghij"), 0, 11, "", 0, S("")); + test(S("abcdefghij"), 0, 11, "12345", 0, S("")); + test(S("abcdefghij"), 0, 11, "12345", 1, S("1")); + test(S("abcdefghij"), 0, 11, "12345", 2, S("12")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcdefghij"), 0, 11, "12345", 4, S("1234")); - test(S("abcdefghij"), 0, 11, "12345", 5, S("12345")); - test(S("abcdefghij"), 0, 11, "1234567890", 0, S("")); - test(S("abcdefghij"), 0, 11, "1234567890", 1, S("1")); - test(S("abcdefghij"), 0, 11, "1234567890", 5, S("12345")); - test(S("abcdefghij"), 0, 11, "1234567890", 9, S("123456789")); - test(S("abcdefghij"), 0, 11, "1234567890", 10, S("1234567890")); - test(S("abcdefghij"), 0, 11, "12345678901234567890", 0, S("")); - test(S("abcdefghij"), 0, 11, "12345678901234567890", 1, S("1")); - test(S("abcdefghij"), 0, 11, "12345678901234567890", 10, S("1234567890")); - test(S("abcdefghij"), 0, 11, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcdefghij"), 0, 11, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 2, S("a12bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 4, S("a1234bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345", 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, "1234567890", 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, "", 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 2, S("a12cdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 4, S("a1234cdefghij")); - test(S("abcdefghij"), 1, 1, "12345", 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 9, S("a123456789cdefghij")); - test(S("abcdefghij"), 1, 1, "1234567890", 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghij")); - test(S("abcdefghij"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 4, "", 0, S("afghij")); - test(S("abcdefghij"), 1, 4, "12345", 0, S("afghij")); - test(S("abcdefghij"), 1, 4, "12345", 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, "12345", 2, S("a12fghij")); - test(S("abcdefghij"), 1, 4, "12345", 4, S("a1234fghij")); - test(S("abcdefghij"), 1, 4, "12345", 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 0, S("afghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 9, S("a123456789fghij")); - test(S("abcdefghij"), 1, 4, "1234567890", 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 0, S("afghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 19, S("a1234567890123456789fghij")); - test(S("abcdefghij"), 1, 4, "12345678901234567890", 20, S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, "", 0, S("aj")); - test(S("abcdefghij"), 1, 8, "12345", 0, S("aj")); - test(S("abcdefghij"), 1, 8, "12345", 1, S("a1j")); - test(S("abcdefghij"), 1, 8, "12345", 2, S("a12j")); - test(S("abcdefghij"), 1, 8, "12345", 4, S("a1234j")); - test(S("abcdefghij"), 1, 8, "12345", 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, "1234567890", 0, S("aj")); - test(S("abcdefghij"), 1, 8, "1234567890", 1, S("a1j")); - test(S("abcdefghij"), 1, 8, "1234567890", 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, "1234567890", 9, S("a123456789j")); - test(S("abcdefghij"), 1, 8, "1234567890", 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 0, S("aj")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 1, S("a1j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 19, S("a1234567890123456789j")); - test(S("abcdefghij"), 1, 8, "12345678901234567890", 20, S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, "", 0, S("a")); - test(S("abcdefghij"), 1, 9, "12345", 0, S("a")); - test(S("abcdefghij"), 1, 9, "12345", 1, S("a1")); - test(S("abcdefghij"), 1, 9, "12345", 2, S("a12")); - test(S("abcdefghij"), 1, 9, "12345", 4, S("a1234")); - test(S("abcdefghij"), 1, 9, "12345", 5, S("a12345")); - test(S("abcdefghij"), 1, 9, "1234567890", 0, S("a")); - test(S("abcdefghij"), 1, 9, "1234567890", 1, S("a1")); - test(S("abcdefghij"), 1, 9, "1234567890", 5, S("a12345")); - test(S("abcdefghij"), 1, 9, "1234567890", 9, S("a123456789")); - test(S("abcdefghij"), 1, 9, "1234567890", 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 0, S("a")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 1, S("a1")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcdefghij"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 10, "", 0, S("a")); - test(S("abcdefghij"), 1, 10, "12345", 0, S("a")); - test(S("abcdefghij"), 1, 10, "12345", 1, S("a1")); - test(S("abcdefghij"), 1, 10, "12345", 2, S("a12")); - test(S("abcdefghij"), 1, 10, "12345", 4, S("a1234")); - test(S("abcdefghij"), 1, 10, "12345", 5, S("a12345")); - test(S("abcdefghij"), 1, 10, "1234567890", 0, S("a")); - test(S("abcdefghij"), 1, 10, "1234567890", 1, S("a1")); +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcdefghij"), 0, 11, "12345", 4, S("1234")); + test(S("abcdefghij"), 0, 11, "12345", 5, S("12345")); + test(S("abcdefghij"), 0, 11, "1234567890", 0, S("")); + test(S("abcdefghij"), 0, 11, "1234567890", 1, S("1")); + test(S("abcdefghij"), 0, 11, "1234567890", 5, S("12345")); + test(S("abcdefghij"), 0, 11, "1234567890", 9, S("123456789")); + test(S("abcdefghij"), 0, 11, "1234567890", 10, S("1234567890")); + test(S("abcdefghij"), 0, 11, "12345678901234567890", 0, S("")); + test(S("abcdefghij"), 0, 11, "12345678901234567890", 1, S("1")); + test(S("abcdefghij"), 0, 11, "12345678901234567890", 10, S("1234567890")); + test(S("abcdefghij"), 0, 11, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcdefghij"), 0, 11, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 2, S("a12bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 4, S("a1234bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345", 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, "1234567890", 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, "", 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 2, S("a12cdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 4, S("a1234cdefghij")); + test(S("abcdefghij"), 1, 1, "12345", 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 9, S("a123456789cdefghij")); + test(S("abcdefghij"), 1, 1, "1234567890", 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghij")); + test(S("abcdefghij"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 4, "", 0, S("afghij")); + test(S("abcdefghij"), 1, 4, "12345", 0, S("afghij")); + test(S("abcdefghij"), 1, 4, "12345", 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, "12345", 2, S("a12fghij")); + test(S("abcdefghij"), 1, 4, "12345", 4, S("a1234fghij")); + test(S("abcdefghij"), 1, 4, "12345", 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 0, S("afghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 9, S("a123456789fghij")); + test(S("abcdefghij"), 1, 4, "1234567890", 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 0, S("afghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 19, S("a1234567890123456789fghij")); + test(S("abcdefghij"), 1, 4, "12345678901234567890", 20, S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, "", 0, S("aj")); + test(S("abcdefghij"), 1, 8, "12345", 0, S("aj")); + test(S("abcdefghij"), 1, 8, "12345", 1, S("a1j")); + test(S("abcdefghij"), 1, 8, "12345", 2, S("a12j")); + test(S("abcdefghij"), 1, 8, "12345", 4, S("a1234j")); + test(S("abcdefghij"), 1, 8, "12345", 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, "1234567890", 0, S("aj")); + test(S("abcdefghij"), 1, 8, "1234567890", 1, S("a1j")); + test(S("abcdefghij"), 1, 8, "1234567890", 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, "1234567890", 9, S("a123456789j")); + test(S("abcdefghij"), 1, 8, "1234567890", 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 0, S("aj")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 1, S("a1j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 19, S("a1234567890123456789j")); + test(S("abcdefghij"), 1, 8, "12345678901234567890", 20, S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, "", 0, S("a")); + test(S("abcdefghij"), 1, 9, "12345", 0, S("a")); + test(S("abcdefghij"), 1, 9, "12345", 1, S("a1")); + test(S("abcdefghij"), 1, 9, "12345", 2, S("a12")); + test(S("abcdefghij"), 1, 9, "12345", 4, S("a1234")); + test(S("abcdefghij"), 1, 9, "12345", 5, S("a12345")); + test(S("abcdefghij"), 1, 9, "1234567890", 0, S("a")); + test(S("abcdefghij"), 1, 9, "1234567890", 1, S("a1")); + test(S("abcdefghij"), 1, 9, "1234567890", 5, S("a12345")); + test(S("abcdefghij"), 1, 9, "1234567890", 9, S("a123456789")); + test(S("abcdefghij"), 1, 9, "1234567890", 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 0, S("a")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 1, S("a1")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcdefghij"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 10, "", 0, S("a")); + test(S("abcdefghij"), 1, 10, "12345", 0, S("a")); + test(S("abcdefghij"), 1, 10, "12345", 1, S("a1")); + test(S("abcdefghij"), 1, 10, "12345", 2, S("a12")); + test(S("abcdefghij"), 1, 10, "12345", 4, S("a1234")); + test(S("abcdefghij"), 1, 10, "12345", 5, S("a12345")); + test(S("abcdefghij"), 1, 10, "1234567890", 0, S("a")); + test(S("abcdefghij"), 1, 10, "1234567890", 1, S("a1")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcdefghij"), 1, 10, "1234567890", 5, S("a12345")); - test(S("abcdefghij"), 1, 10, "1234567890", 9, S("a123456789")); - test(S("abcdefghij"), 1, 10, "1234567890", 10, S("a1234567890")); - test(S("abcdefghij"), 1, 10, "12345678901234567890", 0, S("a")); - test(S("abcdefghij"), 1, 10, "12345678901234567890", 1, S("a1")); - test(S("abcdefghij"), 1, 10, "12345678901234567890", 10, S("a1234567890")); - test(S("abcdefghij"), 1, 10, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcdefghij"), 1, 10, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "12345", 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, "12345", 2, S("abcde12fghij")); - test(S("abcdefghij"), 5, 0, "12345", 4, S("abcde1234fghij")); - test(S("abcdefghij"), 5, 0, "12345", 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, 0, "1234567890", 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789fghij")); - test(S("abcdefghij"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, "", 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "12345", 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "12345", 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, "12345", 2, S("abcde12ghij")); - test(S("abcdefghij"), 5, 1, "12345", 4, S("abcde1234ghij")); - test(S("abcdefghij"), 5, 1, "12345", 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 9, S("abcde123456789ghij")); - test(S("abcdefghij"), 5, 1, "1234567890", 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 19, S("abcde1234567890123456789ghij")); - test(S("abcdefghij"), 5, 1, "12345678901234567890", 20, S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, "", 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, "12345", 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, "12345", 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, "12345", 2, S("abcde12hij")); - test(S("abcdefghij"), 5, 2, "12345", 4, S("abcde1234hij")); - test(S("abcdefghij"), 5, 2, "12345", 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, "1234567890", 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, "1234567890", 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, "1234567890", 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, "1234567890", 9, S("abcde123456789hij")); - test(S("abcdefghij"), 5, 2, "1234567890", 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 19, S("abcde1234567890123456789hij")); - test(S("abcdefghij"), 5, 2, "12345678901234567890", 20, S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, "", 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, "12345", 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, "12345", 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, "12345", 2, S("abcde12j")); - test(S("abcdefghij"), 5, 4, "12345", 4, S("abcde1234j")); - test(S("abcdefghij"), 5, 4, "12345", 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, "1234567890", 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, "1234567890", 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, "1234567890", 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, "1234567890", 9, S("abcde123456789j")); - test(S("abcdefghij"), 5, 4, "1234567890", 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 19, S("abcde1234567890123456789j")); - test(S("abcdefghij"), 5, 4, "12345678901234567890", 20, S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, "", 0, S("abcde")); - test(S("abcdefghij"), 5, 5, "12345", 0, S("abcde")); - test(S("abcdefghij"), 5, 5, "12345", 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, "12345", 2, S("abcde12")); - test(S("abcdefghij"), 5, 5, "12345", 4, S("abcde1234")); - test(S("abcdefghij"), 5, 5, "12345", 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, "1234567890", 0, S("abcde")); - test(S("abcdefghij"), 5, 5, "1234567890", 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, "1234567890", 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, "1234567890", 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 5, "1234567890", 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 0, S("abcde")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 19, S("abcde1234567890123456789")); - test(S("abcdefghij"), 5, 5, "12345678901234567890", 20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 6, "", 0, S("abcde")); - test(S("abcdefghij"), 5, 6, "12345", 0, S("abcde")); - test(S("abcdefghij"), 5, 6, "12345", 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, "12345", 2, S("abcde12")); - test(S("abcdefghij"), 5, 6, "12345", 4, S("abcde1234")); - test(S("abcdefghij"), 5, 6, "12345", 5, S("abcde12345")); - test(S("abcdefghij"), 5, 6, "1234567890", 0, S("abcde")); - test(S("abcdefghij"), 5, 6, "1234567890", 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, "1234567890", 5, S("abcde12345")); - test(S("abcdefghij"), 5, 6, "1234567890", 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 6, "1234567890", 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, "12345678901234567890", 0, S("abcde")); +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcdefghij"), 1, 10, "1234567890", 5, S("a12345")); + test(S("abcdefghij"), 1, 10, "1234567890", 9, S("a123456789")); + test(S("abcdefghij"), 1, 10, "1234567890", 10, S("a1234567890")); + test(S("abcdefghij"), 1, 10, "12345678901234567890", 0, S("a")); + test(S("abcdefghij"), 1, 10, "12345678901234567890", 1, S("a1")); + test(S("abcdefghij"), 1, 10, "12345678901234567890", 10, S("a1234567890")); + test(S("abcdefghij"), 1, 10, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcdefghij"), 1, 10, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "12345", 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, "12345", 2, S("abcde12fghij")); + test(S("abcdefghij"), 5, 0, "12345", 4, S("abcde1234fghij")); + test(S("abcdefghij"), 5, 0, "12345", 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, 0, "1234567890", 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 19, S("abcde1234567890123456789fghij")); + test(S("abcdefghij"), 5, 0, "12345678901234567890", 20, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, "", 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "12345", 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "12345", 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, "12345", 2, S("abcde12ghij")); + test(S("abcdefghij"), 5, 1, "12345", 4, S("abcde1234ghij")); + test(S("abcdefghij"), 5, 1, "12345", 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 9, S("abcde123456789ghij")); + test(S("abcdefghij"), 5, 1, "1234567890", 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 19, S("abcde1234567890123456789ghij")); + test(S("abcdefghij"), 5, 1, "12345678901234567890", 20, S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, "", 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, "12345", 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, "12345", 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, "12345", 2, S("abcde12hij")); + test(S("abcdefghij"), 5, 2, "12345", 4, S("abcde1234hij")); + test(S("abcdefghij"), 5, 2, "12345", 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, "1234567890", 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, "1234567890", 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, "1234567890", 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, "1234567890", 9, S("abcde123456789hij")); + test(S("abcdefghij"), 5, 2, "1234567890", 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 19, S("abcde1234567890123456789hij")); + test(S("abcdefghij"), 5, 2, "12345678901234567890", 20, S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, "", 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, "12345", 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, "12345", 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, "12345", 2, S("abcde12j")); + test(S("abcdefghij"), 5, 4, "12345", 4, S("abcde1234j")); + test(S("abcdefghij"), 5, 4, "12345", 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, "1234567890", 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, "1234567890", 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, "1234567890", 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, "1234567890", 9, S("abcde123456789j")); + test(S("abcdefghij"), 5, 4, "1234567890", 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 19, S("abcde1234567890123456789j")); + test(S("abcdefghij"), 5, 4, "12345678901234567890", 20, S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, "", 0, S("abcde")); + test(S("abcdefghij"), 5, 5, "12345", 0, S("abcde")); + test(S("abcdefghij"), 5, 5, "12345", 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, "12345", 2, S("abcde12")); + test(S("abcdefghij"), 5, 5, "12345", 4, S("abcde1234")); + test(S("abcdefghij"), 5, 5, "12345", 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, "1234567890", 0, S("abcde")); + test(S("abcdefghij"), 5, 5, "1234567890", 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, "1234567890", 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, "1234567890", 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 5, "1234567890", 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 0, S("abcde")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 19, S("abcde1234567890123456789")); + test(S("abcdefghij"), 5, 5, "12345678901234567890", 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 6, "", 0, S("abcde")); + test(S("abcdefghij"), 5, 6, "12345", 0, S("abcde")); + test(S("abcdefghij"), 5, 6, "12345", 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, "12345", 2, S("abcde12")); + test(S("abcdefghij"), 5, 6, "12345", 4, S("abcde1234")); + test(S("abcdefghij"), 5, 6, "12345", 5, S("abcde12345")); + test(S("abcdefghij"), 5, 6, "1234567890", 0, S("abcde")); + test(S("abcdefghij"), 5, 6, "1234567890", 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, "1234567890", 5, S("abcde12345")); + test(S("abcdefghij"), 5, 6, "1234567890", 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 6, "1234567890", 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, "12345678901234567890", 0, S("abcde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcdefghij"), 5, 6, "12345678901234567890", 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, "12345678901234567890", 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, "12345678901234567890", 19, S("abcde1234567890123456789")); - test(S("abcdefghij"), 5, 6, "12345678901234567890", 20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "12345", 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, "12345", 2, S("abcdefghi12j")); - test(S("abcdefghij"), 9, 0, "12345", 4, S("abcdefghi1234j")); - test(S("abcdefghij"), 9, 0, "12345", 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "1234567890", 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, "1234567890", 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, "1234567890", 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, 0, "1234567890", 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 19, S("abcdefghi1234567890123456789j")); - test(S("abcdefghij"), 9, 0, "12345678901234567890", 20, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, "", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "12345", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "12345", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, "12345", 2, S("abcdefghi12")); - test(S("abcdefghij"), 9, 1, "12345", 4, S("abcdefghi1234")); - test(S("abcdefghij"), 9, 1, "12345", 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, "1234567890", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "1234567890", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, "1234567890", 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, "1234567890", 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 1, "1234567890", 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 19, S("abcdefghi1234567890123456789")); - test(S("abcdefghij"), 9, 1, "12345678901234567890", 20, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 2, "", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, "12345", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, "12345", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, "12345", 2, S("abcdefghi12")); - test(S("abcdefghij"), 9, 2, "12345", 4, S("abcdefghi1234")); - test(S("abcdefghij"), 9, 2, "12345", 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, "1234567890", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, "1234567890", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, "1234567890", 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, "1234567890", 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 2, "1234567890", 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, "12345678901234567890", 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, "12345678901234567890", 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, "12345678901234567890", 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, "12345678901234567890", 19, S("abcdefghi1234567890123456789")); - test(S("abcdefghij"), 9, 2, "12345678901234567890", 20, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "12345", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, "12345", 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, 0, "12345", 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, 0, "12345", 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "1234567890", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, "1234567890", 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, "1234567890", 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 0, "1234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 1, "", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, "12345", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, "12345", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, "12345", 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, 1, "12345", 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, 1, "12345", 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, "1234567890", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, "1234567890", 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, "1234567890", 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 1, "1234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, "12345678901234567890", 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, "12345678901234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, 1, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 11, 0, "", 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345", 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345", 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345", 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345", 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345", 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, "1234567890", 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, "1234567890", 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, "1234567890", 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, "1234567890", 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, "1234567890", 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345678901234567890", 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345678901234567890", 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345678901234567890", 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345678901234567890", 19, S("can't happen")); - test(S("abcdefghij"), 11, 0, "12345678901234567890", 20, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcdefghij"), 5, 6, "12345678901234567890", 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, "12345678901234567890", 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, "12345678901234567890", 19, S("abcde1234567890123456789")); + test(S("abcdefghij"), 5, 6, "12345678901234567890", 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "12345", 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, "12345", 2, S("abcdefghi12j")); + test(S("abcdefghij"), 9, 0, "12345", 4, S("abcdefghi1234j")); + test(S("abcdefghij"), 9, 0, "12345", 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "1234567890", 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, "1234567890", 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, "1234567890", 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, 0, "1234567890", 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 19, S("abcdefghi1234567890123456789j")); + test(S("abcdefghij"), 9, 0, "12345678901234567890", 20, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, "", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "12345", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "12345", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, "12345", 2, S("abcdefghi12")); + test(S("abcdefghij"), 9, 1, "12345", 4, S("abcdefghi1234")); + test(S("abcdefghij"), 9, 1, "12345", 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, "1234567890", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "1234567890", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, "1234567890", 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, "1234567890", 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 1, "1234567890", 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 19, S("abcdefghi1234567890123456789")); + test(S("abcdefghij"), 9, 1, "12345678901234567890", 20, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 2, "", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, "12345", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, "12345", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, "12345", 2, S("abcdefghi12")); + test(S("abcdefghij"), 9, 2, "12345", 4, S("abcdefghi1234")); + test(S("abcdefghij"), 9, 2, "12345", 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, "1234567890", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, "1234567890", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, "1234567890", 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, "1234567890", 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 2, "1234567890", 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, "12345678901234567890", 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, "12345678901234567890", 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, "12345678901234567890", 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, "12345678901234567890", 19, S("abcdefghi1234567890123456789")); + test(S("abcdefghij"), 9, 2, "12345678901234567890", 20, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "12345", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, "12345", 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, 0, "12345", 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, 0, "12345", 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "1234567890", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, "1234567890", 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, "1234567890", 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 0, "1234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 1, "", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, "12345", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, "12345", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, "12345", 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, 1, "12345", 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, 1, "12345", 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, "1234567890", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, "1234567890", 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, "1234567890", 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 1, "1234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, "12345678901234567890", 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, "12345678901234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, 1, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 11, 0, "", 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345", 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345", 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345", 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345", 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345", 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, "1234567890", 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, "1234567890", 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, "1234567890", 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, "1234567890", 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, "1234567890", 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345678901234567890", 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345678901234567890", 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345678901234567890", 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345678901234567890", 19, S("can't happen")); + test(S("abcdefghij"), 11, 0, "12345678901234567890", 20, S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 2, S("12abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 4, S("1234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "", 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 2, S("12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 4, S("1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 9, S("123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "", 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 2, S("12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 4, S("1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 9, S("123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 19, S("1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 20, S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, "", 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 2, S("12t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 4, S("1234t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 9, S("123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 19, S("1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 20, S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, "", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 2, S("12")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 4, S("1234")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, "", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 2, S("12")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 4, S("1234")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 19, S("1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 20, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 2, S("a12bcdefghijklmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcdefghijklmnopqrst"), 0, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 2, S("12abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 4, S("1234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345", 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "1234567890", 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 19, S("1234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, "12345678901234567890", 20, S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "", 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 2, S("12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 4, S("1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345", 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 9, S("123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "1234567890", 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 19, S("1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, "12345678901234567890", 20, S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "", 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 2, S("12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 4, S("1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345", 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 9, S("123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "1234567890", 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 19, S("1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, "12345678901234567890", 20, S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, "", 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 2, S("12t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 4, S("1234t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345", 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 9, S("123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "1234567890", 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 19, S("1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, "12345678901234567890", 20, S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, "", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 2, S("12")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 4, S("1234")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345", 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, "1234567890", 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, "", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 2, S("12")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 4, S("1234")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345", 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, "1234567890", 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 19, S("1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, "12345678901234567890", 20, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 2, S("a12bcdefghijklmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test9() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 4, S("a1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "", 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 2, S("a12cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 4, S("a1234cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 9, S("a123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "", 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 2, S("a12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 4, S("a1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 9, S("a123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, "", 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 2, S("a12t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 4, S("a1234t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 9, S("a123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 19, S("a1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 20, S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, "", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 2, S("a12")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 4, S("a1234")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, "", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 2, S("a12")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 4, S("a1234")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 19, S("a1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 20, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 2, S("abcdefghij12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 4, S("abcdefghij1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 1, S("abcdefghij1klmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test9() { + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 4, S("a1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345", 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "1234567890", 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 19, S("a1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, "12345678901234567890", 20, S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "", 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 2, S("a12cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 4, S("a1234cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345", 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 9, S("a123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "1234567890", 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 19, S("a1234567890123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, "12345678901234567890", 20, S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "", 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 2, S("a12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 4, S("a1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345", 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 9, S("a123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "1234567890", 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 19, S("a1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, "12345678901234567890", 20, S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, "", 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 2, S("a12t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 4, S("a1234t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345", 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 9, S("a123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "1234567890", 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 19, S("a1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, "12345678901234567890", 20, S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, "", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 2, S("a12")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 4, S("a1234")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345", 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, "1234567890", 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, "", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 2, S("a12")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 4, S("a1234")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345", 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, "1234567890", 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 19, S("a1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, "12345678901234567890", 20, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 2, S("abcdefghij12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 4, S("abcdefghij1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345", 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 1, S("abcdefghij1klmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test10() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "", 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 2, S("abcdefghij12lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 4, S("abcdefghij1234lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 9, S("abcdefghij123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 19, S("abcdefghij1234567890123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 20, S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "", 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 2, S("abcdefghij12pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 4, S("abcdefghij1234pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 9, S("abcdefghij123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 19, S("abcdefghij1234567890123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 20, S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, "", 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 2, S("abcdefghij12t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 4, S("abcdefghij1234t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 9, S("abcdefghij123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 19, S("abcdefghij1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 20, S("abcdefghij12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 10, "", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 2, S("abcdefghij12")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 4, S("abcdefghij1234")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, "", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 2, S("abcdefghij12")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 4, S("abcdefghij1234")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 2, S("abcdefghijklmnopqrs12t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 4, S("abcdefghijklmnopqrs1234t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test10() { + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "1234567890", 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 19, S("abcdefghij1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, "12345678901234567890", 20, S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "", 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 2, S("abcdefghij12lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 4, S("abcdefghij1234lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345", 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 9, S("abcdefghij123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "1234567890", 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 19, S("abcdefghij1234567890123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, "12345678901234567890", 20, S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "", 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 2, S("abcdefghij12pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 4, S("abcdefghij1234pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345", 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 9, S("abcdefghij123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "1234567890", 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 19, S("abcdefghij1234567890123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, "12345678901234567890", 20, S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, "", 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 2, S("abcdefghij12t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 4, S("abcdefghij1234t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345", 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 9, S("abcdefghij123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "1234567890", 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 19, S("abcdefghij1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, "12345678901234567890", 20, S("abcdefghij12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 10, "", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 2, S("abcdefghij12")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 4, S("abcdefghij1234")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345", 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, "1234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, "", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 2, S("abcdefghij12")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 4, S("abcdefghij1234")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345", 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, "1234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, "12345678901234567890", 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 2, S("abcdefghijklmnopqrs12t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 4, S("abcdefghijklmnopqrs1234t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345", 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "1234567890", 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test11() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, "", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 2, S("abcdefghijklmnopqrs12")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 4, S("abcdefghijklmnopqrs1234")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, "", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 2, S("abcdefghijklmnopqrs12")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 4, S("abcdefghijklmnopqrs1234")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, "", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 21, 0, "", 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 20, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test11() { + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, "", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 2, S("abcdefghijklmnopqrs12")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 4, S("abcdefghijklmnopqrs1234")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345", 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, "1234567890", 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, "", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 2, S("abcdefghijklmnopqrs12")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 4, S("abcdefghijklmnopqrs1234")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345", 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, "1234567890", 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 19, S("abcdefghijklmnopqrs1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, "12345678901234567890", 20, S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345", 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, "1234567890", 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, "", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345", 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 1, "1234567890", 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 19, S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 20, 1, "12345678901234567890", 20, S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 21, 0, "", 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345", 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "1234567890", 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, "12345678901234567890", 20, S("can't happen")); - return true; + return true; } template @@ -1352,8 +1337,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_size_char.pass.cpp @@ -21,353 +21,347 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos, typename S::size_type n1, - typename S::size_type n2, typename S::value_type c, - S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos <= old_size) - { - s.replace(pos, n1, n2, c); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type xlen = std::min(n1, old_size - pos); - typename S::size_type rlen = n2; - assert(s.size() == old_size - xlen + rlen); - } +test(S s, + typename S::size_type pos, + typename S::size_type n1, + typename S::size_type n2, + typename S::value_type c, + S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos <= old_size) { + s.replace(pos, n1, n2, c); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type xlen = std::min(n1, old_size - pos); + typename S::size_type rlen = n2; + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos, n1, n2, c); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos, n1, n2, c); + assert(false); + } catch (std::out_of_range&) { + assert(pos > old_size); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, 0, '2', S("")); - test(S(""), 0, 0, 5, '2', S("22222")); - test(S(""), 0, 0, 10, '2', S("2222222222")); - test(S(""), 0, 0, 20, '2', S("22222222222222222222")); - test(S(""), 0, 1, 0, '2', S("")); - test(S(""), 0, 1, 5, '2', S("22222")); - test(S(""), 0, 1, 10, '2', S("2222222222")); - test(S(""), 0, 1, 20, '2', S("22222222222222222222")); - test(S(""), 1, 0, 0, '2', S("can't happen")); - test(S(""), 1, 0, 5, '2', S("can't happen")); - test(S(""), 1, 0, 10, '2', S("can't happen")); - test(S(""), 1, 0, 20, '2', S("can't happen")); - test(S("abcde"), 0, 0, 0, '2', S("abcde")); - test(S("abcde"), 0, 0, 5, '2', S("22222abcde")); - test(S("abcde"), 0, 0, 10, '2', S("2222222222abcde")); - test(S("abcde"), 0, 0, 20, '2', S("22222222222222222222abcde")); - test(S("abcde"), 0, 1, 0, '2', S("bcde")); - test(S("abcde"), 0, 1, 5, '2', S("22222bcde")); - test(S("abcde"), 0, 1, 10, '2', S("2222222222bcde")); - test(S("abcde"), 0, 1, 20, '2', S("22222222222222222222bcde")); - test(S("abcde"), 0, 2, 0, '2', S("cde")); - test(S("abcde"), 0, 2, 5, '2', S("22222cde")); - test(S("abcde"), 0, 2, 10, '2', S("2222222222cde")); - test(S("abcde"), 0, 2, 20, '2', S("22222222222222222222cde")); - test(S("abcde"), 0, 4, 0, '2', S("e")); - test(S("abcde"), 0, 4, 5, '2', S("22222e")); - test(S("abcde"), 0, 4, 10, '2', S("2222222222e")); - test(S("abcde"), 0, 4, 20, '2', S("22222222222222222222e")); - test(S("abcde"), 0, 5, 0, '2', S("")); - test(S("abcde"), 0, 5, 5, '2', S("22222")); - test(S("abcde"), 0, 5, 10, '2', S("2222222222")); - test(S("abcde"), 0, 5, 20, '2', S("22222222222222222222")); - test(S("abcde"), 0, 6, 0, '2', S("")); - test(S("abcde"), 0, 6, 5, '2', S("22222")); - test(S("abcde"), 0, 6, 10, '2', S("2222222222")); - test(S("abcde"), 0, 6, 20, '2', S("22222222222222222222")); - test(S("abcde"), 1, 0, 0, '2', S("abcde")); - test(S("abcde"), 1, 0, 5, '2', S("a22222bcde")); - test(S("abcde"), 1, 0, 10, '2', S("a2222222222bcde")); - test(S("abcde"), 1, 0, 20, '2', S("a22222222222222222222bcde")); - test(S("abcde"), 1, 1, 0, '2', S("acde")); - test(S("abcde"), 1, 1, 5, '2', S("a22222cde")); - test(S("abcde"), 1, 1, 10, '2', S("a2222222222cde")); - test(S("abcde"), 1, 1, 20, '2', S("a22222222222222222222cde")); - test(S("abcde"), 1, 2, 0, '2', S("ade")); - test(S("abcde"), 1, 2, 5, '2', S("a22222de")); - test(S("abcde"), 1, 2, 10, '2', S("a2222222222de")); - test(S("abcde"), 1, 2, 20, '2', S("a22222222222222222222de")); - test(S("abcde"), 1, 3, 0, '2', S("ae")); - test(S("abcde"), 1, 3, 5, '2', S("a22222e")); - test(S("abcde"), 1, 3, 10, '2', S("a2222222222e")); - test(S("abcde"), 1, 3, 20, '2', S("a22222222222222222222e")); - test(S("abcde"), 1, 4, 0, '2', S("a")); - test(S("abcde"), 1, 4, 5, '2', S("a22222")); - test(S("abcde"), 1, 4, 10, '2', S("a2222222222")); - test(S("abcde"), 1, 4, 20, '2', S("a22222222222222222222")); - test(S("abcde"), 1, 5, 0, '2', S("a")); - test(S("abcde"), 1, 5, 5, '2', S("a22222")); - test(S("abcde"), 1, 5, 10, '2', S("a2222222222")); - test(S("abcde"), 1, 5, 20, '2', S("a22222222222222222222")); - test(S("abcde"), 2, 0, 0, '2', S("abcde")); - test(S("abcde"), 2, 0, 5, '2', S("ab22222cde")); - test(S("abcde"), 2, 0, 10, '2', S("ab2222222222cde")); - test(S("abcde"), 2, 0, 20, '2', S("ab22222222222222222222cde")); - test(S("abcde"), 2, 1, 0, '2', S("abde")); - test(S("abcde"), 2, 1, 5, '2', S("ab22222de")); - test(S("abcde"), 2, 1, 10, '2', S("ab2222222222de")); - test(S("abcde"), 2, 1, 20, '2', S("ab22222222222222222222de")); - test(S("abcde"), 2, 2, 0, '2', S("abe")); - test(S("abcde"), 2, 2, 5, '2', S("ab22222e")); - test(S("abcde"), 2, 2, 10, '2', S("ab2222222222e")); - test(S("abcde"), 2, 2, 20, '2', S("ab22222222222222222222e")); - test(S("abcde"), 2, 3, 0, '2', S("ab")); - test(S("abcde"), 2, 3, 5, '2', S("ab22222")); - test(S("abcde"), 2, 3, 10, '2', S("ab2222222222")); - test(S("abcde"), 2, 3, 20, '2', S("ab22222222222222222222")); - test(S("abcde"), 2, 4, 0, '2', S("ab")); - test(S("abcde"), 2, 4, 5, '2', S("ab22222")); - test(S("abcde"), 2, 4, 10, '2', S("ab2222222222")); - test(S("abcde"), 2, 4, 20, '2', S("ab22222222222222222222")); - test(S("abcde"), 4, 0, 0, '2', S("abcde")); - test(S("abcde"), 4, 0, 5, '2', S("abcd22222e")); - test(S("abcde"), 4, 0, 10, '2', S("abcd2222222222e")); - test(S("abcde"), 4, 0, 20, '2', S("abcd22222222222222222222e")); - test(S("abcde"), 4, 1, 0, '2', S("abcd")); - test(S("abcde"), 4, 1, 5, '2', S("abcd22222")); - test(S("abcde"), 4, 1, 10, '2', S("abcd2222222222")); - test(S("abcde"), 4, 1, 20, '2', S("abcd22222222222222222222")); - test(S("abcde"), 4, 2, 0, '2', S("abcd")); - test(S("abcde"), 4, 2, 5, '2', S("abcd22222")); - test(S("abcde"), 4, 2, 10, '2', S("abcd2222222222")); - test(S("abcde"), 4, 2, 20, '2', S("abcd22222222222222222222")); - test(S("abcde"), 5, 0, 0, '2', S("abcde")); - test(S("abcde"), 5, 0, 5, '2', S("abcde22222")); - test(S("abcde"), 5, 0, 10, '2', S("abcde2222222222")); - test(S("abcde"), 5, 0, 20, '2', S("abcde22222222222222222222")); - test(S("abcde"), 5, 1, 0, '2', S("abcde")); - test(S("abcde"), 5, 1, 5, '2', S("abcde22222")); - test(S("abcde"), 5, 1, 10, '2', S("abcde2222222222")); - test(S("abcde"), 5, 1, 20, '2', S("abcde22222222222222222222")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, 0, '2', S("")); + test(S(""), 0, 0, 5, '2', S("22222")); + test(S(""), 0, 0, 10, '2', S("2222222222")); + test(S(""), 0, 0, 20, '2', S("22222222222222222222")); + test(S(""), 0, 1, 0, '2', S("")); + test(S(""), 0, 1, 5, '2', S("22222")); + test(S(""), 0, 1, 10, '2', S("2222222222")); + test(S(""), 0, 1, 20, '2', S("22222222222222222222")); + test(S(""), 1, 0, 0, '2', S("can't happen")); + test(S(""), 1, 0, 5, '2', S("can't happen")); + test(S(""), 1, 0, 10, '2', S("can't happen")); + test(S(""), 1, 0, 20, '2', S("can't happen")); + test(S("abcde"), 0, 0, 0, '2', S("abcde")); + test(S("abcde"), 0, 0, 5, '2', S("22222abcde")); + test(S("abcde"), 0, 0, 10, '2', S("2222222222abcde")); + test(S("abcde"), 0, 0, 20, '2', S("22222222222222222222abcde")); + test(S("abcde"), 0, 1, 0, '2', S("bcde")); + test(S("abcde"), 0, 1, 5, '2', S("22222bcde")); + test(S("abcde"), 0, 1, 10, '2', S("2222222222bcde")); + test(S("abcde"), 0, 1, 20, '2', S("22222222222222222222bcde")); + test(S("abcde"), 0, 2, 0, '2', S("cde")); + test(S("abcde"), 0, 2, 5, '2', S("22222cde")); + test(S("abcde"), 0, 2, 10, '2', S("2222222222cde")); + test(S("abcde"), 0, 2, 20, '2', S("22222222222222222222cde")); + test(S("abcde"), 0, 4, 0, '2', S("e")); + test(S("abcde"), 0, 4, 5, '2', S("22222e")); + test(S("abcde"), 0, 4, 10, '2', S("2222222222e")); + test(S("abcde"), 0, 4, 20, '2', S("22222222222222222222e")); + test(S("abcde"), 0, 5, 0, '2', S("")); + test(S("abcde"), 0, 5, 5, '2', S("22222")); + test(S("abcde"), 0, 5, 10, '2', S("2222222222")); + test(S("abcde"), 0, 5, 20, '2', S("22222222222222222222")); + test(S("abcde"), 0, 6, 0, '2', S("")); + test(S("abcde"), 0, 6, 5, '2', S("22222")); + test(S("abcde"), 0, 6, 10, '2', S("2222222222")); + test(S("abcde"), 0, 6, 20, '2', S("22222222222222222222")); + test(S("abcde"), 1, 0, 0, '2', S("abcde")); + test(S("abcde"), 1, 0, 5, '2', S("a22222bcde")); + test(S("abcde"), 1, 0, 10, '2', S("a2222222222bcde")); + test(S("abcde"), 1, 0, 20, '2', S("a22222222222222222222bcde")); + test(S("abcde"), 1, 1, 0, '2', S("acde")); + test(S("abcde"), 1, 1, 5, '2', S("a22222cde")); + test(S("abcde"), 1, 1, 10, '2', S("a2222222222cde")); + test(S("abcde"), 1, 1, 20, '2', S("a22222222222222222222cde")); + test(S("abcde"), 1, 2, 0, '2', S("ade")); + test(S("abcde"), 1, 2, 5, '2', S("a22222de")); + test(S("abcde"), 1, 2, 10, '2', S("a2222222222de")); + test(S("abcde"), 1, 2, 20, '2', S("a22222222222222222222de")); + test(S("abcde"), 1, 3, 0, '2', S("ae")); + test(S("abcde"), 1, 3, 5, '2', S("a22222e")); + test(S("abcde"), 1, 3, 10, '2', S("a2222222222e")); + test(S("abcde"), 1, 3, 20, '2', S("a22222222222222222222e")); + test(S("abcde"), 1, 4, 0, '2', S("a")); + test(S("abcde"), 1, 4, 5, '2', S("a22222")); + test(S("abcde"), 1, 4, 10, '2', S("a2222222222")); + test(S("abcde"), 1, 4, 20, '2', S("a22222222222222222222")); + test(S("abcde"), 1, 5, 0, '2', S("a")); + test(S("abcde"), 1, 5, 5, '2', S("a22222")); + test(S("abcde"), 1, 5, 10, '2', S("a2222222222")); + test(S("abcde"), 1, 5, 20, '2', S("a22222222222222222222")); + test(S("abcde"), 2, 0, 0, '2', S("abcde")); + test(S("abcde"), 2, 0, 5, '2', S("ab22222cde")); + test(S("abcde"), 2, 0, 10, '2', S("ab2222222222cde")); + test(S("abcde"), 2, 0, 20, '2', S("ab22222222222222222222cde")); + test(S("abcde"), 2, 1, 0, '2', S("abde")); + test(S("abcde"), 2, 1, 5, '2', S("ab22222de")); + test(S("abcde"), 2, 1, 10, '2', S("ab2222222222de")); + test(S("abcde"), 2, 1, 20, '2', S("ab22222222222222222222de")); + test(S("abcde"), 2, 2, 0, '2', S("abe")); + test(S("abcde"), 2, 2, 5, '2', S("ab22222e")); + test(S("abcde"), 2, 2, 10, '2', S("ab2222222222e")); + test(S("abcde"), 2, 2, 20, '2', S("ab22222222222222222222e")); + test(S("abcde"), 2, 3, 0, '2', S("ab")); + test(S("abcde"), 2, 3, 5, '2', S("ab22222")); + test(S("abcde"), 2, 3, 10, '2', S("ab2222222222")); + test(S("abcde"), 2, 3, 20, '2', S("ab22222222222222222222")); + test(S("abcde"), 2, 4, 0, '2', S("ab")); + test(S("abcde"), 2, 4, 5, '2', S("ab22222")); + test(S("abcde"), 2, 4, 10, '2', S("ab2222222222")); + test(S("abcde"), 2, 4, 20, '2', S("ab22222222222222222222")); + test(S("abcde"), 4, 0, 0, '2', S("abcde")); + test(S("abcde"), 4, 0, 5, '2', S("abcd22222e")); + test(S("abcde"), 4, 0, 10, '2', S("abcd2222222222e")); + test(S("abcde"), 4, 0, 20, '2', S("abcd22222222222222222222e")); + test(S("abcde"), 4, 1, 0, '2', S("abcd")); + test(S("abcde"), 4, 1, 5, '2', S("abcd22222")); + test(S("abcde"), 4, 1, 10, '2', S("abcd2222222222")); + test(S("abcde"), 4, 1, 20, '2', S("abcd22222222222222222222")); + test(S("abcde"), 4, 2, 0, '2', S("abcd")); + test(S("abcde"), 4, 2, 5, '2', S("abcd22222")); + test(S("abcde"), 4, 2, 10, '2', S("abcd2222222222")); + test(S("abcde"), 4, 2, 20, '2', S("abcd22222222222222222222")); + test(S("abcde"), 5, 0, 0, '2', S("abcde")); + test(S("abcde"), 5, 0, 5, '2', S("abcde22222")); + test(S("abcde"), 5, 0, 10, '2', S("abcde2222222222")); + test(S("abcde"), 5, 0, 20, '2', S("abcde22222222222222222222")); + test(S("abcde"), 5, 1, 0, '2', S("abcde")); + test(S("abcde"), 5, 1, 5, '2', S("abcde22222")); + test(S("abcde"), 5, 1, 10, '2', S("abcde2222222222")); + test(S("abcde"), 5, 1, 20, '2', S("abcde22222222222222222222")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcde"), 6, 0, 0, '2', S("can't happen")); - test(S("abcde"), 6, 0, 5, '2', S("can't happen")); - test(S("abcde"), 6, 0, 10, '2', S("can't happen")); - test(S("abcde"), 6, 0, 20, '2', S("can't happen")); - test(S("abcdefghij"), 0, 0, 0, '2', S("abcdefghij")); - test(S("abcdefghij"), 0, 0, 5, '2', S("22222abcdefghij")); - test(S("abcdefghij"), 0, 0, 10, '2', S("2222222222abcdefghij")); - test(S("abcdefghij"), 0, 0, 20, '2', S("22222222222222222222abcdefghij")); - test(S("abcdefghij"), 0, 1, 0, '2', S("bcdefghij")); - test(S("abcdefghij"), 0, 1, 5, '2', S("22222bcdefghij")); - test(S("abcdefghij"), 0, 1, 10, '2', S("2222222222bcdefghij")); - test(S("abcdefghij"), 0, 1, 20, '2', S("22222222222222222222bcdefghij")); - test(S("abcdefghij"), 0, 5, 0, '2', S("fghij")); - test(S("abcdefghij"), 0, 5, 5, '2', S("22222fghij")); - test(S("abcdefghij"), 0, 5, 10, '2', S("2222222222fghij")); - test(S("abcdefghij"), 0, 5, 20, '2', S("22222222222222222222fghij")); - test(S("abcdefghij"), 0, 9, 0, '2', S("j")); - test(S("abcdefghij"), 0, 9, 5, '2', S("22222j")); - test(S("abcdefghij"), 0, 9, 10, '2', S("2222222222j")); - test(S("abcdefghij"), 0, 9, 20, '2', S("22222222222222222222j")); - test(S("abcdefghij"), 0, 10, 0, '2', S("")); - test(S("abcdefghij"), 0, 10, 5, '2', S("22222")); - test(S("abcdefghij"), 0, 10, 10, '2', S("2222222222")); - test(S("abcdefghij"), 0, 10, 20, '2', S("22222222222222222222")); - test(S("abcdefghij"), 0, 11, 0, '2', S("")); - test(S("abcdefghij"), 0, 11, 5, '2', S("22222")); - test(S("abcdefghij"), 0, 11, 10, '2', S("2222222222")); - test(S("abcdefghij"), 0, 11, 20, '2', S("22222222222222222222")); - test(S("abcdefghij"), 1, 0, 0, '2', S("abcdefghij")); - test(S("abcdefghij"), 1, 0, 5, '2', S("a22222bcdefghij")); - test(S("abcdefghij"), 1, 0, 10, '2', S("a2222222222bcdefghij")); - test(S("abcdefghij"), 1, 0, 20, '2', S("a22222222222222222222bcdefghij")); - test(S("abcdefghij"), 1, 1, 0, '2', S("acdefghij")); - test(S("abcdefghij"), 1, 1, 5, '2', S("a22222cdefghij")); - test(S("abcdefghij"), 1, 1, 10, '2', S("a2222222222cdefghij")); - test(S("abcdefghij"), 1, 1, 20, '2', S("a22222222222222222222cdefghij")); - test(S("abcdefghij"), 1, 4, 0, '2', S("afghij")); - test(S("abcdefghij"), 1, 4, 5, '2', S("a22222fghij")); - test(S("abcdefghij"), 1, 4, 10, '2', S("a2222222222fghij")); - test(S("abcdefghij"), 1, 4, 20, '2', S("a22222222222222222222fghij")); - test(S("abcdefghij"), 1, 8, 0, '2', S("aj")); - test(S("abcdefghij"), 1, 8, 5, '2', S("a22222j")); - test(S("abcdefghij"), 1, 8, 10, '2', S("a2222222222j")); - test(S("abcdefghij"), 1, 8, 20, '2', S("a22222222222222222222j")); - test(S("abcdefghij"), 1, 9, 0, '2', S("a")); - test(S("abcdefghij"), 1, 9, 5, '2', S("a22222")); - test(S("abcdefghij"), 1, 9, 10, '2', S("a2222222222")); - test(S("abcdefghij"), 1, 9, 20, '2', S("a22222222222222222222")); - test(S("abcdefghij"), 1, 10, 0, '2', S("a")); - test(S("abcdefghij"), 1, 10, 5, '2', S("a22222")); - test(S("abcdefghij"), 1, 10, 10, '2', S("a2222222222")); - test(S("abcdefghij"), 1, 10, 20, '2', S("a22222222222222222222")); - test(S("abcdefghij"), 5, 0, 0, '2', S("abcdefghij")); - test(S("abcdefghij"), 5, 0, 5, '2', S("abcde22222fghij")); - test(S("abcdefghij"), 5, 0, 10, '2', S("abcde2222222222fghij")); - test(S("abcdefghij"), 5, 0, 20, '2', S("abcde22222222222222222222fghij")); - test(S("abcdefghij"), 5, 1, 0, '2', S("abcdeghij")); - test(S("abcdefghij"), 5, 1, 5, '2', S("abcde22222ghij")); - test(S("abcdefghij"), 5, 1, 10, '2', S("abcde2222222222ghij")); - test(S("abcdefghij"), 5, 1, 20, '2', S("abcde22222222222222222222ghij")); - test(S("abcdefghij"), 5, 2, 0, '2', S("abcdehij")); - test(S("abcdefghij"), 5, 2, 5, '2', S("abcde22222hij")); - test(S("abcdefghij"), 5, 2, 10, '2', S("abcde2222222222hij")); - test(S("abcdefghij"), 5, 2, 20, '2', S("abcde22222222222222222222hij")); - test(S("abcdefghij"), 5, 4, 0, '2', S("abcdej")); - test(S("abcdefghij"), 5, 4, 5, '2', S("abcde22222j")); - test(S("abcdefghij"), 5, 4, 10, '2', S("abcde2222222222j")); - test(S("abcdefghij"), 5, 4, 20, '2', S("abcde22222222222222222222j")); - test(S("abcdefghij"), 5, 5, 0, '2', S("abcde")); - test(S("abcdefghij"), 5, 5, 5, '2', S("abcde22222")); - test(S("abcdefghij"), 5, 5, 10, '2', S("abcde2222222222")); - test(S("abcdefghij"), 5, 5, 20, '2', S("abcde22222222222222222222")); - test(S("abcdefghij"), 5, 6, 0, '2', S("abcde")); - test(S("abcdefghij"), 5, 6, 5, '2', S("abcde22222")); - test(S("abcdefghij"), 5, 6, 10, '2', S("abcde2222222222")); - test(S("abcdefghij"), 5, 6, 20, '2', S("abcde22222222222222222222")); - test(S("abcdefghij"), 9, 0, 0, '2', S("abcdefghij")); - test(S("abcdefghij"), 9, 0, 5, '2', S("abcdefghi22222j")); - test(S("abcdefghij"), 9, 0, 10, '2', S("abcdefghi2222222222j")); - test(S("abcdefghij"), 9, 0, 20, '2', S("abcdefghi22222222222222222222j")); - test(S("abcdefghij"), 9, 1, 0, '2', S("abcdefghi")); - test(S("abcdefghij"), 9, 1, 5, '2', S("abcdefghi22222")); - test(S("abcdefghij"), 9, 1, 10, '2', S("abcdefghi2222222222")); - test(S("abcdefghij"), 9, 1, 20, '2', S("abcdefghi22222222222222222222")); - test(S("abcdefghij"), 9, 2, 0, '2', S("abcdefghi")); - test(S("abcdefghij"), 9, 2, 5, '2', S("abcdefghi22222")); - test(S("abcdefghij"), 9, 2, 10, '2', S("abcdefghi2222222222")); - test(S("abcdefghij"), 9, 2, 20, '2', S("abcdefghi22222222222222222222")); - test(S("abcdefghij"), 10, 0, 0, '2', S("abcdefghij")); - test(S("abcdefghij"), 10, 0, 5, '2', S("abcdefghij22222")); - test(S("abcdefghij"), 10, 0, 10, '2', S("abcdefghij2222222222")); - test(S("abcdefghij"), 10, 0, 20, '2', S("abcdefghij22222222222222222222")); - test(S("abcdefghij"), 10, 1, 0, '2', S("abcdefghij")); - test(S("abcdefghij"), 10, 1, 5, '2', S("abcdefghij22222")); - test(S("abcdefghij"), 10, 1, 10, '2', S("abcdefghij2222222222")); - test(S("abcdefghij"), 10, 1, 20, '2', S("abcdefghij22222222222222222222")); - test(S("abcdefghij"), 11, 0, 0, '2', S("can't happen")); - test(S("abcdefghij"), 11, 0, 5, '2', S("can't happen")); - test(S("abcdefghij"), 11, 0, 10, '2', S("can't happen")); - test(S("abcdefghij"), 11, 0, 20, '2', S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcde"), 6, 0, 0, '2', S("can't happen")); + test(S("abcde"), 6, 0, 5, '2', S("can't happen")); + test(S("abcde"), 6, 0, 10, '2', S("can't happen")); + test(S("abcde"), 6, 0, 20, '2', S("can't happen")); + test(S("abcdefghij"), 0, 0, 0, '2', S("abcdefghij")); + test(S("abcdefghij"), 0, 0, 5, '2', S("22222abcdefghij")); + test(S("abcdefghij"), 0, 0, 10, '2', S("2222222222abcdefghij")); + test(S("abcdefghij"), 0, 0, 20, '2', S("22222222222222222222abcdefghij")); + test(S("abcdefghij"), 0, 1, 0, '2', S("bcdefghij")); + test(S("abcdefghij"), 0, 1, 5, '2', S("22222bcdefghij")); + test(S("abcdefghij"), 0, 1, 10, '2', S("2222222222bcdefghij")); + test(S("abcdefghij"), 0, 1, 20, '2', S("22222222222222222222bcdefghij")); + test(S("abcdefghij"), 0, 5, 0, '2', S("fghij")); + test(S("abcdefghij"), 0, 5, 5, '2', S("22222fghij")); + test(S("abcdefghij"), 0, 5, 10, '2', S("2222222222fghij")); + test(S("abcdefghij"), 0, 5, 20, '2', S("22222222222222222222fghij")); + test(S("abcdefghij"), 0, 9, 0, '2', S("j")); + test(S("abcdefghij"), 0, 9, 5, '2', S("22222j")); + test(S("abcdefghij"), 0, 9, 10, '2', S("2222222222j")); + test(S("abcdefghij"), 0, 9, 20, '2', S("22222222222222222222j")); + test(S("abcdefghij"), 0, 10, 0, '2', S("")); + test(S("abcdefghij"), 0, 10, 5, '2', S("22222")); + test(S("abcdefghij"), 0, 10, 10, '2', S("2222222222")); + test(S("abcdefghij"), 0, 10, 20, '2', S("22222222222222222222")); + test(S("abcdefghij"), 0, 11, 0, '2', S("")); + test(S("abcdefghij"), 0, 11, 5, '2', S("22222")); + test(S("abcdefghij"), 0, 11, 10, '2', S("2222222222")); + test(S("abcdefghij"), 0, 11, 20, '2', S("22222222222222222222")); + test(S("abcdefghij"), 1, 0, 0, '2', S("abcdefghij")); + test(S("abcdefghij"), 1, 0, 5, '2', S("a22222bcdefghij")); + test(S("abcdefghij"), 1, 0, 10, '2', S("a2222222222bcdefghij")); + test(S("abcdefghij"), 1, 0, 20, '2', S("a22222222222222222222bcdefghij")); + test(S("abcdefghij"), 1, 1, 0, '2', S("acdefghij")); + test(S("abcdefghij"), 1, 1, 5, '2', S("a22222cdefghij")); + test(S("abcdefghij"), 1, 1, 10, '2', S("a2222222222cdefghij")); + test(S("abcdefghij"), 1, 1, 20, '2', S("a22222222222222222222cdefghij")); + test(S("abcdefghij"), 1, 4, 0, '2', S("afghij")); + test(S("abcdefghij"), 1, 4, 5, '2', S("a22222fghij")); + test(S("abcdefghij"), 1, 4, 10, '2', S("a2222222222fghij")); + test(S("abcdefghij"), 1, 4, 20, '2', S("a22222222222222222222fghij")); + test(S("abcdefghij"), 1, 8, 0, '2', S("aj")); + test(S("abcdefghij"), 1, 8, 5, '2', S("a22222j")); + test(S("abcdefghij"), 1, 8, 10, '2', S("a2222222222j")); + test(S("abcdefghij"), 1, 8, 20, '2', S("a22222222222222222222j")); + test(S("abcdefghij"), 1, 9, 0, '2', S("a")); + test(S("abcdefghij"), 1, 9, 5, '2', S("a22222")); + test(S("abcdefghij"), 1, 9, 10, '2', S("a2222222222")); + test(S("abcdefghij"), 1, 9, 20, '2', S("a22222222222222222222")); + test(S("abcdefghij"), 1, 10, 0, '2', S("a")); + test(S("abcdefghij"), 1, 10, 5, '2', S("a22222")); + test(S("abcdefghij"), 1, 10, 10, '2', S("a2222222222")); + test(S("abcdefghij"), 1, 10, 20, '2', S("a22222222222222222222")); + test(S("abcdefghij"), 5, 0, 0, '2', S("abcdefghij")); + test(S("abcdefghij"), 5, 0, 5, '2', S("abcde22222fghij")); + test(S("abcdefghij"), 5, 0, 10, '2', S("abcde2222222222fghij")); + test(S("abcdefghij"), 5, 0, 20, '2', S("abcde22222222222222222222fghij")); + test(S("abcdefghij"), 5, 1, 0, '2', S("abcdeghij")); + test(S("abcdefghij"), 5, 1, 5, '2', S("abcde22222ghij")); + test(S("abcdefghij"), 5, 1, 10, '2', S("abcde2222222222ghij")); + test(S("abcdefghij"), 5, 1, 20, '2', S("abcde22222222222222222222ghij")); + test(S("abcdefghij"), 5, 2, 0, '2', S("abcdehij")); + test(S("abcdefghij"), 5, 2, 5, '2', S("abcde22222hij")); + test(S("abcdefghij"), 5, 2, 10, '2', S("abcde2222222222hij")); + test(S("abcdefghij"), 5, 2, 20, '2', S("abcde22222222222222222222hij")); + test(S("abcdefghij"), 5, 4, 0, '2', S("abcdej")); + test(S("abcdefghij"), 5, 4, 5, '2', S("abcde22222j")); + test(S("abcdefghij"), 5, 4, 10, '2', S("abcde2222222222j")); + test(S("abcdefghij"), 5, 4, 20, '2', S("abcde22222222222222222222j")); + test(S("abcdefghij"), 5, 5, 0, '2', S("abcde")); + test(S("abcdefghij"), 5, 5, 5, '2', S("abcde22222")); + test(S("abcdefghij"), 5, 5, 10, '2', S("abcde2222222222")); + test(S("abcdefghij"), 5, 5, 20, '2', S("abcde22222222222222222222")); + test(S("abcdefghij"), 5, 6, 0, '2', S("abcde")); + test(S("abcdefghij"), 5, 6, 5, '2', S("abcde22222")); + test(S("abcdefghij"), 5, 6, 10, '2', S("abcde2222222222")); + test(S("abcdefghij"), 5, 6, 20, '2', S("abcde22222222222222222222")); + test(S("abcdefghij"), 9, 0, 0, '2', S("abcdefghij")); + test(S("abcdefghij"), 9, 0, 5, '2', S("abcdefghi22222j")); + test(S("abcdefghij"), 9, 0, 10, '2', S("abcdefghi2222222222j")); + test(S("abcdefghij"), 9, 0, 20, '2', S("abcdefghi22222222222222222222j")); + test(S("abcdefghij"), 9, 1, 0, '2', S("abcdefghi")); + test(S("abcdefghij"), 9, 1, 5, '2', S("abcdefghi22222")); + test(S("abcdefghij"), 9, 1, 10, '2', S("abcdefghi2222222222")); + test(S("abcdefghij"), 9, 1, 20, '2', S("abcdefghi22222222222222222222")); + test(S("abcdefghij"), 9, 2, 0, '2', S("abcdefghi")); + test(S("abcdefghij"), 9, 2, 5, '2', S("abcdefghi22222")); + test(S("abcdefghij"), 9, 2, 10, '2', S("abcdefghi2222222222")); + test(S("abcdefghij"), 9, 2, 20, '2', S("abcdefghi22222222222222222222")); + test(S("abcdefghij"), 10, 0, 0, '2', S("abcdefghij")); + test(S("abcdefghij"), 10, 0, 5, '2', S("abcdefghij22222")); + test(S("abcdefghij"), 10, 0, 10, '2', S("abcdefghij2222222222")); + test(S("abcdefghij"), 10, 0, 20, '2', S("abcdefghij22222222222222222222")); + test(S("abcdefghij"), 10, 1, 0, '2', S("abcdefghij")); + test(S("abcdefghij"), 10, 1, 5, '2', S("abcdefghij22222")); + test(S("abcdefghij"), 10, 1, 10, '2', S("abcdefghij2222222222")); + test(S("abcdefghij"), 10, 1, 20, '2', S("abcdefghij22222222222222222222")); + test(S("abcdefghij"), 11, 0, 0, '2', S("can't happen")); + test(S("abcdefghij"), 11, 0, 5, '2', S("can't happen")); + test(S("abcdefghij"), 11, 0, 10, '2', S("can't happen")); + test(S("abcdefghij"), 11, 0, 20, '2', S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, 0, '2', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, 5, '2', S("22222abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, 10, '2', S("2222222222abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, 20, '2', S("22222222222222222222abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, 0, '2', S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, 5, '2', S("22222bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, 10, '2', S("2222222222bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, 20, '2', S("22222222222222222222bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, 0, '2', S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, 5, '2', S("22222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, 10, '2', S("2222222222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, 20, '2', S("22222222222222222222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, 0, '2', S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, 5, '2', S("22222t")); - test(S("abcdefghijklmnopqrst"), 0, 19, 10, '2', S("2222222222t")); - test(S("abcdefghijklmnopqrst"), 0, 19, 20, '2', S("22222222222222222222t")); - test(S("abcdefghijklmnopqrst"), 0, 20, 0, '2', S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, 5, '2', S("22222")); - test(S("abcdefghijklmnopqrst"), 0, 20, 10, '2', S("2222222222")); - test(S("abcdefghijklmnopqrst"), 0, 20, 20, '2', S("22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 0, 21, 0, '2', S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, 5, '2', S("22222")); - test(S("abcdefghijklmnopqrst"), 0, 21, 10, '2', S("2222222222")); - test(S("abcdefghijklmnopqrst"), 0, 21, 20, '2', S("22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 1, 0, 0, '2', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, 5, '2', S("a22222bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, 10, '2', S("a2222222222bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, 20, '2', S("a22222222222222222222bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, 0, '2', S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, 5, '2', S("a22222cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, 10, '2', S("a2222222222cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, 20, '2', S("a22222222222222222222cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, 0, '2', S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, 5, '2', S("a22222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, 10, '2', S("a2222222222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, 20, '2', S("a22222222222222222222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, 0, '2', S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, 5, '2', S("a22222t")); - test(S("abcdefghijklmnopqrst"), 1, 18, 10, '2', S("a2222222222t")); - test(S("abcdefghijklmnopqrst"), 1, 18, 20, '2', S("a22222222222222222222t")); - test(S("abcdefghijklmnopqrst"), 1, 19, 0, '2', S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, 5, '2', S("a22222")); - test(S("abcdefghijklmnopqrst"), 1, 19, 10, '2', S("a2222222222")); - test(S("abcdefghijklmnopqrst"), 1, 19, 20, '2', S("a22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 1, 20, 0, '2', S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, 5, '2', S("a22222")); - test(S("abcdefghijklmnopqrst"), 1, 20, 10, '2', S("a2222222222")); - test(S("abcdefghijklmnopqrst"), 1, 20, 20, '2', S("a22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 10, 0, 0, '2', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, 5, '2', S("abcdefghij22222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, 10, '2', S("abcdefghij2222222222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, 20, '2', S("abcdefghij22222222222222222222klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, 0, '2', S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, 5, '2', S("abcdefghij22222lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, 10, '2', S("abcdefghij2222222222lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, 20, '2', S("abcdefghij22222222222222222222lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, 0, '2', S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, 5, '2', S("abcdefghij22222pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, 10, '2', S("abcdefghij2222222222pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, 20, '2', S("abcdefghij22222222222222222222pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, 0, '2', S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, 5, '2', S("abcdefghij22222t")); - test(S("abcdefghijklmnopqrst"), 10, 9, 10, '2', S("abcdefghij2222222222t")); - test(S("abcdefghijklmnopqrst"), 10, 9, 20, '2', S("abcdefghij22222222222222222222t")); - test(S("abcdefghijklmnopqrst"), 10, 10, 0, '2', S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, 5, '2', S("abcdefghij22222")); - test(S("abcdefghijklmnopqrst"), 10, 10, 10, '2', S("abcdefghij2222222222")); - test(S("abcdefghijklmnopqrst"), 10, 10, 20, '2', S("abcdefghij22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 10, 11, 0, '2', S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, 5, '2', S("abcdefghij22222")); - test(S("abcdefghijklmnopqrst"), 10, 11, 10, '2', S("abcdefghij2222222222")); - test(S("abcdefghijklmnopqrst"), 10, 11, 20, '2', S("abcdefghij22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 19, 0, 0, '2', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, 5, '2', S("abcdefghijklmnopqrs22222t")); - test(S("abcdefghijklmnopqrst"), 19, 0, 10, '2', S("abcdefghijklmnopqrs2222222222t")); - test(S("abcdefghijklmnopqrst"), 19, 0, 20, '2', S("abcdefghijklmnopqrs22222222222222222222t")); - test(S("abcdefghijklmnopqrst"), 19, 1, 0, '2', S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, 5, '2', S("abcdefghijklmnopqrs22222")); - test(S("abcdefghijklmnopqrst"), 19, 1, 10, '2', S("abcdefghijklmnopqrs2222222222")); - test(S("abcdefghijklmnopqrst"), 19, 1, 20, '2', S("abcdefghijklmnopqrs22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 19, 2, 0, '2', S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, 5, '2', S("abcdefghijklmnopqrs22222")); - test(S("abcdefghijklmnopqrst"), 19, 2, 10, '2', S("abcdefghijklmnopqrs2222222222")); - test(S("abcdefghijklmnopqrst"), 19, 2, 20, '2', S("abcdefghijklmnopqrs22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 20, 0, 0, '2', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, 5, '2', S("abcdefghijklmnopqrst22222")); - test(S("abcdefghijklmnopqrst"), 20, 0, 10, '2', S("abcdefghijklmnopqrst2222222222")); - test(S("abcdefghijklmnopqrst"), 20, 0, 20, '2', S("abcdefghijklmnopqrst22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 20, 1, 0, '2', S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, 5, '2', S("abcdefghijklmnopqrst22222")); - test(S("abcdefghijklmnopqrst"), 20, 1, 10, '2', S("abcdefghijklmnopqrst2222222222")); - test(S("abcdefghijklmnopqrst"), 20, 1, 20, '2', S("abcdefghijklmnopqrst22222222222222222222")); - test(S("abcdefghijklmnopqrst"), 21, 0, 0, '2', S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, 5, '2', S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, 10, '2', S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, 20, '2', S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcdefghijklmnopqrst"), 0, 0, 0, '2', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, 5, '2', S("22222abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, 10, '2', S("2222222222abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, 20, '2', S("22222222222222222222abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, 0, '2', S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, 5, '2', S("22222bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, 10, '2', S("2222222222bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, 20, '2', S("22222222222222222222bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, 0, '2', S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, 5, '2', S("22222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, 10, '2', S("2222222222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, 20, '2', S("22222222222222222222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, 0, '2', S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, 5, '2', S("22222t")); + test(S("abcdefghijklmnopqrst"), 0, 19, 10, '2', S("2222222222t")); + test(S("abcdefghijklmnopqrst"), 0, 19, 20, '2', S("22222222222222222222t")); + test(S("abcdefghijklmnopqrst"), 0, 20, 0, '2', S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, 5, '2', S("22222")); + test(S("abcdefghijklmnopqrst"), 0, 20, 10, '2', S("2222222222")); + test(S("abcdefghijklmnopqrst"), 0, 20, 20, '2', S("22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 0, 21, 0, '2', S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, 5, '2', S("22222")); + test(S("abcdefghijklmnopqrst"), 0, 21, 10, '2', S("2222222222")); + test(S("abcdefghijklmnopqrst"), 0, 21, 20, '2', S("22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 1, 0, 0, '2', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, 5, '2', S("a22222bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, 10, '2', S("a2222222222bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, 20, '2', S("a22222222222222222222bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, 0, '2', S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, 5, '2', S("a22222cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, 10, '2', S("a2222222222cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, 20, '2', S("a22222222222222222222cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, 0, '2', S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, 5, '2', S("a22222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, 10, '2', S("a2222222222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, 20, '2', S("a22222222222222222222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, 0, '2', S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, 5, '2', S("a22222t")); + test(S("abcdefghijklmnopqrst"), 1, 18, 10, '2', S("a2222222222t")); + test(S("abcdefghijklmnopqrst"), 1, 18, 20, '2', S("a22222222222222222222t")); + test(S("abcdefghijklmnopqrst"), 1, 19, 0, '2', S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, 5, '2', S("a22222")); + test(S("abcdefghijklmnopqrst"), 1, 19, 10, '2', S("a2222222222")); + test(S("abcdefghijklmnopqrst"), 1, 19, 20, '2', S("a22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 1, 20, 0, '2', S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, 5, '2', S("a22222")); + test(S("abcdefghijklmnopqrst"), 1, 20, 10, '2', S("a2222222222")); + test(S("abcdefghijklmnopqrst"), 1, 20, 20, '2', S("a22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 10, 0, 0, '2', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, 5, '2', S("abcdefghij22222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, 10, '2', S("abcdefghij2222222222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, 20, '2', S("abcdefghij22222222222222222222klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, 0, '2', S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, 5, '2', S("abcdefghij22222lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, 10, '2', S("abcdefghij2222222222lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, 20, '2', S("abcdefghij22222222222222222222lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, 0, '2', S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, 5, '2', S("abcdefghij22222pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, 10, '2', S("abcdefghij2222222222pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, 20, '2', S("abcdefghij22222222222222222222pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, 0, '2', S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, 5, '2', S("abcdefghij22222t")); + test(S("abcdefghijklmnopqrst"), 10, 9, 10, '2', S("abcdefghij2222222222t")); + test(S("abcdefghijklmnopqrst"), 10, 9, 20, '2', S("abcdefghij22222222222222222222t")); + test(S("abcdefghijklmnopqrst"), 10, 10, 0, '2', S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, 5, '2', S("abcdefghij22222")); + test(S("abcdefghijklmnopqrst"), 10, 10, 10, '2', S("abcdefghij2222222222")); + test(S("abcdefghijklmnopqrst"), 10, 10, 20, '2', S("abcdefghij22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 10, 11, 0, '2', S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, 5, '2', S("abcdefghij22222")); + test(S("abcdefghijklmnopqrst"), 10, 11, 10, '2', S("abcdefghij2222222222")); + test(S("abcdefghijklmnopqrst"), 10, 11, 20, '2', S("abcdefghij22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 19, 0, 0, '2', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, 5, '2', S("abcdefghijklmnopqrs22222t")); + test(S("abcdefghijklmnopqrst"), 19, 0, 10, '2', S("abcdefghijklmnopqrs2222222222t")); + test(S("abcdefghijklmnopqrst"), 19, 0, 20, '2', S("abcdefghijklmnopqrs22222222222222222222t")); + test(S("abcdefghijklmnopqrst"), 19, 1, 0, '2', S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, 5, '2', S("abcdefghijklmnopqrs22222")); + test(S("abcdefghijklmnopqrst"), 19, 1, 10, '2', S("abcdefghijklmnopqrs2222222222")); + test(S("abcdefghijklmnopqrst"), 19, 1, 20, '2', S("abcdefghijklmnopqrs22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 19, 2, 0, '2', S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, 5, '2', S("abcdefghijklmnopqrs22222")); + test(S("abcdefghijklmnopqrst"), 19, 2, 10, '2', S("abcdefghijklmnopqrs2222222222")); + test(S("abcdefghijklmnopqrst"), 19, 2, 20, '2', S("abcdefghijklmnopqrs22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 20, 0, 0, '2', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, 5, '2', S("abcdefghijklmnopqrst22222")); + test(S("abcdefghijklmnopqrst"), 20, 0, 10, '2', S("abcdefghijklmnopqrst2222222222")); + test(S("abcdefghijklmnopqrst"), 20, 0, 20, '2', S("abcdefghijklmnopqrst22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 20, 1, 0, '2', S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, 5, '2', S("abcdefghijklmnopqrst22222")); + test(S("abcdefghijklmnopqrst"), 20, 1, 10, '2', S("abcdefghijklmnopqrst2222222222")); + test(S("abcdefghijklmnopqrst"), 20, 1, 20, '2', S("abcdefghijklmnopqrst22222222222222222222")); + test(S("abcdefghijklmnopqrst"), 21, 0, 0, '2', S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, 5, '2', S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, 10, '2', S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, 20, '2', S("can't happen")); - return true; + return true; } template @@ -383,8 +377,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string.pass.cpp @@ -20,352 +20,342 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, S str, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos1 <= old_size) - { - s.replace(pos1, n1, str); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type xlen = std::min(n1, old_size - pos1); - typename S::size_type rlen = str.size(); - assert(s.size() == old_size - xlen + rlen); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos1, typename S::size_type n1, S str, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos1 <= old_size) { + s.replace(pos1, n1, str); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type xlen = std::min(n1, old_size - pos1); + typename S::size_type rlen = str.size(); + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos1, n1, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos1, n1, str); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, S(""), S("")); - test(S(""), 0, 0, S("12345"), S("12345")); - test(S(""), 0, 0, S("1234567890"), S("1234567890")); - test(S(""), 0, 0, S("12345678901234567890"), S("12345678901234567890")); - test(S(""), 0, 1, S(""), S("")); - test(S(""), 0, 1, S("12345"), S("12345")); - test(S(""), 0, 1, S("1234567890"), S("1234567890")); - test(S(""), 0, 1, S("12345678901234567890"), S("12345678901234567890")); - test(S(""), 1, 0, S(""), S("can't happen")); - test(S(""), 1, 0, S("12345"), S("can't happen")); - test(S(""), 1, 0, S("1234567890"), S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), S("can't happen")); - test(S("abcde"), 0, 0, S(""), S("abcde")); - test(S("abcde"), 0, 0, S("12345"), S("12345abcde")); - test(S("abcde"), 0, 0, S("1234567890"), S("1234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, S(""), S("bcde")); - test(S("abcde"), 0, 1, S("12345"), S("12345bcde")); - test(S("abcde"), 0, 1, S("1234567890"), S("1234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, S(""), S("cde")); - test(S("abcde"), 0, 2, S("12345"), S("12345cde")); - test(S("abcde"), 0, 2, S("1234567890"), S("1234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), S("12345678901234567890cde")); - test(S("abcde"), 0, 4, S(""), S("e")); - test(S("abcde"), 0, 4, S("12345"), S("12345e")); - test(S("abcde"), 0, 4, S("1234567890"), S("1234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), S("12345678901234567890e")); - test(S("abcde"), 0, 5, S(""), S("")); - test(S("abcde"), 0, 5, S("12345"), S("12345")); - test(S("abcde"), 0, 5, S("1234567890"), S("1234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcde"), 0, 6, S(""), S("")); - test(S("abcde"), 0, 6, S("12345"), S("12345")); - test(S("abcde"), 0, 6, S("1234567890"), S("1234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcde"), 1, 0, S(""), S("abcde")); - test(S("abcde"), 1, 0, S("12345"), S("a12345bcde")); - test(S("abcde"), 1, 0, S("1234567890"), S("a1234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, S(""), S("acde")); - test(S("abcde"), 1, 1, S("12345"), S("a12345cde")); - test(S("abcde"), 1, 1, S("1234567890"), S("a1234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, S(""), S("ade")); - test(S("abcde"), 1, 2, S("12345"), S("a12345de")); - test(S("abcde"), 1, 2, S("1234567890"), S("a1234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), S("a12345678901234567890de")); - test(S("abcde"), 1, 3, S(""), S("ae")); - test(S("abcde"), 1, 3, S("12345"), S("a12345e")); - test(S("abcde"), 1, 3, S("1234567890"), S("a1234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), S("a12345678901234567890e")); - test(S("abcde"), 1, 4, S(""), S("a")); - test(S("abcde"), 1, 4, S("12345"), S("a12345")); - test(S("abcde"), 1, 4, S("1234567890"), S("a1234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcde"), 1, 5, S(""), S("a")); - test(S("abcde"), 1, 5, S("12345"), S("a12345")); - test(S("abcde"), 1, 5, S("1234567890"), S("a1234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcde"), 2, 0, S(""), S("abcde")); - test(S("abcde"), 2, 0, S("12345"), S("ab12345cde")); - test(S("abcde"), 2, 0, S("1234567890"), S("ab1234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, S(""), S("abde")); - test(S("abcde"), 2, 1, S("12345"), S("ab12345de")); - test(S("abcde"), 2, 1, S("1234567890"), S("ab1234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, S(""), S("abe")); - test(S("abcde"), 2, 2, S("12345"), S("ab12345e")); - test(S("abcde"), 2, 2, S("1234567890"), S("ab1234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, S(""), S("ab")); - test(S("abcde"), 2, 3, S("12345"), S("ab12345")); - test(S("abcde"), 2, 3, S("1234567890"), S("ab1234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), S("ab12345678901234567890")); - test(S("abcde"), 2, 4, S(""), S("ab")); - test(S("abcde"), 2, 4, S("12345"), S("ab12345")); - test(S("abcde"), 2, 4, S("1234567890"), S("ab1234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), S("ab12345678901234567890")); - test(S("abcde"), 4, 0, S(""), S("abcde")); - test(S("abcde"), 4, 0, S("12345"), S("abcd12345e")); - test(S("abcde"), 4, 0, S("1234567890"), S("abcd1234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, S(""), S("abcd")); - test(S("abcde"), 4, 1, S("12345"), S("abcd12345")); - test(S("abcde"), 4, 1, S("1234567890"), S("abcd1234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), S("abcd12345678901234567890")); - test(S("abcde"), 4, 2, S(""), S("abcd")); - test(S("abcde"), 4, 2, S("12345"), S("abcd12345")); - test(S("abcde"), 4, 2, S("1234567890"), S("abcd1234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, S(""), S("abcde")); - test(S("abcde"), 5, 0, S("12345"), S("abcde12345")); - test(S("abcde"), 5, 0, S("1234567890"), S("abcde1234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcde"), 5, 1, S(""), S("abcde")); - test(S("abcde"), 5, 1, S("12345"), S("abcde12345")); - test(S("abcde"), 5, 1, S("1234567890"), S("abcde1234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), S("abcde12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, S(""), S("")); + test(S(""), 0, 0, S("12345"), S("12345")); + test(S(""), 0, 0, S("1234567890"), S("1234567890")); + test(S(""), 0, 0, S("12345678901234567890"), S("12345678901234567890")); + test(S(""), 0, 1, S(""), S("")); + test(S(""), 0, 1, S("12345"), S("12345")); + test(S(""), 0, 1, S("1234567890"), S("1234567890")); + test(S(""), 0, 1, S("12345678901234567890"), S("12345678901234567890")); + test(S(""), 1, 0, S(""), S("can't happen")); + test(S(""), 1, 0, S("12345"), S("can't happen")); + test(S(""), 1, 0, S("1234567890"), S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), S("can't happen")); + test(S("abcde"), 0, 0, S(""), S("abcde")); + test(S("abcde"), 0, 0, S("12345"), S("12345abcde")); + test(S("abcde"), 0, 0, S("1234567890"), S("1234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, S(""), S("bcde")); + test(S("abcde"), 0, 1, S("12345"), S("12345bcde")); + test(S("abcde"), 0, 1, S("1234567890"), S("1234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, S(""), S("cde")); + test(S("abcde"), 0, 2, S("12345"), S("12345cde")); + test(S("abcde"), 0, 2, S("1234567890"), S("1234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), S("12345678901234567890cde")); + test(S("abcde"), 0, 4, S(""), S("e")); + test(S("abcde"), 0, 4, S("12345"), S("12345e")); + test(S("abcde"), 0, 4, S("1234567890"), S("1234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), S("12345678901234567890e")); + test(S("abcde"), 0, 5, S(""), S("")); + test(S("abcde"), 0, 5, S("12345"), S("12345")); + test(S("abcde"), 0, 5, S("1234567890"), S("1234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcde"), 0, 6, S(""), S("")); + test(S("abcde"), 0, 6, S("12345"), S("12345")); + test(S("abcde"), 0, 6, S("1234567890"), S("1234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcde"), 1, 0, S(""), S("abcde")); + test(S("abcde"), 1, 0, S("12345"), S("a12345bcde")); + test(S("abcde"), 1, 0, S("1234567890"), S("a1234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, S(""), S("acde")); + test(S("abcde"), 1, 1, S("12345"), S("a12345cde")); + test(S("abcde"), 1, 1, S("1234567890"), S("a1234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, S(""), S("ade")); + test(S("abcde"), 1, 2, S("12345"), S("a12345de")); + test(S("abcde"), 1, 2, S("1234567890"), S("a1234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), S("a12345678901234567890de")); + test(S("abcde"), 1, 3, S(""), S("ae")); + test(S("abcde"), 1, 3, S("12345"), S("a12345e")); + test(S("abcde"), 1, 3, S("1234567890"), S("a1234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), S("a12345678901234567890e")); + test(S("abcde"), 1, 4, S(""), S("a")); + test(S("abcde"), 1, 4, S("12345"), S("a12345")); + test(S("abcde"), 1, 4, S("1234567890"), S("a1234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcde"), 1, 5, S(""), S("a")); + test(S("abcde"), 1, 5, S("12345"), S("a12345")); + test(S("abcde"), 1, 5, S("1234567890"), S("a1234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcde"), 2, 0, S(""), S("abcde")); + test(S("abcde"), 2, 0, S("12345"), S("ab12345cde")); + test(S("abcde"), 2, 0, S("1234567890"), S("ab1234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, S(""), S("abde")); + test(S("abcde"), 2, 1, S("12345"), S("ab12345de")); + test(S("abcde"), 2, 1, S("1234567890"), S("ab1234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, S(""), S("abe")); + test(S("abcde"), 2, 2, S("12345"), S("ab12345e")); + test(S("abcde"), 2, 2, S("1234567890"), S("ab1234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, S(""), S("ab")); + test(S("abcde"), 2, 3, S("12345"), S("ab12345")); + test(S("abcde"), 2, 3, S("1234567890"), S("ab1234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), S("ab12345678901234567890")); + test(S("abcde"), 2, 4, S(""), S("ab")); + test(S("abcde"), 2, 4, S("12345"), S("ab12345")); + test(S("abcde"), 2, 4, S("1234567890"), S("ab1234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), S("ab12345678901234567890")); + test(S("abcde"), 4, 0, S(""), S("abcde")); + test(S("abcde"), 4, 0, S("12345"), S("abcd12345e")); + test(S("abcde"), 4, 0, S("1234567890"), S("abcd1234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, S(""), S("abcd")); + test(S("abcde"), 4, 1, S("12345"), S("abcd12345")); + test(S("abcde"), 4, 1, S("1234567890"), S("abcd1234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), S("abcd12345678901234567890")); + test(S("abcde"), 4, 2, S(""), S("abcd")); + test(S("abcde"), 4, 2, S("12345"), S("abcd12345")); + test(S("abcde"), 4, 2, S("1234567890"), S("abcd1234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, S(""), S("abcde")); + test(S("abcde"), 5, 0, S("12345"), S("abcde12345")); + test(S("abcde"), 5, 0, S("1234567890"), S("abcde1234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcde"), 5, 1, S(""), S("abcde")); + test(S("abcde"), 5, 1, S("12345"), S("abcde12345")); + test(S("abcde"), 5, 1, S("1234567890"), S("abcde1234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), S("abcde12345678901234567890")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcde"), 6, 0, S(""), S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), S("can't happen")); - test(S("abcdefghij"), 0, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, S(""), S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, S(""), S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), S("12345fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, S(""), S("j")); - test(S("abcdefghij"), 0, 9, S("12345"), S("12345j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), S("1234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, S(""), S("")); - test(S("abcdefghij"), 0, 10, S("12345"), S("12345")); - test(S("abcdefghij"), 0, 10, S("1234567890"), S("1234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghij"), 0, 11, S(""), S("")); - test(S("abcdefghij"), 0, 11, S("12345"), S("12345")); - test(S("abcdefghij"), 0, 11, S("1234567890"), S("1234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, S(""), S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 4, S(""), S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345"), S("a12345fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, S(""), S("aj")); - test(S("abcdefghij"), 1, 8, S("12345"), S("a12345j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), S("a1234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, S(""), S("a")); - test(S("abcdefghij"), 1, 9, S("12345"), S("a12345")); - test(S("abcdefghij"), 1, 9, S("1234567890"), S("a1234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghij"), 1, 10, S(""), S("a")); - test(S("abcdefghij"), 1, 10, S("12345"), S("a12345")); - test(S("abcdefghij"), 1, 10, S("1234567890"), S("a1234567890")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345"), S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, S(""), S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345"), S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, S(""), S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345"), S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, S(""), S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345"), S("abcde12345j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, S(""), S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345"), S("abcde12345")); - test(S("abcdefghij"), 5, 5, S("1234567890"), S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 6, S(""), S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345"), S("abcde12345")); - test(S("abcdefghij"), 5, 6, S("1234567890"), S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345"), S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, S(""), S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345"), S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, S("1234567890"), S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 2, S(""), S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345"), S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, S("1234567890"), S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, S(""), S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345"), S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, S("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 1, S(""), S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345"), S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, S("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 11, 0, S(""), S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcde"), 6, 0, S(""), S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), S("can't happen")); + test(S("abcdefghij"), 0, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, S(""), S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, S(""), S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), S("12345fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, S(""), S("j")); + test(S("abcdefghij"), 0, 9, S("12345"), S("12345j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), S("1234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, S(""), S("")); + test(S("abcdefghij"), 0, 10, S("12345"), S("12345")); + test(S("abcdefghij"), 0, 10, S("1234567890"), S("1234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghij"), 0, 11, S(""), S("")); + test(S("abcdefghij"), 0, 11, S("12345"), S("12345")); + test(S("abcdefghij"), 0, 11, S("1234567890"), S("1234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, S(""), S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 4, S(""), S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345"), S("a12345fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, S(""), S("aj")); + test(S("abcdefghij"), 1, 8, S("12345"), S("a12345j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), S("a1234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, S(""), S("a")); + test(S("abcdefghij"), 1, 9, S("12345"), S("a12345")); + test(S("abcdefghij"), 1, 9, S("1234567890"), S("a1234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghij"), 1, 10, S(""), S("a")); + test(S("abcdefghij"), 1, 10, S("12345"), S("a12345")); + test(S("abcdefghij"), 1, 10, S("1234567890"), S("a1234567890")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345"), S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, S(""), S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345"), S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, S(""), S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345"), S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, S(""), S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345"), S("abcde12345j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, S(""), S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345"), S("abcde12345")); + test(S("abcdefghij"), 5, 5, S("1234567890"), S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 6, S(""), S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345"), S("abcde12345")); + test(S("abcdefghij"), 5, 6, S("1234567890"), S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345"), S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, S(""), S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345"), S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, S("1234567890"), S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 2, S(""), S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345"), S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, S("1234567890"), S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, S(""), S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345"), S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, S("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 1, S(""), S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345"), S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, S("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 11, 0, S(""), S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), S("abcdefghij12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S(""), S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S(""), S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), S("abcdefghij12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S(""), S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S(""), S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 21, 0, S(""), S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), S("can't happen")); - return true; + return true; } template @@ -391,8 +381,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_size_size.pass.cpp @@ -25,5952 +25,5955 @@ template TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, - S str, typename S::size_type pos2, typename S::size_type n2, - S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos1 <= old_size && pos2 <= str.size()) - { - s.replace(pos1, n1, str, pos2, n2); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type xlen = std::min(n1, old_size - pos1); - typename S::size_type rlen = std::min(n2, str.size() - pos2); - assert(s.size() == old_size - xlen + rlen); - } +test(S s, + typename S::size_type pos1, + typename S::size_type n1, + S str, + typename S::size_type pos2, + typename S::size_type n2, + S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos1 <= old_size && pos2 <= str.size()) { + s.replace(pos1, n1, str, pos2, n2); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type xlen = std::min(n1, old_size - pos1); + typename S::size_type rlen = std::min(n2, str.size() - pos2); + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos1, n1, str, pos2, n2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size || pos2 > str.size()); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos1, n1, str, pos2, n2); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size || pos2 > str.size()); + assert(s == s0); } + } #endif } template TEST_CONSTEXPR_CXX20 void -test_npos(S s, typename S::size_type pos1, typename S::size_type n1, - S str, typename S::size_type pos2, - S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos1 <= old_size && pos2 <= str.size()) - { - s.replace(pos1, n1, str, pos2); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type xlen = std::min(n1, old_size - pos1); - typename S::size_type rlen = std::min(S::npos, str.size() - pos2); - assert(s.size() == old_size - xlen + rlen); - } +test_npos(S s, typename S::size_type pos1, typename S::size_type n1, S str, typename S::size_type pos2, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos1 <= old_size && pos2 <= str.size()) { + s.replace(pos1, n1, str, pos2); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type xlen = std::min(n1, old_size - pos1); + typename S::size_type rlen = std::min(S::npos, str.size() - pos2); + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos1, n1, str, pos2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size || pos2 > str.size()); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos1, n1, str, pos2); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size || pos2 > str.size()); + assert(s == s0); } + } #endif } - template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, S(""), 0, 0, S("")); - test(S(""), 0, 0, S(""), 0, 1, S("")); - test(S(""), 0, 0, S(""), 1, 0, S("can't happen")); - test(S(""), 0, 0, S("12345"), 0, 0, S("")); - test(S(""), 0, 0, S("12345"), 0, 1, S("1")); - test(S(""), 0, 0, S("12345"), 0, 2, S("12")); - test(S(""), 0, 0, S("12345"), 0, 4, S("1234")); - test(S(""), 0, 0, S("12345"), 0, 5, S("12345")); - test(S(""), 0, 0, S("12345"), 0, 6, S("12345")); - test(S(""), 0, 0, S("12345"), 1, 0, S("")); - test(S(""), 0, 0, S("12345"), 1, 1, S("2")); - test(S(""), 0, 0, S("12345"), 1, 2, S("23")); - test(S(""), 0, 0, S("12345"), 1, 3, S("234")); - test(S(""), 0, 0, S("12345"), 1, 4, S("2345")); - test(S(""), 0, 0, S("12345"), 1, 5, S("2345")); - test(S(""), 0, 0, S("12345"), 2, 0, S("")); - test(S(""), 0, 0, S("12345"), 2, 1, S("3")); - test(S(""), 0, 0, S("12345"), 2, 2, S("34")); - test(S(""), 0, 0, S("12345"), 2, 3, S("345")); - test(S(""), 0, 0, S("12345"), 2, 4, S("345")); - test(S(""), 0, 0, S("12345"), 4, 0, S("")); - test(S(""), 0, 0, S("12345"), 4, 1, S("5")); - test(S(""), 0, 0, S("12345"), 4, 2, S("5")); - test(S(""), 0, 0, S("12345"), 5, 0, S("")); - test(S(""), 0, 0, S("12345"), 5, 1, S("")); - test(S(""), 0, 0, S("12345"), 6, 0, S("can't happen")); - test(S(""), 0, 0, S("1234567890"), 0, 0, S("")); - test(S(""), 0, 0, S("1234567890"), 0, 1, S("1")); - test(S(""), 0, 0, S("1234567890"), 0, 5, S("12345")); - test(S(""), 0, 0, S("1234567890"), 0, 9, S("123456789")); - test(S(""), 0, 0, S("1234567890"), 0, 10, S("1234567890")); - test(S(""), 0, 0, S("1234567890"), 0, 11, S("1234567890")); - test(S(""), 0, 0, S("1234567890"), 1, 0, S("")); - test(S(""), 0, 0, S("1234567890"), 1, 1, S("2")); - test(S(""), 0, 0, S("1234567890"), 1, 4, S("2345")); - test(S(""), 0, 0, S("1234567890"), 1, 8, S("23456789")); - test(S(""), 0, 0, S("1234567890"), 1, 9, S("234567890")); - test(S(""), 0, 0, S("1234567890"), 1, 10, S("234567890")); - test(S(""), 0, 0, S("1234567890"), 5, 0, S("")); - test(S(""), 0, 0, S("1234567890"), 5, 1, S("6")); - test(S(""), 0, 0, S("1234567890"), 5, 2, S("67")); - test(S(""), 0, 0, S("1234567890"), 5, 4, S("6789")); - test(S(""), 0, 0, S("1234567890"), 5, 5, S("67890")); - test(S(""), 0, 0, S("1234567890"), 5, 6, S("67890")); - test(S(""), 0, 0, S("1234567890"), 9, 0, S("")); - test(S(""), 0, 0, S("1234567890"), 9, 1, S("0")); - test(S(""), 0, 0, S("1234567890"), 9, 2, S("0")); - test(S(""), 0, 0, S("1234567890"), 10, 0, S("")); - test(S(""), 0, 0, S("1234567890"), 10, 1, S("")); - test(S(""), 0, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S(""), 0, 0, S("12345678901234567890"), 0, 0, S("")); - test(S(""), 0, 0, S("12345678901234567890"), 0, 1, S("1")); - test(S(""), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S(""), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S(""), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S(""), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S(""), 0, 0, S("12345678901234567890"), 1, 0, S("")); - test(S(""), 0, 0, S("12345678901234567890"), 1, 1, S("2")); - test(S(""), 0, 0, S("12345678901234567890"), 1, 9, S("234567890")); - test(S(""), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S(""), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S(""), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S(""), 0, 0, S("12345678901234567890"), 10, 0, S("")); - test(S(""), 0, 0, S("12345678901234567890"), 10, 1, S("1")); - test(S(""), 0, 0, S("12345678901234567890"), 10, 5, S("12345")); - test(S(""), 0, 0, S("12345678901234567890"), 10, 9, S("123456789")); - test(S(""), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S(""), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S(""), 0, 0, S("12345678901234567890"), 19, 0, S("")); - test(S(""), 0, 0, S("12345678901234567890"), 19, 1, S("0")); - test(S(""), 0, 0, S("12345678901234567890"), 19, 2, S("0")); - test(S(""), 0, 0, S("12345678901234567890"), 20, 0, S("")); - test(S(""), 0, 0, S("12345678901234567890"), 20, 1, S("")); - test(S(""), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S(""), 0, 1, S(""), 0, 0, S("")); - test(S(""), 0, 1, S(""), 0, 1, S("")); - test(S(""), 0, 1, S(""), 1, 0, S("can't happen")); - test(S(""), 0, 1, S("12345"), 0, 0, S("")); - test(S(""), 0, 1, S("12345"), 0, 1, S("1")); - test(S(""), 0, 1, S("12345"), 0, 2, S("12")); - test(S(""), 0, 1, S("12345"), 0, 4, S("1234")); - test(S(""), 0, 1, S("12345"), 0, 5, S("12345")); - test(S(""), 0, 1, S("12345"), 0, 6, S("12345")); - test(S(""), 0, 1, S("12345"), 1, 0, S("")); - test(S(""), 0, 1, S("12345"), 1, 1, S("2")); - test(S(""), 0, 1, S("12345"), 1, 2, S("23")); - test(S(""), 0, 1, S("12345"), 1, 3, S("234")); - test(S(""), 0, 1, S("12345"), 1, 4, S("2345")); - test(S(""), 0, 1, S("12345"), 1, 5, S("2345")); - test(S(""), 0, 1, S("12345"), 2, 0, S("")); - test(S(""), 0, 1, S("12345"), 2, 1, S("3")); - test(S(""), 0, 1, S("12345"), 2, 2, S("34")); - test(S(""), 0, 1, S("12345"), 2, 3, S("345")); - test(S(""), 0, 1, S("12345"), 2, 4, S("345")); - test(S(""), 0, 1, S("12345"), 4, 0, S("")); - test(S(""), 0, 1, S("12345"), 4, 1, S("5")); - test(S(""), 0, 1, S("12345"), 4, 2, S("5")); - test(S(""), 0, 1, S("12345"), 5, 0, S("")); - test(S(""), 0, 1, S("12345"), 5, 1, S("")); - test(S(""), 0, 1, S("12345"), 6, 0, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, S(""), 0, 0, S("")); + test(S(""), 0, 0, S(""), 0, 1, S("")); + test(S(""), 0, 0, S(""), 1, 0, S("can't happen")); + test(S(""), 0, 0, S("12345"), 0, 0, S("")); + test(S(""), 0, 0, S("12345"), 0, 1, S("1")); + test(S(""), 0, 0, S("12345"), 0, 2, S("12")); + test(S(""), 0, 0, S("12345"), 0, 4, S("1234")); + test(S(""), 0, 0, S("12345"), 0, 5, S("12345")); + test(S(""), 0, 0, S("12345"), 0, 6, S("12345")); + test(S(""), 0, 0, S("12345"), 1, 0, S("")); + test(S(""), 0, 0, S("12345"), 1, 1, S("2")); + test(S(""), 0, 0, S("12345"), 1, 2, S("23")); + test(S(""), 0, 0, S("12345"), 1, 3, S("234")); + test(S(""), 0, 0, S("12345"), 1, 4, S("2345")); + test(S(""), 0, 0, S("12345"), 1, 5, S("2345")); + test(S(""), 0, 0, S("12345"), 2, 0, S("")); + test(S(""), 0, 0, S("12345"), 2, 1, S("3")); + test(S(""), 0, 0, S("12345"), 2, 2, S("34")); + test(S(""), 0, 0, S("12345"), 2, 3, S("345")); + test(S(""), 0, 0, S("12345"), 2, 4, S("345")); + test(S(""), 0, 0, S("12345"), 4, 0, S("")); + test(S(""), 0, 0, S("12345"), 4, 1, S("5")); + test(S(""), 0, 0, S("12345"), 4, 2, S("5")); + test(S(""), 0, 0, S("12345"), 5, 0, S("")); + test(S(""), 0, 0, S("12345"), 5, 1, S("")); + test(S(""), 0, 0, S("12345"), 6, 0, S("can't happen")); + test(S(""), 0, 0, S("1234567890"), 0, 0, S("")); + test(S(""), 0, 0, S("1234567890"), 0, 1, S("1")); + test(S(""), 0, 0, S("1234567890"), 0, 5, S("12345")); + test(S(""), 0, 0, S("1234567890"), 0, 9, S("123456789")); + test(S(""), 0, 0, S("1234567890"), 0, 10, S("1234567890")); + test(S(""), 0, 0, S("1234567890"), 0, 11, S("1234567890")); + test(S(""), 0, 0, S("1234567890"), 1, 0, S("")); + test(S(""), 0, 0, S("1234567890"), 1, 1, S("2")); + test(S(""), 0, 0, S("1234567890"), 1, 4, S("2345")); + test(S(""), 0, 0, S("1234567890"), 1, 8, S("23456789")); + test(S(""), 0, 0, S("1234567890"), 1, 9, S("234567890")); + test(S(""), 0, 0, S("1234567890"), 1, 10, S("234567890")); + test(S(""), 0, 0, S("1234567890"), 5, 0, S("")); + test(S(""), 0, 0, S("1234567890"), 5, 1, S("6")); + test(S(""), 0, 0, S("1234567890"), 5, 2, S("67")); + test(S(""), 0, 0, S("1234567890"), 5, 4, S("6789")); + test(S(""), 0, 0, S("1234567890"), 5, 5, S("67890")); + test(S(""), 0, 0, S("1234567890"), 5, 6, S("67890")); + test(S(""), 0, 0, S("1234567890"), 9, 0, S("")); + test(S(""), 0, 0, S("1234567890"), 9, 1, S("0")); + test(S(""), 0, 0, S("1234567890"), 9, 2, S("0")); + test(S(""), 0, 0, S("1234567890"), 10, 0, S("")); + test(S(""), 0, 0, S("1234567890"), 10, 1, S("")); + test(S(""), 0, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S(""), 0, 0, S("12345678901234567890"), 0, 0, S("")); + test(S(""), 0, 0, S("12345678901234567890"), 0, 1, S("1")); + test(S(""), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S(""), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S(""), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S(""), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S(""), 0, 0, S("12345678901234567890"), 1, 0, S("")); + test(S(""), 0, 0, S("12345678901234567890"), 1, 1, S("2")); + test(S(""), 0, 0, S("12345678901234567890"), 1, 9, S("234567890")); + test(S(""), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S(""), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S(""), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S(""), 0, 0, S("12345678901234567890"), 10, 0, S("")); + test(S(""), 0, 0, S("12345678901234567890"), 10, 1, S("1")); + test(S(""), 0, 0, S("12345678901234567890"), 10, 5, S("12345")); + test(S(""), 0, 0, S("12345678901234567890"), 10, 9, S("123456789")); + test(S(""), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S(""), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S(""), 0, 0, S("12345678901234567890"), 19, 0, S("")); + test(S(""), 0, 0, S("12345678901234567890"), 19, 1, S("0")); + test(S(""), 0, 0, S("12345678901234567890"), 19, 2, S("0")); + test(S(""), 0, 0, S("12345678901234567890"), 20, 0, S("")); + test(S(""), 0, 0, S("12345678901234567890"), 20, 1, S("")); + test(S(""), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S(""), 0, 1, S(""), 0, 0, S("")); + test(S(""), 0, 1, S(""), 0, 1, S("")); + test(S(""), 0, 1, S(""), 1, 0, S("can't happen")); + test(S(""), 0, 1, S("12345"), 0, 0, S("")); + test(S(""), 0, 1, S("12345"), 0, 1, S("1")); + test(S(""), 0, 1, S("12345"), 0, 2, S("12")); + test(S(""), 0, 1, S("12345"), 0, 4, S("1234")); + test(S(""), 0, 1, S("12345"), 0, 5, S("12345")); + test(S(""), 0, 1, S("12345"), 0, 6, S("12345")); + test(S(""), 0, 1, S("12345"), 1, 0, S("")); + test(S(""), 0, 1, S("12345"), 1, 1, S("2")); + test(S(""), 0, 1, S("12345"), 1, 2, S("23")); + test(S(""), 0, 1, S("12345"), 1, 3, S("234")); + test(S(""), 0, 1, S("12345"), 1, 4, S("2345")); + test(S(""), 0, 1, S("12345"), 1, 5, S("2345")); + test(S(""), 0, 1, S("12345"), 2, 0, S("")); + test(S(""), 0, 1, S("12345"), 2, 1, S("3")); + test(S(""), 0, 1, S("12345"), 2, 2, S("34")); + test(S(""), 0, 1, S("12345"), 2, 3, S("345")); + test(S(""), 0, 1, S("12345"), 2, 4, S("345")); + test(S(""), 0, 1, S("12345"), 4, 0, S("")); + test(S(""), 0, 1, S("12345"), 4, 1, S("5")); + test(S(""), 0, 1, S("12345"), 4, 2, S("5")); + test(S(""), 0, 1, S("12345"), 5, 0, S("")); + test(S(""), 0, 1, S("12345"), 5, 1, S("")); + test(S(""), 0, 1, S("12345"), 6, 0, S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S(""), 0, 1, S("1234567890"), 0, 0, S("")); - test(S(""), 0, 1, S("1234567890"), 0, 1, S("1")); - test(S(""), 0, 1, S("1234567890"), 0, 5, S("12345")); - test(S(""), 0, 1, S("1234567890"), 0, 9, S("123456789")); - test(S(""), 0, 1, S("1234567890"), 0, 10, S("1234567890")); - test(S(""), 0, 1, S("1234567890"), 0, 11, S("1234567890")); - test(S(""), 0, 1, S("1234567890"), 1, 0, S("")); - test(S(""), 0, 1, S("1234567890"), 1, 1, S("2")); - test(S(""), 0, 1, S("1234567890"), 1, 4, S("2345")); - test(S(""), 0, 1, S("1234567890"), 1, 8, S("23456789")); - test(S(""), 0, 1, S("1234567890"), 1, 9, S("234567890")); - test(S(""), 0, 1, S("1234567890"), 1, 10, S("234567890")); - test(S(""), 0, 1, S("1234567890"), 5, 0, S("")); - test(S(""), 0, 1, S("1234567890"), 5, 1, S("6")); - test(S(""), 0, 1, S("1234567890"), 5, 2, S("67")); - test(S(""), 0, 1, S("1234567890"), 5, 4, S("6789")); - test(S(""), 0, 1, S("1234567890"), 5, 5, S("67890")); - test(S(""), 0, 1, S("1234567890"), 5, 6, S("67890")); - test(S(""), 0, 1, S("1234567890"), 9, 0, S("")); - test(S(""), 0, 1, S("1234567890"), 9, 1, S("0")); - test(S(""), 0, 1, S("1234567890"), 9, 2, S("0")); - test(S(""), 0, 1, S("1234567890"), 10, 0, S("")); - test(S(""), 0, 1, S("1234567890"), 10, 1, S("")); - test(S(""), 0, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S(""), 0, 1, S("12345678901234567890"), 0, 0, S("")); - test(S(""), 0, 1, S("12345678901234567890"), 0, 1, S("1")); - test(S(""), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S(""), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S(""), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S(""), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S(""), 0, 1, S("12345678901234567890"), 1, 0, S("")); - test(S(""), 0, 1, S("12345678901234567890"), 1, 1, S("2")); - test(S(""), 0, 1, S("12345678901234567890"), 1, 9, S("234567890")); - test(S(""), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S(""), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S(""), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S(""), 0, 1, S("12345678901234567890"), 10, 0, S("")); - test(S(""), 0, 1, S("12345678901234567890"), 10, 1, S("1")); - test(S(""), 0, 1, S("12345678901234567890"), 10, 5, S("12345")); - test(S(""), 0, 1, S("12345678901234567890"), 10, 9, S("123456789")); - test(S(""), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S(""), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S(""), 0, 1, S("12345678901234567890"), 19, 0, S("")); - test(S(""), 0, 1, S("12345678901234567890"), 19, 1, S("0")); - test(S(""), 0, 1, S("12345678901234567890"), 19, 2, S("0")); - test(S(""), 0, 1, S("12345678901234567890"), 20, 0, S("")); - test(S(""), 0, 1, S("12345678901234567890"), 20, 1, S("")); - test(S(""), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S(""), 1, 0, S(""), 0, 0, S("can't happen")); - test(S(""), 1, 0, S(""), 0, 1, S("can't happen")); - test(S(""), 1, 0, S(""), 1, 0, S("can't happen")); - test(S(""), 1, 0, S("12345"), 0, 0, S("can't happen")); - test(S(""), 1, 0, S("12345"), 0, 1, S("can't happen")); - test(S(""), 1, 0, S("12345"), 0, 2, S("can't happen")); - test(S(""), 1, 0, S("12345"), 0, 4, S("can't happen")); - test(S(""), 1, 0, S("12345"), 0, 5, S("can't happen")); - test(S(""), 1, 0, S("12345"), 0, 6, S("can't happen")); - test(S(""), 1, 0, S("12345"), 1, 0, S("can't happen")); - test(S(""), 1, 0, S("12345"), 1, 1, S("can't happen")); - test(S(""), 1, 0, S("12345"), 1, 2, S("can't happen")); - test(S(""), 1, 0, S("12345"), 1, 3, S("can't happen")); - test(S(""), 1, 0, S("12345"), 1, 4, S("can't happen")); - test(S(""), 1, 0, S("12345"), 1, 5, S("can't happen")); - test(S(""), 1, 0, S("12345"), 2, 0, S("can't happen")); - test(S(""), 1, 0, S("12345"), 2, 1, S("can't happen")); - test(S(""), 1, 0, S("12345"), 2, 2, S("can't happen")); - test(S(""), 1, 0, S("12345"), 2, 3, S("can't happen")); - test(S(""), 1, 0, S("12345"), 2, 4, S("can't happen")); - test(S(""), 1, 0, S("12345"), 4, 0, S("can't happen")); - test(S(""), 1, 0, S("12345"), 4, 1, S("can't happen")); - test(S(""), 1, 0, S("12345"), 4, 2, S("can't happen")); - test(S(""), 1, 0, S("12345"), 5, 0, S("can't happen")); - test(S(""), 1, 0, S("12345"), 5, 1, S("can't happen")); - test(S(""), 1, 0, S("12345"), 6, 0, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 0, 0, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 0, 1, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 0, 5, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 0, 9, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 0, 10, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 0, 11, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 1, 0, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 1, 1, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 1, 4, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 1, 8, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 1, 9, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 1, 10, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 5, 0, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 5, 1, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 5, 2, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 5, 4, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 5, 5, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 5, 6, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 9, 0, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 9, 1, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 9, 2, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 10, 0, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 10, 1, S("can't happen")); - test(S(""), 1, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 0, 0, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 0, 1, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S(""), 0, 1, S("1234567890"), 0, 0, S("")); + test(S(""), 0, 1, S("1234567890"), 0, 1, S("1")); + test(S(""), 0, 1, S("1234567890"), 0, 5, S("12345")); + test(S(""), 0, 1, S("1234567890"), 0, 9, S("123456789")); + test(S(""), 0, 1, S("1234567890"), 0, 10, S("1234567890")); + test(S(""), 0, 1, S("1234567890"), 0, 11, S("1234567890")); + test(S(""), 0, 1, S("1234567890"), 1, 0, S("")); + test(S(""), 0, 1, S("1234567890"), 1, 1, S("2")); + test(S(""), 0, 1, S("1234567890"), 1, 4, S("2345")); + test(S(""), 0, 1, S("1234567890"), 1, 8, S("23456789")); + test(S(""), 0, 1, S("1234567890"), 1, 9, S("234567890")); + test(S(""), 0, 1, S("1234567890"), 1, 10, S("234567890")); + test(S(""), 0, 1, S("1234567890"), 5, 0, S("")); + test(S(""), 0, 1, S("1234567890"), 5, 1, S("6")); + test(S(""), 0, 1, S("1234567890"), 5, 2, S("67")); + test(S(""), 0, 1, S("1234567890"), 5, 4, S("6789")); + test(S(""), 0, 1, S("1234567890"), 5, 5, S("67890")); + test(S(""), 0, 1, S("1234567890"), 5, 6, S("67890")); + test(S(""), 0, 1, S("1234567890"), 9, 0, S("")); + test(S(""), 0, 1, S("1234567890"), 9, 1, S("0")); + test(S(""), 0, 1, S("1234567890"), 9, 2, S("0")); + test(S(""), 0, 1, S("1234567890"), 10, 0, S("")); + test(S(""), 0, 1, S("1234567890"), 10, 1, S("")); + test(S(""), 0, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S(""), 0, 1, S("12345678901234567890"), 0, 0, S("")); + test(S(""), 0, 1, S("12345678901234567890"), 0, 1, S("1")); + test(S(""), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S(""), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S(""), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S(""), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S(""), 0, 1, S("12345678901234567890"), 1, 0, S("")); + test(S(""), 0, 1, S("12345678901234567890"), 1, 1, S("2")); + test(S(""), 0, 1, S("12345678901234567890"), 1, 9, S("234567890")); + test(S(""), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S(""), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S(""), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S(""), 0, 1, S("12345678901234567890"), 10, 0, S("")); + test(S(""), 0, 1, S("12345678901234567890"), 10, 1, S("1")); + test(S(""), 0, 1, S("12345678901234567890"), 10, 5, S("12345")); + test(S(""), 0, 1, S("12345678901234567890"), 10, 9, S("123456789")); + test(S(""), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S(""), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S(""), 0, 1, S("12345678901234567890"), 19, 0, S("")); + test(S(""), 0, 1, S("12345678901234567890"), 19, 1, S("0")); + test(S(""), 0, 1, S("12345678901234567890"), 19, 2, S("0")); + test(S(""), 0, 1, S("12345678901234567890"), 20, 0, S("")); + test(S(""), 0, 1, S("12345678901234567890"), 20, 1, S("")); + test(S(""), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S(""), 1, 0, S(""), 0, 0, S("can't happen")); + test(S(""), 1, 0, S(""), 0, 1, S("can't happen")); + test(S(""), 1, 0, S(""), 1, 0, S("can't happen")); + test(S(""), 1, 0, S("12345"), 0, 0, S("can't happen")); + test(S(""), 1, 0, S("12345"), 0, 1, S("can't happen")); + test(S(""), 1, 0, S("12345"), 0, 2, S("can't happen")); + test(S(""), 1, 0, S("12345"), 0, 4, S("can't happen")); + test(S(""), 1, 0, S("12345"), 0, 5, S("can't happen")); + test(S(""), 1, 0, S("12345"), 0, 6, S("can't happen")); + test(S(""), 1, 0, S("12345"), 1, 0, S("can't happen")); + test(S(""), 1, 0, S("12345"), 1, 1, S("can't happen")); + test(S(""), 1, 0, S("12345"), 1, 2, S("can't happen")); + test(S(""), 1, 0, S("12345"), 1, 3, S("can't happen")); + test(S(""), 1, 0, S("12345"), 1, 4, S("can't happen")); + test(S(""), 1, 0, S("12345"), 1, 5, S("can't happen")); + test(S(""), 1, 0, S("12345"), 2, 0, S("can't happen")); + test(S(""), 1, 0, S("12345"), 2, 1, S("can't happen")); + test(S(""), 1, 0, S("12345"), 2, 2, S("can't happen")); + test(S(""), 1, 0, S("12345"), 2, 3, S("can't happen")); + test(S(""), 1, 0, S("12345"), 2, 4, S("can't happen")); + test(S(""), 1, 0, S("12345"), 4, 0, S("can't happen")); + test(S(""), 1, 0, S("12345"), 4, 1, S("can't happen")); + test(S(""), 1, 0, S("12345"), 4, 2, S("can't happen")); + test(S(""), 1, 0, S("12345"), 5, 0, S("can't happen")); + test(S(""), 1, 0, S("12345"), 5, 1, S("can't happen")); + test(S(""), 1, 0, S("12345"), 6, 0, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 0, 0, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 0, 1, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 0, 5, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 0, 9, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 0, 10, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 0, 11, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 1, 0, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 1, 1, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 1, 4, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 1, 8, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 1, 9, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 1, 10, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 5, 0, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 5, 1, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 5, 2, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 5, 4, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 5, 5, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 5, 6, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 9, 0, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 9, 1, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 9, 2, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 10, 0, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 10, 1, S("can't happen")); + test(S(""), 1, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 0, 0, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 0, 1, S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S(""), 1, 0, S("12345678901234567890"), 0, 10, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 0, 19, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 0, 20, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 0, 21, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 1, 0, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 1, 1, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 1, 9, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 1, 18, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 1, 19, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 1, 20, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 10, 0, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 10, 1, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 10, 5, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 10, 9, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 10, 10, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 10, 11, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 19, 0, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 19, 1, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 19, 2, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 20, 0, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 20, 1, S("can't happen")); - test(S(""), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 0, S(""), 0, 0, S("abcde")); - test(S("abcde"), 0, 0, S(""), 0, 1, S("abcde")); - test(S("abcde"), 0, 0, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 0, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345"), 0, 1, S("1abcde")); - test(S("abcde"), 0, 0, S("12345"), 0, 2, S("12abcde")); - test(S("abcde"), 0, 0, S("12345"), 0, 4, S("1234abcde")); - test(S("abcde"), 0, 0, S("12345"), 0, 5, S("12345abcde")); - test(S("abcde"), 0, 0, S("12345"), 0, 6, S("12345abcde")); - test(S("abcde"), 0, 0, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345"), 1, 1, S("2abcde")); - test(S("abcde"), 0, 0, S("12345"), 1, 2, S("23abcde")); - test(S("abcde"), 0, 0, S("12345"), 1, 3, S("234abcde")); - test(S("abcde"), 0, 0, S("12345"), 1, 4, S("2345abcde")); - test(S("abcde"), 0, 0, S("12345"), 1, 5, S("2345abcde")); - test(S("abcde"), 0, 0, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345"), 2, 1, S("3abcde")); - test(S("abcde"), 0, 0, S("12345"), 2, 2, S("34abcde")); - test(S("abcde"), 0, 0, S("12345"), 2, 3, S("345abcde")); - test(S("abcde"), 0, 0, S("12345"), 2, 4, S("345abcde")); - test(S("abcde"), 0, 0, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345"), 4, 1, S("5abcde")); - test(S("abcde"), 0, 0, S("12345"), 4, 2, S("5abcde")); - test(S("abcde"), 0, 0, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 0, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 0, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 0, 1, S("1abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 0, 5, S("12345abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 0, 9, S("123456789abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 1, 1, S("2abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 1, 4, S("2345abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 1, 8, S("23456789abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 1, 9, S("234567890abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 1, 10, S("234567890abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 5, 1, S("6abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 5, 2, S("67abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 5, 4, S("6789abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 5, 5, S("67890abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 5, 6, S("67890abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 9, 1, S("0abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 9, 2, S("0abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 1, S(""), 0, 0, S("bcde")); - test(S("abcde"), 0, 1, S(""), 0, 1, S("bcde")); - test(S("abcde"), 0, 1, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 1, S("12345"), 0, 0, S("bcde")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S(""), 1, 0, S("12345678901234567890"), 0, 10, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 0, 19, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 0, 20, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 0, 21, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 1, 0, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 1, 1, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 1, 9, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 1, 18, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 1, 19, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 1, 20, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 10, 0, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 10, 1, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 10, 5, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 10, 9, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 10, 10, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 10, 11, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 19, 0, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 19, 1, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 19, 2, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 20, 0, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 20, 1, S("can't happen")); + test(S(""), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 0, S(""), 0, 0, S("abcde")); + test(S("abcde"), 0, 0, S(""), 0, 1, S("abcde")); + test(S("abcde"), 0, 0, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 0, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345"), 0, 1, S("1abcde")); + test(S("abcde"), 0, 0, S("12345"), 0, 2, S("12abcde")); + test(S("abcde"), 0, 0, S("12345"), 0, 4, S("1234abcde")); + test(S("abcde"), 0, 0, S("12345"), 0, 5, S("12345abcde")); + test(S("abcde"), 0, 0, S("12345"), 0, 6, S("12345abcde")); + test(S("abcde"), 0, 0, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345"), 1, 1, S("2abcde")); + test(S("abcde"), 0, 0, S("12345"), 1, 2, S("23abcde")); + test(S("abcde"), 0, 0, S("12345"), 1, 3, S("234abcde")); + test(S("abcde"), 0, 0, S("12345"), 1, 4, S("2345abcde")); + test(S("abcde"), 0, 0, S("12345"), 1, 5, S("2345abcde")); + test(S("abcde"), 0, 0, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345"), 2, 1, S("3abcde")); + test(S("abcde"), 0, 0, S("12345"), 2, 2, S("34abcde")); + test(S("abcde"), 0, 0, S("12345"), 2, 3, S("345abcde")); + test(S("abcde"), 0, 0, S("12345"), 2, 4, S("345abcde")); + test(S("abcde"), 0, 0, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345"), 4, 1, S("5abcde")); + test(S("abcde"), 0, 0, S("12345"), 4, 2, S("5abcde")); + test(S("abcde"), 0, 0, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 0, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 0, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 0, 1, S("1abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 0, 5, S("12345abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 0, 9, S("123456789abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 1, 1, S("2abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 1, 4, S("2345abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 1, 8, S("23456789abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 1, 9, S("234567890abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 1, 10, S("234567890abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 5, 1, S("6abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 5, 2, S("67abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 5, 4, S("6789abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 5, 5, S("67890abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 5, 6, S("67890abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 9, 1, S("0abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 9, 2, S("0abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 1, S(""), 0, 0, S("bcde")); + test(S("abcde"), 0, 1, S(""), 0, 1, S("bcde")); + test(S("abcde"), 0, 1, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 1, S("12345"), 0, 0, S("bcde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcde"), 0, 1, S("12345"), 0, 1, S("1bcde")); - test(S("abcde"), 0, 1, S("12345"), 0, 2, S("12bcde")); - test(S("abcde"), 0, 1, S("12345"), 0, 4, S("1234bcde")); - test(S("abcde"), 0, 1, S("12345"), 0, 5, S("12345bcde")); - test(S("abcde"), 0, 1, S("12345"), 0, 6, S("12345bcde")); - test(S("abcde"), 0, 1, S("12345"), 1, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345"), 1, 1, S("2bcde")); - test(S("abcde"), 0, 1, S("12345"), 1, 2, S("23bcde")); - test(S("abcde"), 0, 1, S("12345"), 1, 3, S("234bcde")); - test(S("abcde"), 0, 1, S("12345"), 1, 4, S("2345bcde")); - test(S("abcde"), 0, 1, S("12345"), 1, 5, S("2345bcde")); - test(S("abcde"), 0, 1, S("12345"), 2, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345"), 2, 1, S("3bcde")); - test(S("abcde"), 0, 1, S("12345"), 2, 2, S("34bcde")); - test(S("abcde"), 0, 1, S("12345"), 2, 3, S("345bcde")); - test(S("abcde"), 0, 1, S("12345"), 2, 4, S("345bcde")); - test(S("abcde"), 0, 1, S("12345"), 4, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345"), 4, 1, S("5bcde")); - test(S("abcde"), 0, 1, S("12345"), 4, 2, S("5bcde")); - test(S("abcde"), 0, 1, S("12345"), 5, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345"), 5, 1, S("bcde")); - test(S("abcde"), 0, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 1, S("1234567890"), 0, 0, S("bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 0, 1, S("1bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 0, 5, S("12345bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 0, 9, S("123456789bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 1, 0, S("bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 1, 1, S("2bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 1, 4, S("2345bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 1, 8, S("23456789bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 1, 9, S("234567890bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 1, 10, S("234567890bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 5, 0, S("bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 5, 1, S("6bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 5, 2, S("67bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 5, 4, S("6789bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 5, 5, S("67890bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 5, 6, S("67890bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 9, 0, S("bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 9, 1, S("0bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 9, 2, S("0bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 10, 0, S("bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 10, 1, S("bcde")); - test(S("abcde"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 20, 0, S("bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 20, 1, S("bcde")); - test(S("abcde"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 2, S(""), 0, 0, S("cde")); - test(S("abcde"), 0, 2, S(""), 0, 1, S("cde")); - test(S("abcde"), 0, 2, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 2, S("12345"), 0, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345"), 0, 1, S("1cde")); - test(S("abcde"), 0, 2, S("12345"), 0, 2, S("12cde")); - test(S("abcde"), 0, 2, S("12345"), 0, 4, S("1234cde")); - test(S("abcde"), 0, 2, S("12345"), 0, 5, S("12345cde")); - test(S("abcde"), 0, 2, S("12345"), 0, 6, S("12345cde")); - test(S("abcde"), 0, 2, S("12345"), 1, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345"), 1, 1, S("2cde")); - test(S("abcde"), 0, 2, S("12345"), 1, 2, S("23cde")); - test(S("abcde"), 0, 2, S("12345"), 1, 3, S("234cde")); - test(S("abcde"), 0, 2, S("12345"), 1, 4, S("2345cde")); - test(S("abcde"), 0, 2, S("12345"), 1, 5, S("2345cde")); - test(S("abcde"), 0, 2, S("12345"), 2, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345"), 2, 1, S("3cde")); - test(S("abcde"), 0, 2, S("12345"), 2, 2, S("34cde")); - test(S("abcde"), 0, 2, S("12345"), 2, 3, S("345cde")); - test(S("abcde"), 0, 2, S("12345"), 2, 4, S("345cde")); - test(S("abcde"), 0, 2, S("12345"), 4, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345"), 4, 1, S("5cde")); - test(S("abcde"), 0, 2, S("12345"), 4, 2, S("5cde")); - test(S("abcde"), 0, 2, S("12345"), 5, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345"), 5, 1, S("cde")); - test(S("abcde"), 0, 2, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 2, S("1234567890"), 0, 0, S("cde")); - test(S("abcde"), 0, 2, S("1234567890"), 0, 1, S("1cde")); - test(S("abcde"), 0, 2, S("1234567890"), 0, 5, S("12345cde")); - test(S("abcde"), 0, 2, S("1234567890"), 0, 9, S("123456789cde")); +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcde"), 0, 1, S("12345"), 0, 1, S("1bcde")); + test(S("abcde"), 0, 1, S("12345"), 0, 2, S("12bcde")); + test(S("abcde"), 0, 1, S("12345"), 0, 4, S("1234bcde")); + test(S("abcde"), 0, 1, S("12345"), 0, 5, S("12345bcde")); + test(S("abcde"), 0, 1, S("12345"), 0, 6, S("12345bcde")); + test(S("abcde"), 0, 1, S("12345"), 1, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345"), 1, 1, S("2bcde")); + test(S("abcde"), 0, 1, S("12345"), 1, 2, S("23bcde")); + test(S("abcde"), 0, 1, S("12345"), 1, 3, S("234bcde")); + test(S("abcde"), 0, 1, S("12345"), 1, 4, S("2345bcde")); + test(S("abcde"), 0, 1, S("12345"), 1, 5, S("2345bcde")); + test(S("abcde"), 0, 1, S("12345"), 2, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345"), 2, 1, S("3bcde")); + test(S("abcde"), 0, 1, S("12345"), 2, 2, S("34bcde")); + test(S("abcde"), 0, 1, S("12345"), 2, 3, S("345bcde")); + test(S("abcde"), 0, 1, S("12345"), 2, 4, S("345bcde")); + test(S("abcde"), 0, 1, S("12345"), 4, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345"), 4, 1, S("5bcde")); + test(S("abcde"), 0, 1, S("12345"), 4, 2, S("5bcde")); + test(S("abcde"), 0, 1, S("12345"), 5, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345"), 5, 1, S("bcde")); + test(S("abcde"), 0, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 1, S("1234567890"), 0, 0, S("bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 0, 1, S("1bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 0, 5, S("12345bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 0, 9, S("123456789bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 1, 0, S("bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 1, 1, S("2bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 1, 4, S("2345bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 1, 8, S("23456789bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 1, 9, S("234567890bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 1, 10, S("234567890bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 5, 0, S("bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 5, 1, S("6bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 5, 2, S("67bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 5, 4, S("6789bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 5, 5, S("67890bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 5, 6, S("67890bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 9, 0, S("bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 9, 1, S("0bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 9, 2, S("0bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 10, 0, S("bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 10, 1, S("bcde")); + test(S("abcde"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 20, 0, S("bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 20, 1, S("bcde")); + test(S("abcde"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 2, S(""), 0, 0, S("cde")); + test(S("abcde"), 0, 2, S(""), 0, 1, S("cde")); + test(S("abcde"), 0, 2, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 2, S("12345"), 0, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345"), 0, 1, S("1cde")); + test(S("abcde"), 0, 2, S("12345"), 0, 2, S("12cde")); + test(S("abcde"), 0, 2, S("12345"), 0, 4, S("1234cde")); + test(S("abcde"), 0, 2, S("12345"), 0, 5, S("12345cde")); + test(S("abcde"), 0, 2, S("12345"), 0, 6, S("12345cde")); + test(S("abcde"), 0, 2, S("12345"), 1, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345"), 1, 1, S("2cde")); + test(S("abcde"), 0, 2, S("12345"), 1, 2, S("23cde")); + test(S("abcde"), 0, 2, S("12345"), 1, 3, S("234cde")); + test(S("abcde"), 0, 2, S("12345"), 1, 4, S("2345cde")); + test(S("abcde"), 0, 2, S("12345"), 1, 5, S("2345cde")); + test(S("abcde"), 0, 2, S("12345"), 2, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345"), 2, 1, S("3cde")); + test(S("abcde"), 0, 2, S("12345"), 2, 2, S("34cde")); + test(S("abcde"), 0, 2, S("12345"), 2, 3, S("345cde")); + test(S("abcde"), 0, 2, S("12345"), 2, 4, S("345cde")); + test(S("abcde"), 0, 2, S("12345"), 4, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345"), 4, 1, S("5cde")); + test(S("abcde"), 0, 2, S("12345"), 4, 2, S("5cde")); + test(S("abcde"), 0, 2, S("12345"), 5, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345"), 5, 1, S("cde")); + test(S("abcde"), 0, 2, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 2, S("1234567890"), 0, 0, S("cde")); + test(S("abcde"), 0, 2, S("1234567890"), 0, 1, S("1cde")); + test(S("abcde"), 0, 2, S("1234567890"), 0, 5, S("12345cde")); + test(S("abcde"), 0, 2, S("1234567890"), 0, 9, S("123456789cde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcde"), 0, 2, S("1234567890"), 0, 10, S("1234567890cde")); - test(S("abcde"), 0, 2, S("1234567890"), 0, 11, S("1234567890cde")); - test(S("abcde"), 0, 2, S("1234567890"), 1, 0, S("cde")); - test(S("abcde"), 0, 2, S("1234567890"), 1, 1, S("2cde")); - test(S("abcde"), 0, 2, S("1234567890"), 1, 4, S("2345cde")); - test(S("abcde"), 0, 2, S("1234567890"), 1, 8, S("23456789cde")); - test(S("abcde"), 0, 2, S("1234567890"), 1, 9, S("234567890cde")); - test(S("abcde"), 0, 2, S("1234567890"), 1, 10, S("234567890cde")); - test(S("abcde"), 0, 2, S("1234567890"), 5, 0, S("cde")); - test(S("abcde"), 0, 2, S("1234567890"), 5, 1, S("6cde")); - test(S("abcde"), 0, 2, S("1234567890"), 5, 2, S("67cde")); - test(S("abcde"), 0, 2, S("1234567890"), 5, 4, S("6789cde")); - test(S("abcde"), 0, 2, S("1234567890"), 5, 5, S("67890cde")); - test(S("abcde"), 0, 2, S("1234567890"), 5, 6, S("67890cde")); - test(S("abcde"), 0, 2, S("1234567890"), 9, 0, S("cde")); - test(S("abcde"), 0, 2, S("1234567890"), 9, 1, S("0cde")); - test(S("abcde"), 0, 2, S("1234567890"), 9, 2, S("0cde")); - test(S("abcde"), 0, 2, S("1234567890"), 10, 0, S("cde")); - test(S("abcde"), 0, 2, S("1234567890"), 10, 1, S("cde")); - test(S("abcde"), 0, 2, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 1, S("1cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 10, S("1234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 19, S("1234567890123456789cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 20, S("12345678901234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 21, S("12345678901234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 1, S("2cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 9, S("234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 18, S("234567890123456789cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 19, S("2345678901234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 20, S("2345678901234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 1, S("1cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 5, S("12345cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 9, S("123456789cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 10, S("1234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 11, S("1234567890cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 1, S("0cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 2, S("0cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 20, 0, S("cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 20, 1, S("cde")); - test(S("abcde"), 0, 2, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 4, S(""), 0, 0, S("e")); - test(S("abcde"), 0, 4, S(""), 0, 1, S("e")); - test(S("abcde"), 0, 4, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 4, S("12345"), 0, 0, S("e")); - test(S("abcde"), 0, 4, S("12345"), 0, 1, S("1e")); - test(S("abcde"), 0, 4, S("12345"), 0, 2, S("12e")); - test(S("abcde"), 0, 4, S("12345"), 0, 4, S("1234e")); - test(S("abcde"), 0, 4, S("12345"), 0, 5, S("12345e")); - test(S("abcde"), 0, 4, S("12345"), 0, 6, S("12345e")); - test(S("abcde"), 0, 4, S("12345"), 1, 0, S("e")); - test(S("abcde"), 0, 4, S("12345"), 1, 1, S("2e")); - test(S("abcde"), 0, 4, S("12345"), 1, 2, S("23e")); - test(S("abcde"), 0, 4, S("12345"), 1, 3, S("234e")); - test(S("abcde"), 0, 4, S("12345"), 1, 4, S("2345e")); - test(S("abcde"), 0, 4, S("12345"), 1, 5, S("2345e")); - test(S("abcde"), 0, 4, S("12345"), 2, 0, S("e")); - test(S("abcde"), 0, 4, S("12345"), 2, 1, S("3e")); - test(S("abcde"), 0, 4, S("12345"), 2, 2, S("34e")); - test(S("abcde"), 0, 4, S("12345"), 2, 3, S("345e")); - test(S("abcde"), 0, 4, S("12345"), 2, 4, S("345e")); - test(S("abcde"), 0, 4, S("12345"), 4, 0, S("e")); - test(S("abcde"), 0, 4, S("12345"), 4, 1, S("5e")); - test(S("abcde"), 0, 4, S("12345"), 4, 2, S("5e")); - test(S("abcde"), 0, 4, S("12345"), 5, 0, S("e")); - test(S("abcde"), 0, 4, S("12345"), 5, 1, S("e")); - test(S("abcde"), 0, 4, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 4, S("1234567890"), 0, 0, S("e")); - test(S("abcde"), 0, 4, S("1234567890"), 0, 1, S("1e")); - test(S("abcde"), 0, 4, S("1234567890"), 0, 5, S("12345e")); - test(S("abcde"), 0, 4, S("1234567890"), 0, 9, S("123456789e")); - test(S("abcde"), 0, 4, S("1234567890"), 0, 10, S("1234567890e")); - test(S("abcde"), 0, 4, S("1234567890"), 0, 11, S("1234567890e")); - test(S("abcde"), 0, 4, S("1234567890"), 1, 0, S("e")); - test(S("abcde"), 0, 4, S("1234567890"), 1, 1, S("2e")); - test(S("abcde"), 0, 4, S("1234567890"), 1, 4, S("2345e")); - test(S("abcde"), 0, 4, S("1234567890"), 1, 8, S("23456789e")); - test(S("abcde"), 0, 4, S("1234567890"), 1, 9, S("234567890e")); - test(S("abcde"), 0, 4, S("1234567890"), 1, 10, S("234567890e")); - test(S("abcde"), 0, 4, S("1234567890"), 5, 0, S("e")); - test(S("abcde"), 0, 4, S("1234567890"), 5, 1, S("6e")); - test(S("abcde"), 0, 4, S("1234567890"), 5, 2, S("67e")); - test(S("abcde"), 0, 4, S("1234567890"), 5, 4, S("6789e")); - test(S("abcde"), 0, 4, S("1234567890"), 5, 5, S("67890e")); - test(S("abcde"), 0, 4, S("1234567890"), 5, 6, S("67890e")); - test(S("abcde"), 0, 4, S("1234567890"), 9, 0, S("e")); - test(S("abcde"), 0, 4, S("1234567890"), 9, 1, S("0e")); - test(S("abcde"), 0, 4, S("1234567890"), 9, 2, S("0e")); - test(S("abcde"), 0, 4, S("1234567890"), 10, 0, S("e")); - test(S("abcde"), 0, 4, S("1234567890"), 10, 1, S("e")); - test(S("abcde"), 0, 4, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 0, S("e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 1, S("1e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 10, S("1234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 19, S("1234567890123456789e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 20, S("12345678901234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 21, S("12345678901234567890e")); +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcde"), 0, 2, S("1234567890"), 0, 10, S("1234567890cde")); + test(S("abcde"), 0, 2, S("1234567890"), 0, 11, S("1234567890cde")); + test(S("abcde"), 0, 2, S("1234567890"), 1, 0, S("cde")); + test(S("abcde"), 0, 2, S("1234567890"), 1, 1, S("2cde")); + test(S("abcde"), 0, 2, S("1234567890"), 1, 4, S("2345cde")); + test(S("abcde"), 0, 2, S("1234567890"), 1, 8, S("23456789cde")); + test(S("abcde"), 0, 2, S("1234567890"), 1, 9, S("234567890cde")); + test(S("abcde"), 0, 2, S("1234567890"), 1, 10, S("234567890cde")); + test(S("abcde"), 0, 2, S("1234567890"), 5, 0, S("cde")); + test(S("abcde"), 0, 2, S("1234567890"), 5, 1, S("6cde")); + test(S("abcde"), 0, 2, S("1234567890"), 5, 2, S("67cde")); + test(S("abcde"), 0, 2, S("1234567890"), 5, 4, S("6789cde")); + test(S("abcde"), 0, 2, S("1234567890"), 5, 5, S("67890cde")); + test(S("abcde"), 0, 2, S("1234567890"), 5, 6, S("67890cde")); + test(S("abcde"), 0, 2, S("1234567890"), 9, 0, S("cde")); + test(S("abcde"), 0, 2, S("1234567890"), 9, 1, S("0cde")); + test(S("abcde"), 0, 2, S("1234567890"), 9, 2, S("0cde")); + test(S("abcde"), 0, 2, S("1234567890"), 10, 0, S("cde")); + test(S("abcde"), 0, 2, S("1234567890"), 10, 1, S("cde")); + test(S("abcde"), 0, 2, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 1, S("1cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 10, S("1234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 19, S("1234567890123456789cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 20, S("12345678901234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 21, S("12345678901234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 1, S("2cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 9, S("234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 18, S("234567890123456789cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 19, S("2345678901234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 20, S("2345678901234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 1, S("1cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 5, S("12345cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 9, S("123456789cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 10, S("1234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 11, S("1234567890cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 1, S("0cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 2, S("0cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 20, 0, S("cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 20, 1, S("cde")); + test(S("abcde"), 0, 2, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 4, S(""), 0, 0, S("e")); + test(S("abcde"), 0, 4, S(""), 0, 1, S("e")); + test(S("abcde"), 0, 4, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 4, S("12345"), 0, 0, S("e")); + test(S("abcde"), 0, 4, S("12345"), 0, 1, S("1e")); + test(S("abcde"), 0, 4, S("12345"), 0, 2, S("12e")); + test(S("abcde"), 0, 4, S("12345"), 0, 4, S("1234e")); + test(S("abcde"), 0, 4, S("12345"), 0, 5, S("12345e")); + test(S("abcde"), 0, 4, S("12345"), 0, 6, S("12345e")); + test(S("abcde"), 0, 4, S("12345"), 1, 0, S("e")); + test(S("abcde"), 0, 4, S("12345"), 1, 1, S("2e")); + test(S("abcde"), 0, 4, S("12345"), 1, 2, S("23e")); + test(S("abcde"), 0, 4, S("12345"), 1, 3, S("234e")); + test(S("abcde"), 0, 4, S("12345"), 1, 4, S("2345e")); + test(S("abcde"), 0, 4, S("12345"), 1, 5, S("2345e")); + test(S("abcde"), 0, 4, S("12345"), 2, 0, S("e")); + test(S("abcde"), 0, 4, S("12345"), 2, 1, S("3e")); + test(S("abcde"), 0, 4, S("12345"), 2, 2, S("34e")); + test(S("abcde"), 0, 4, S("12345"), 2, 3, S("345e")); + test(S("abcde"), 0, 4, S("12345"), 2, 4, S("345e")); + test(S("abcde"), 0, 4, S("12345"), 4, 0, S("e")); + test(S("abcde"), 0, 4, S("12345"), 4, 1, S("5e")); + test(S("abcde"), 0, 4, S("12345"), 4, 2, S("5e")); + test(S("abcde"), 0, 4, S("12345"), 5, 0, S("e")); + test(S("abcde"), 0, 4, S("12345"), 5, 1, S("e")); + test(S("abcde"), 0, 4, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 4, S("1234567890"), 0, 0, S("e")); + test(S("abcde"), 0, 4, S("1234567890"), 0, 1, S("1e")); + test(S("abcde"), 0, 4, S("1234567890"), 0, 5, S("12345e")); + test(S("abcde"), 0, 4, S("1234567890"), 0, 9, S("123456789e")); + test(S("abcde"), 0, 4, S("1234567890"), 0, 10, S("1234567890e")); + test(S("abcde"), 0, 4, S("1234567890"), 0, 11, S("1234567890e")); + test(S("abcde"), 0, 4, S("1234567890"), 1, 0, S("e")); + test(S("abcde"), 0, 4, S("1234567890"), 1, 1, S("2e")); + test(S("abcde"), 0, 4, S("1234567890"), 1, 4, S("2345e")); + test(S("abcde"), 0, 4, S("1234567890"), 1, 8, S("23456789e")); + test(S("abcde"), 0, 4, S("1234567890"), 1, 9, S("234567890e")); + test(S("abcde"), 0, 4, S("1234567890"), 1, 10, S("234567890e")); + test(S("abcde"), 0, 4, S("1234567890"), 5, 0, S("e")); + test(S("abcde"), 0, 4, S("1234567890"), 5, 1, S("6e")); + test(S("abcde"), 0, 4, S("1234567890"), 5, 2, S("67e")); + test(S("abcde"), 0, 4, S("1234567890"), 5, 4, S("6789e")); + test(S("abcde"), 0, 4, S("1234567890"), 5, 5, S("67890e")); + test(S("abcde"), 0, 4, S("1234567890"), 5, 6, S("67890e")); + test(S("abcde"), 0, 4, S("1234567890"), 9, 0, S("e")); + test(S("abcde"), 0, 4, S("1234567890"), 9, 1, S("0e")); + test(S("abcde"), 0, 4, S("1234567890"), 9, 2, S("0e")); + test(S("abcde"), 0, 4, S("1234567890"), 10, 0, S("e")); + test(S("abcde"), 0, 4, S("1234567890"), 10, 1, S("e")); + test(S("abcde"), 0, 4, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 0, S("e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 1, S("1e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 10, S("1234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 19, S("1234567890123456789e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 20, S("12345678901234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 21, S("12345678901234567890e")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 0, S("e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 1, S("2e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 9, S("234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 18, S("234567890123456789e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 19, S("2345678901234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 20, S("2345678901234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 0, S("e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 1, S("1e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 5, S("12345e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 9, S("123456789e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 10, S("1234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 11, S("1234567890e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 0, S("e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 1, S("0e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 2, S("0e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 20, 0, S("e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 20, 1, S("e")); - test(S("abcde"), 0, 4, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 5, S(""), 0, 0, S("")); - test(S("abcde"), 0, 5, S(""), 0, 1, S("")); - test(S("abcde"), 0, 5, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 5, S("12345"), 0, 0, S("")); - test(S("abcde"), 0, 5, S("12345"), 0, 1, S("1")); - test(S("abcde"), 0, 5, S("12345"), 0, 2, S("12")); - test(S("abcde"), 0, 5, S("12345"), 0, 4, S("1234")); - test(S("abcde"), 0, 5, S("12345"), 0, 5, S("12345")); - test(S("abcde"), 0, 5, S("12345"), 0, 6, S("12345")); - test(S("abcde"), 0, 5, S("12345"), 1, 0, S("")); - test(S("abcde"), 0, 5, S("12345"), 1, 1, S("2")); - test(S("abcde"), 0, 5, S("12345"), 1, 2, S("23")); - test(S("abcde"), 0, 5, S("12345"), 1, 3, S("234")); - test(S("abcde"), 0, 5, S("12345"), 1, 4, S("2345")); - test(S("abcde"), 0, 5, S("12345"), 1, 5, S("2345")); - test(S("abcde"), 0, 5, S("12345"), 2, 0, S("")); - test(S("abcde"), 0, 5, S("12345"), 2, 1, S("3")); - test(S("abcde"), 0, 5, S("12345"), 2, 2, S("34")); - test(S("abcde"), 0, 5, S("12345"), 2, 3, S("345")); - test(S("abcde"), 0, 5, S("12345"), 2, 4, S("345")); - test(S("abcde"), 0, 5, S("12345"), 4, 0, S("")); - test(S("abcde"), 0, 5, S("12345"), 4, 1, S("5")); - test(S("abcde"), 0, 5, S("12345"), 4, 2, S("5")); - test(S("abcde"), 0, 5, S("12345"), 5, 0, S("")); - test(S("abcde"), 0, 5, S("12345"), 5, 1, S("")); - test(S("abcde"), 0, 5, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 5, S("1234567890"), 0, 0, S("")); - test(S("abcde"), 0, 5, S("1234567890"), 0, 1, S("1")); - test(S("abcde"), 0, 5, S("1234567890"), 0, 5, S("12345")); - test(S("abcde"), 0, 5, S("1234567890"), 0, 9, S("123456789")); - test(S("abcde"), 0, 5, S("1234567890"), 0, 10, S("1234567890")); - test(S("abcde"), 0, 5, S("1234567890"), 0, 11, S("1234567890")); - test(S("abcde"), 0, 5, S("1234567890"), 1, 0, S("")); - test(S("abcde"), 0, 5, S("1234567890"), 1, 1, S("2")); - test(S("abcde"), 0, 5, S("1234567890"), 1, 4, S("2345")); - test(S("abcde"), 0, 5, S("1234567890"), 1, 8, S("23456789")); - test(S("abcde"), 0, 5, S("1234567890"), 1, 9, S("234567890")); - test(S("abcde"), 0, 5, S("1234567890"), 1, 10, S("234567890")); - test(S("abcde"), 0, 5, S("1234567890"), 5, 0, S("")); - test(S("abcde"), 0, 5, S("1234567890"), 5, 1, S("6")); - test(S("abcde"), 0, 5, S("1234567890"), 5, 2, S("67")); - test(S("abcde"), 0, 5, S("1234567890"), 5, 4, S("6789")); - test(S("abcde"), 0, 5, S("1234567890"), 5, 5, S("67890")); - test(S("abcde"), 0, 5, S("1234567890"), 5, 6, S("67890")); - test(S("abcde"), 0, 5, S("1234567890"), 9, 0, S("")); - test(S("abcde"), 0, 5, S("1234567890"), 9, 1, S("0")); - test(S("abcde"), 0, 5, S("1234567890"), 9, 2, S("0")); - test(S("abcde"), 0, 5, S("1234567890"), 10, 0, S("")); - test(S("abcde"), 0, 5, S("1234567890"), 10, 1, S("")); - test(S("abcde"), 0, 5, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 0, S("")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 1, S("1")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 0, S("")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 1, S("2")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 0, S("")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 1, S("1")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 5, S("12345")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 0, S("")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 1, S("0")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 2, S("0")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 20, 0, S("")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 20, 1, S("")); - test(S("abcde"), 0, 5, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 0, 6, S(""), 0, 0, S("")); - test(S("abcde"), 0, 6, S(""), 0, 1, S("")); - test(S("abcde"), 0, 6, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 0, 6, S("12345"), 0, 0, S("")); - test(S("abcde"), 0, 6, S("12345"), 0, 1, S("1")); - test(S("abcde"), 0, 6, S("12345"), 0, 2, S("12")); - test(S("abcde"), 0, 6, S("12345"), 0, 4, S("1234")); - test(S("abcde"), 0, 6, S("12345"), 0, 5, S("12345")); +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 0, S("e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 1, S("2e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 9, S("234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 18, S("234567890123456789e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 19, S("2345678901234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 20, S("2345678901234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 0, S("e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 1, S("1e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 5, S("12345e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 9, S("123456789e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 10, S("1234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 11, S("1234567890e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 0, S("e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 1, S("0e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 2, S("0e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 20, 0, S("e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 20, 1, S("e")); + test(S("abcde"), 0, 4, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 5, S(""), 0, 0, S("")); + test(S("abcde"), 0, 5, S(""), 0, 1, S("")); + test(S("abcde"), 0, 5, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 5, S("12345"), 0, 0, S("")); + test(S("abcde"), 0, 5, S("12345"), 0, 1, S("1")); + test(S("abcde"), 0, 5, S("12345"), 0, 2, S("12")); + test(S("abcde"), 0, 5, S("12345"), 0, 4, S("1234")); + test(S("abcde"), 0, 5, S("12345"), 0, 5, S("12345")); + test(S("abcde"), 0, 5, S("12345"), 0, 6, S("12345")); + test(S("abcde"), 0, 5, S("12345"), 1, 0, S("")); + test(S("abcde"), 0, 5, S("12345"), 1, 1, S("2")); + test(S("abcde"), 0, 5, S("12345"), 1, 2, S("23")); + test(S("abcde"), 0, 5, S("12345"), 1, 3, S("234")); + test(S("abcde"), 0, 5, S("12345"), 1, 4, S("2345")); + test(S("abcde"), 0, 5, S("12345"), 1, 5, S("2345")); + test(S("abcde"), 0, 5, S("12345"), 2, 0, S("")); + test(S("abcde"), 0, 5, S("12345"), 2, 1, S("3")); + test(S("abcde"), 0, 5, S("12345"), 2, 2, S("34")); + test(S("abcde"), 0, 5, S("12345"), 2, 3, S("345")); + test(S("abcde"), 0, 5, S("12345"), 2, 4, S("345")); + test(S("abcde"), 0, 5, S("12345"), 4, 0, S("")); + test(S("abcde"), 0, 5, S("12345"), 4, 1, S("5")); + test(S("abcde"), 0, 5, S("12345"), 4, 2, S("5")); + test(S("abcde"), 0, 5, S("12345"), 5, 0, S("")); + test(S("abcde"), 0, 5, S("12345"), 5, 1, S("")); + test(S("abcde"), 0, 5, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 5, S("1234567890"), 0, 0, S("")); + test(S("abcde"), 0, 5, S("1234567890"), 0, 1, S("1")); + test(S("abcde"), 0, 5, S("1234567890"), 0, 5, S("12345")); + test(S("abcde"), 0, 5, S("1234567890"), 0, 9, S("123456789")); + test(S("abcde"), 0, 5, S("1234567890"), 0, 10, S("1234567890")); + test(S("abcde"), 0, 5, S("1234567890"), 0, 11, S("1234567890")); + test(S("abcde"), 0, 5, S("1234567890"), 1, 0, S("")); + test(S("abcde"), 0, 5, S("1234567890"), 1, 1, S("2")); + test(S("abcde"), 0, 5, S("1234567890"), 1, 4, S("2345")); + test(S("abcde"), 0, 5, S("1234567890"), 1, 8, S("23456789")); + test(S("abcde"), 0, 5, S("1234567890"), 1, 9, S("234567890")); + test(S("abcde"), 0, 5, S("1234567890"), 1, 10, S("234567890")); + test(S("abcde"), 0, 5, S("1234567890"), 5, 0, S("")); + test(S("abcde"), 0, 5, S("1234567890"), 5, 1, S("6")); + test(S("abcde"), 0, 5, S("1234567890"), 5, 2, S("67")); + test(S("abcde"), 0, 5, S("1234567890"), 5, 4, S("6789")); + test(S("abcde"), 0, 5, S("1234567890"), 5, 5, S("67890")); + test(S("abcde"), 0, 5, S("1234567890"), 5, 6, S("67890")); + test(S("abcde"), 0, 5, S("1234567890"), 9, 0, S("")); + test(S("abcde"), 0, 5, S("1234567890"), 9, 1, S("0")); + test(S("abcde"), 0, 5, S("1234567890"), 9, 2, S("0")); + test(S("abcde"), 0, 5, S("1234567890"), 10, 0, S("")); + test(S("abcde"), 0, 5, S("1234567890"), 10, 1, S("")); + test(S("abcde"), 0, 5, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 0, S("")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 1, S("1")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 0, S("")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 1, S("2")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 0, S("")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 1, S("1")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 5, S("12345")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 0, S("")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 1, S("0")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 2, S("0")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 20, 0, S("")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 20, 1, S("")); + test(S("abcde"), 0, 5, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 0, 6, S(""), 0, 0, S("")); + test(S("abcde"), 0, 6, S(""), 0, 1, S("")); + test(S("abcde"), 0, 6, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 0, 6, S("12345"), 0, 0, S("")); + test(S("abcde"), 0, 6, S("12345"), 0, 1, S("1")); + test(S("abcde"), 0, 6, S("12345"), 0, 2, S("12")); + test(S("abcde"), 0, 6, S("12345"), 0, 4, S("1234")); + test(S("abcde"), 0, 6, S("12345"), 0, 5, S("12345")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcde"), 0, 6, S("12345"), 0, 6, S("12345")); - test(S("abcde"), 0, 6, S("12345"), 1, 0, S("")); - test(S("abcde"), 0, 6, S("12345"), 1, 1, S("2")); - test(S("abcde"), 0, 6, S("12345"), 1, 2, S("23")); - test(S("abcde"), 0, 6, S("12345"), 1, 3, S("234")); - test(S("abcde"), 0, 6, S("12345"), 1, 4, S("2345")); - test(S("abcde"), 0, 6, S("12345"), 1, 5, S("2345")); - test(S("abcde"), 0, 6, S("12345"), 2, 0, S("")); - test(S("abcde"), 0, 6, S("12345"), 2, 1, S("3")); - test(S("abcde"), 0, 6, S("12345"), 2, 2, S("34")); - test(S("abcde"), 0, 6, S("12345"), 2, 3, S("345")); - test(S("abcde"), 0, 6, S("12345"), 2, 4, S("345")); - test(S("abcde"), 0, 6, S("12345"), 4, 0, S("")); - test(S("abcde"), 0, 6, S("12345"), 4, 1, S("5")); - test(S("abcde"), 0, 6, S("12345"), 4, 2, S("5")); - test(S("abcde"), 0, 6, S("12345"), 5, 0, S("")); - test(S("abcde"), 0, 6, S("12345"), 5, 1, S("")); - test(S("abcde"), 0, 6, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 0, 6, S("1234567890"), 0, 0, S("")); - test(S("abcde"), 0, 6, S("1234567890"), 0, 1, S("1")); - test(S("abcde"), 0, 6, S("1234567890"), 0, 5, S("12345")); - test(S("abcde"), 0, 6, S("1234567890"), 0, 9, S("123456789")); - test(S("abcde"), 0, 6, S("1234567890"), 0, 10, S("1234567890")); - test(S("abcde"), 0, 6, S("1234567890"), 0, 11, S("1234567890")); - test(S("abcde"), 0, 6, S("1234567890"), 1, 0, S("")); - test(S("abcde"), 0, 6, S("1234567890"), 1, 1, S("2")); - test(S("abcde"), 0, 6, S("1234567890"), 1, 4, S("2345")); - test(S("abcde"), 0, 6, S("1234567890"), 1, 8, S("23456789")); - test(S("abcde"), 0, 6, S("1234567890"), 1, 9, S("234567890")); - test(S("abcde"), 0, 6, S("1234567890"), 1, 10, S("234567890")); - test(S("abcde"), 0, 6, S("1234567890"), 5, 0, S("")); - test(S("abcde"), 0, 6, S("1234567890"), 5, 1, S("6")); - test(S("abcde"), 0, 6, S("1234567890"), 5, 2, S("67")); - test(S("abcde"), 0, 6, S("1234567890"), 5, 4, S("6789")); - test(S("abcde"), 0, 6, S("1234567890"), 5, 5, S("67890")); - test(S("abcde"), 0, 6, S("1234567890"), 5, 6, S("67890")); - test(S("abcde"), 0, 6, S("1234567890"), 9, 0, S("")); - test(S("abcde"), 0, 6, S("1234567890"), 9, 1, S("0")); - test(S("abcde"), 0, 6, S("1234567890"), 9, 2, S("0")); - test(S("abcde"), 0, 6, S("1234567890"), 10, 0, S("")); - test(S("abcde"), 0, 6, S("1234567890"), 10, 1, S("")); - test(S("abcde"), 0, 6, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 0, S("")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 1, S("1")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 0, S("")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 1, S("2")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 0, S("")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 1, S("1")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 5, S("12345")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 0, S("")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 1, S("0")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 2, S("0")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 20, 0, S("")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 20, 1, S("")); - test(S("abcde"), 0, 6, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 0, S(""), 0, 0, S("abcde")); - test(S("abcde"), 1, 0, S(""), 0, 1, S("abcde")); - test(S("abcde"), 1, 0, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 0, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, 0, S("12345"), 0, 2, S("a12bcde")); - test(S("abcde"), 1, 0, S("12345"), 0, 4, S("a1234bcde")); - test(S("abcde"), 1, 0, S("12345"), 0, 5, S("a12345bcde")); - test(S("abcde"), 1, 0, S("12345"), 0, 6, S("a12345bcde")); - test(S("abcde"), 1, 0, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, 0, S("12345"), 1, 2, S("a23bcde")); - test(S("abcde"), 1, 0, S("12345"), 1, 3, S("a234bcde")); - test(S("abcde"), 1, 0, S("12345"), 1, 4, S("a2345bcde")); - test(S("abcde"), 1, 0, S("12345"), 1, 5, S("a2345bcde")); - test(S("abcde"), 1, 0, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345"), 2, 1, S("a3bcde")); - test(S("abcde"), 1, 0, S("12345"), 2, 2, S("a34bcde")); - test(S("abcde"), 1, 0, S("12345"), 2, 3, S("a345bcde")); - test(S("abcde"), 1, 0, S("12345"), 2, 4, S("a345bcde")); - test(S("abcde"), 1, 0, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345"), 4, 1, S("a5bcde")); - test(S("abcde"), 1, 0, S("12345"), 4, 2, S("a5bcde")); - test(S("abcde"), 1, 0, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 1, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 0, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 1, 0, S("1234567890"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 0, 5, S("a12345bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 1, 0, S("1234567890"), 1, 1, S("a2bcde")); +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcde"), 0, 6, S("12345"), 0, 6, S("12345")); + test(S("abcde"), 0, 6, S("12345"), 1, 0, S("")); + test(S("abcde"), 0, 6, S("12345"), 1, 1, S("2")); + test(S("abcde"), 0, 6, S("12345"), 1, 2, S("23")); + test(S("abcde"), 0, 6, S("12345"), 1, 3, S("234")); + test(S("abcde"), 0, 6, S("12345"), 1, 4, S("2345")); + test(S("abcde"), 0, 6, S("12345"), 1, 5, S("2345")); + test(S("abcde"), 0, 6, S("12345"), 2, 0, S("")); + test(S("abcde"), 0, 6, S("12345"), 2, 1, S("3")); + test(S("abcde"), 0, 6, S("12345"), 2, 2, S("34")); + test(S("abcde"), 0, 6, S("12345"), 2, 3, S("345")); + test(S("abcde"), 0, 6, S("12345"), 2, 4, S("345")); + test(S("abcde"), 0, 6, S("12345"), 4, 0, S("")); + test(S("abcde"), 0, 6, S("12345"), 4, 1, S("5")); + test(S("abcde"), 0, 6, S("12345"), 4, 2, S("5")); + test(S("abcde"), 0, 6, S("12345"), 5, 0, S("")); + test(S("abcde"), 0, 6, S("12345"), 5, 1, S("")); + test(S("abcde"), 0, 6, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 0, 6, S("1234567890"), 0, 0, S("")); + test(S("abcde"), 0, 6, S("1234567890"), 0, 1, S("1")); + test(S("abcde"), 0, 6, S("1234567890"), 0, 5, S("12345")); + test(S("abcde"), 0, 6, S("1234567890"), 0, 9, S("123456789")); + test(S("abcde"), 0, 6, S("1234567890"), 0, 10, S("1234567890")); + test(S("abcde"), 0, 6, S("1234567890"), 0, 11, S("1234567890")); + test(S("abcde"), 0, 6, S("1234567890"), 1, 0, S("")); + test(S("abcde"), 0, 6, S("1234567890"), 1, 1, S("2")); + test(S("abcde"), 0, 6, S("1234567890"), 1, 4, S("2345")); + test(S("abcde"), 0, 6, S("1234567890"), 1, 8, S("23456789")); + test(S("abcde"), 0, 6, S("1234567890"), 1, 9, S("234567890")); + test(S("abcde"), 0, 6, S("1234567890"), 1, 10, S("234567890")); + test(S("abcde"), 0, 6, S("1234567890"), 5, 0, S("")); + test(S("abcde"), 0, 6, S("1234567890"), 5, 1, S("6")); + test(S("abcde"), 0, 6, S("1234567890"), 5, 2, S("67")); + test(S("abcde"), 0, 6, S("1234567890"), 5, 4, S("6789")); + test(S("abcde"), 0, 6, S("1234567890"), 5, 5, S("67890")); + test(S("abcde"), 0, 6, S("1234567890"), 5, 6, S("67890")); + test(S("abcde"), 0, 6, S("1234567890"), 9, 0, S("")); + test(S("abcde"), 0, 6, S("1234567890"), 9, 1, S("0")); + test(S("abcde"), 0, 6, S("1234567890"), 9, 2, S("0")); + test(S("abcde"), 0, 6, S("1234567890"), 10, 0, S("")); + test(S("abcde"), 0, 6, S("1234567890"), 10, 1, S("")); + test(S("abcde"), 0, 6, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 0, S("")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 1, S("1")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 0, S("")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 1, S("2")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 0, S("")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 1, S("1")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 5, S("12345")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 0, S("")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 1, S("0")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 2, S("0")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 20, 0, S("")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 20, 1, S("")); + test(S("abcde"), 0, 6, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 0, S(""), 0, 0, S("abcde")); + test(S("abcde"), 1, 0, S(""), 0, 1, S("abcde")); + test(S("abcde"), 1, 0, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 0, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, 0, S("12345"), 0, 2, S("a12bcde")); + test(S("abcde"), 1, 0, S("12345"), 0, 4, S("a1234bcde")); + test(S("abcde"), 1, 0, S("12345"), 0, 5, S("a12345bcde")); + test(S("abcde"), 1, 0, S("12345"), 0, 6, S("a12345bcde")); + test(S("abcde"), 1, 0, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, 0, S("12345"), 1, 2, S("a23bcde")); + test(S("abcde"), 1, 0, S("12345"), 1, 3, S("a234bcde")); + test(S("abcde"), 1, 0, S("12345"), 1, 4, S("a2345bcde")); + test(S("abcde"), 1, 0, S("12345"), 1, 5, S("a2345bcde")); + test(S("abcde"), 1, 0, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345"), 2, 1, S("a3bcde")); + test(S("abcde"), 1, 0, S("12345"), 2, 2, S("a34bcde")); + test(S("abcde"), 1, 0, S("12345"), 2, 3, S("a345bcde")); + test(S("abcde"), 1, 0, S("12345"), 2, 4, S("a345bcde")); + test(S("abcde"), 1, 0, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345"), 4, 1, S("a5bcde")); + test(S("abcde"), 1, 0, S("12345"), 4, 2, S("a5bcde")); + test(S("abcde"), 1, 0, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 1, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 0, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 1, 0, S("1234567890"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 0, 5, S("a12345bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 1, 0, S("1234567890"), 1, 1, S("a2bcde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcde"), 1, 0, S("1234567890"), 1, 4, S("a2345bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 1, 0, S("1234567890"), 5, 1, S("a6bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 5, 2, S("a67bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 5, 4, S("a6789bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 5, 5, S("a67890bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 5, 6, S("a67890bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 1, 0, S("1234567890"), 9, 1, S("a0bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 9, 2, S("a0bcde")); - test(S("abcde"), 1, 0, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 1, 0, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 1, S(""), 0, 0, S("acde")); - test(S("abcde"), 1, 1, S(""), 0, 1, S("acde")); - test(S("abcde"), 1, 1, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 1, S("12345"), 0, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345"), 0, 1, S("a1cde")); - test(S("abcde"), 1, 1, S("12345"), 0, 2, S("a12cde")); - test(S("abcde"), 1, 1, S("12345"), 0, 4, S("a1234cde")); - test(S("abcde"), 1, 1, S("12345"), 0, 5, S("a12345cde")); - test(S("abcde"), 1, 1, S("12345"), 0, 6, S("a12345cde")); - test(S("abcde"), 1, 1, S("12345"), 1, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345"), 1, 1, S("a2cde")); - test(S("abcde"), 1, 1, S("12345"), 1, 2, S("a23cde")); - test(S("abcde"), 1, 1, S("12345"), 1, 3, S("a234cde")); - test(S("abcde"), 1, 1, S("12345"), 1, 4, S("a2345cde")); - test(S("abcde"), 1, 1, S("12345"), 1, 5, S("a2345cde")); - test(S("abcde"), 1, 1, S("12345"), 2, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345"), 2, 1, S("a3cde")); - test(S("abcde"), 1, 1, S("12345"), 2, 2, S("a34cde")); - test(S("abcde"), 1, 1, S("12345"), 2, 3, S("a345cde")); - test(S("abcde"), 1, 1, S("12345"), 2, 4, S("a345cde")); - test(S("abcde"), 1, 1, S("12345"), 4, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345"), 4, 1, S("a5cde")); - test(S("abcde"), 1, 1, S("12345"), 4, 2, S("a5cde")); - test(S("abcde"), 1, 1, S("12345"), 5, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345"), 5, 1, S("acde")); - test(S("abcde"), 1, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 1, S("1234567890"), 0, 0, S("acde")); - test(S("abcde"), 1, 1, S("1234567890"), 0, 1, S("a1cde")); - test(S("abcde"), 1, 1, S("1234567890"), 0, 5, S("a12345cde")); - test(S("abcde"), 1, 1, S("1234567890"), 0, 9, S("a123456789cde")); - test(S("abcde"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cde")); - test(S("abcde"), 1, 1, S("1234567890"), 1, 0, S("acde")); - test(S("abcde"), 1, 1, S("1234567890"), 1, 1, S("a2cde")); - test(S("abcde"), 1, 1, S("1234567890"), 1, 4, S("a2345cde")); - test(S("abcde"), 1, 1, S("1234567890"), 1, 8, S("a23456789cde")); - test(S("abcde"), 1, 1, S("1234567890"), 1, 9, S("a234567890cde")); - test(S("abcde"), 1, 1, S("1234567890"), 1, 10, S("a234567890cde")); - test(S("abcde"), 1, 1, S("1234567890"), 5, 0, S("acde")); - test(S("abcde"), 1, 1, S("1234567890"), 5, 1, S("a6cde")); - test(S("abcde"), 1, 1, S("1234567890"), 5, 2, S("a67cde")); - test(S("abcde"), 1, 1, S("1234567890"), 5, 4, S("a6789cde")); - test(S("abcde"), 1, 1, S("1234567890"), 5, 5, S("a67890cde")); - test(S("abcde"), 1, 1, S("1234567890"), 5, 6, S("a67890cde")); - test(S("abcde"), 1, 1, S("1234567890"), 9, 0, S("acde")); - test(S("abcde"), 1, 1, S("1234567890"), 9, 1, S("a0cde")); - test(S("abcde"), 1, 1, S("1234567890"), 9, 2, S("a0cde")); - test(S("abcde"), 1, 1, S("1234567890"), 10, 0, S("acde")); - test(S("abcde"), 1, 1, S("1234567890"), 10, 1, S("acde")); - test(S("abcde"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cde")); +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcde"), 1, 0, S("1234567890"), 1, 4, S("a2345bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 1, 0, S("1234567890"), 5, 1, S("a6bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 5, 2, S("a67bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 5, 4, S("a6789bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 5, 5, S("a67890bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 5, 6, S("a67890bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 1, 0, S("1234567890"), 9, 1, S("a0bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 9, 2, S("a0bcde")); + test(S("abcde"), 1, 0, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 1, 0, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 1, S(""), 0, 0, S("acde")); + test(S("abcde"), 1, 1, S(""), 0, 1, S("acde")); + test(S("abcde"), 1, 1, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 1, S("12345"), 0, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345"), 0, 1, S("a1cde")); + test(S("abcde"), 1, 1, S("12345"), 0, 2, S("a12cde")); + test(S("abcde"), 1, 1, S("12345"), 0, 4, S("a1234cde")); + test(S("abcde"), 1, 1, S("12345"), 0, 5, S("a12345cde")); + test(S("abcde"), 1, 1, S("12345"), 0, 6, S("a12345cde")); + test(S("abcde"), 1, 1, S("12345"), 1, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345"), 1, 1, S("a2cde")); + test(S("abcde"), 1, 1, S("12345"), 1, 2, S("a23cde")); + test(S("abcde"), 1, 1, S("12345"), 1, 3, S("a234cde")); + test(S("abcde"), 1, 1, S("12345"), 1, 4, S("a2345cde")); + test(S("abcde"), 1, 1, S("12345"), 1, 5, S("a2345cde")); + test(S("abcde"), 1, 1, S("12345"), 2, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345"), 2, 1, S("a3cde")); + test(S("abcde"), 1, 1, S("12345"), 2, 2, S("a34cde")); + test(S("abcde"), 1, 1, S("12345"), 2, 3, S("a345cde")); + test(S("abcde"), 1, 1, S("12345"), 2, 4, S("a345cde")); + test(S("abcde"), 1, 1, S("12345"), 4, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345"), 4, 1, S("a5cde")); + test(S("abcde"), 1, 1, S("12345"), 4, 2, S("a5cde")); + test(S("abcde"), 1, 1, S("12345"), 5, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345"), 5, 1, S("acde")); + test(S("abcde"), 1, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 1, S("1234567890"), 0, 0, S("acde")); + test(S("abcde"), 1, 1, S("1234567890"), 0, 1, S("a1cde")); + test(S("abcde"), 1, 1, S("1234567890"), 0, 5, S("a12345cde")); + test(S("abcde"), 1, 1, S("1234567890"), 0, 9, S("a123456789cde")); + test(S("abcde"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cde")); + test(S("abcde"), 1, 1, S("1234567890"), 1, 0, S("acde")); + test(S("abcde"), 1, 1, S("1234567890"), 1, 1, S("a2cde")); + test(S("abcde"), 1, 1, S("1234567890"), 1, 4, S("a2345cde")); + test(S("abcde"), 1, 1, S("1234567890"), 1, 8, S("a23456789cde")); + test(S("abcde"), 1, 1, S("1234567890"), 1, 9, S("a234567890cde")); + test(S("abcde"), 1, 1, S("1234567890"), 1, 10, S("a234567890cde")); + test(S("abcde"), 1, 1, S("1234567890"), 5, 0, S("acde")); + test(S("abcde"), 1, 1, S("1234567890"), 5, 1, S("a6cde")); + test(S("abcde"), 1, 1, S("1234567890"), 5, 2, S("a67cde")); + test(S("abcde"), 1, 1, S("1234567890"), 5, 4, S("a6789cde")); + test(S("abcde"), 1, 1, S("1234567890"), 5, 5, S("a67890cde")); + test(S("abcde"), 1, 1, S("1234567890"), 5, 6, S("a67890cde")); + test(S("abcde"), 1, 1, S("1234567890"), 9, 0, S("acde")); + test(S("abcde"), 1, 1, S("1234567890"), 9, 1, S("a0cde")); + test(S("abcde"), 1, 1, S("1234567890"), 9, 2, S("a0cde")); + test(S("abcde"), 1, 1, S("1234567890"), 10, 0, S("acde")); + test(S("abcde"), 1, 1, S("1234567890"), 10, 1, S("acde")); + test(S("abcde"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 20, 0, S("acde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 20, 1, S("acde")); - test(S("abcde"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 2, S(""), 0, 0, S("ade")); - test(S("abcde"), 1, 2, S(""), 0, 1, S("ade")); - test(S("abcde"), 1, 2, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 2, S("12345"), 0, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345"), 0, 1, S("a1de")); - test(S("abcde"), 1, 2, S("12345"), 0, 2, S("a12de")); - test(S("abcde"), 1, 2, S("12345"), 0, 4, S("a1234de")); - test(S("abcde"), 1, 2, S("12345"), 0, 5, S("a12345de")); - test(S("abcde"), 1, 2, S("12345"), 0, 6, S("a12345de")); - test(S("abcde"), 1, 2, S("12345"), 1, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345"), 1, 1, S("a2de")); - test(S("abcde"), 1, 2, S("12345"), 1, 2, S("a23de")); - test(S("abcde"), 1, 2, S("12345"), 1, 3, S("a234de")); - test(S("abcde"), 1, 2, S("12345"), 1, 4, S("a2345de")); - test(S("abcde"), 1, 2, S("12345"), 1, 5, S("a2345de")); - test(S("abcde"), 1, 2, S("12345"), 2, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345"), 2, 1, S("a3de")); - test(S("abcde"), 1, 2, S("12345"), 2, 2, S("a34de")); - test(S("abcde"), 1, 2, S("12345"), 2, 3, S("a345de")); - test(S("abcde"), 1, 2, S("12345"), 2, 4, S("a345de")); - test(S("abcde"), 1, 2, S("12345"), 4, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345"), 4, 1, S("a5de")); - test(S("abcde"), 1, 2, S("12345"), 4, 2, S("a5de")); - test(S("abcde"), 1, 2, S("12345"), 5, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345"), 5, 1, S("ade")); - test(S("abcde"), 1, 2, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 2, S("1234567890"), 0, 0, S("ade")); - test(S("abcde"), 1, 2, S("1234567890"), 0, 1, S("a1de")); - test(S("abcde"), 1, 2, S("1234567890"), 0, 5, S("a12345de")); - test(S("abcde"), 1, 2, S("1234567890"), 0, 9, S("a123456789de")); - test(S("abcde"), 1, 2, S("1234567890"), 0, 10, S("a1234567890de")); - test(S("abcde"), 1, 2, S("1234567890"), 0, 11, S("a1234567890de")); - test(S("abcde"), 1, 2, S("1234567890"), 1, 0, S("ade")); - test(S("abcde"), 1, 2, S("1234567890"), 1, 1, S("a2de")); - test(S("abcde"), 1, 2, S("1234567890"), 1, 4, S("a2345de")); - test(S("abcde"), 1, 2, S("1234567890"), 1, 8, S("a23456789de")); - test(S("abcde"), 1, 2, S("1234567890"), 1, 9, S("a234567890de")); - test(S("abcde"), 1, 2, S("1234567890"), 1, 10, S("a234567890de")); - test(S("abcde"), 1, 2, S("1234567890"), 5, 0, S("ade")); - test(S("abcde"), 1, 2, S("1234567890"), 5, 1, S("a6de")); - test(S("abcde"), 1, 2, S("1234567890"), 5, 2, S("a67de")); - test(S("abcde"), 1, 2, S("1234567890"), 5, 4, S("a6789de")); - test(S("abcde"), 1, 2, S("1234567890"), 5, 5, S("a67890de")); - test(S("abcde"), 1, 2, S("1234567890"), 5, 6, S("a67890de")); - test(S("abcde"), 1, 2, S("1234567890"), 9, 0, S("ade")); - test(S("abcde"), 1, 2, S("1234567890"), 9, 1, S("a0de")); - test(S("abcde"), 1, 2, S("1234567890"), 9, 2, S("a0de")); - test(S("abcde"), 1, 2, S("1234567890"), 10, 0, S("ade")); - test(S("abcde"), 1, 2, S("1234567890"), 10, 1, S("ade")); - test(S("abcde"), 1, 2, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 1, S("a1de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 10, S("a1234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 19, S("a1234567890123456789de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 20, S("a12345678901234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 21, S("a12345678901234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 1, S("a2de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 9, S("a234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 18, S("a234567890123456789de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 19, S("a2345678901234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 20, S("a2345678901234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 1, S("a1de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 5, S("a12345de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 9, S("a123456789de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 10, S("a1234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 11, S("a1234567890de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 1, S("a0de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 2, S("a0de")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 20, 0, S("ade")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 20, 1, S("ade")); - test(S("abcde"), 1, 2, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 3, S(""), 0, 0, S("ae")); - test(S("abcde"), 1, 3, S(""), 0, 1, S("ae")); - test(S("abcde"), 1, 3, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 3, S("12345"), 0, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345"), 0, 1, S("a1e")); - test(S("abcde"), 1, 3, S("12345"), 0, 2, S("a12e")); - test(S("abcde"), 1, 3, S("12345"), 0, 4, S("a1234e")); - test(S("abcde"), 1, 3, S("12345"), 0, 5, S("a12345e")); - test(S("abcde"), 1, 3, S("12345"), 0, 6, S("a12345e")); - test(S("abcde"), 1, 3, S("12345"), 1, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345"), 1, 1, S("a2e")); - test(S("abcde"), 1, 3, S("12345"), 1, 2, S("a23e")); +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 20, 0, S("acde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 20, 1, S("acde")); + test(S("abcde"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 2, S(""), 0, 0, S("ade")); + test(S("abcde"), 1, 2, S(""), 0, 1, S("ade")); + test(S("abcde"), 1, 2, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 2, S("12345"), 0, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345"), 0, 1, S("a1de")); + test(S("abcde"), 1, 2, S("12345"), 0, 2, S("a12de")); + test(S("abcde"), 1, 2, S("12345"), 0, 4, S("a1234de")); + test(S("abcde"), 1, 2, S("12345"), 0, 5, S("a12345de")); + test(S("abcde"), 1, 2, S("12345"), 0, 6, S("a12345de")); + test(S("abcde"), 1, 2, S("12345"), 1, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345"), 1, 1, S("a2de")); + test(S("abcde"), 1, 2, S("12345"), 1, 2, S("a23de")); + test(S("abcde"), 1, 2, S("12345"), 1, 3, S("a234de")); + test(S("abcde"), 1, 2, S("12345"), 1, 4, S("a2345de")); + test(S("abcde"), 1, 2, S("12345"), 1, 5, S("a2345de")); + test(S("abcde"), 1, 2, S("12345"), 2, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345"), 2, 1, S("a3de")); + test(S("abcde"), 1, 2, S("12345"), 2, 2, S("a34de")); + test(S("abcde"), 1, 2, S("12345"), 2, 3, S("a345de")); + test(S("abcde"), 1, 2, S("12345"), 2, 4, S("a345de")); + test(S("abcde"), 1, 2, S("12345"), 4, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345"), 4, 1, S("a5de")); + test(S("abcde"), 1, 2, S("12345"), 4, 2, S("a5de")); + test(S("abcde"), 1, 2, S("12345"), 5, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345"), 5, 1, S("ade")); + test(S("abcde"), 1, 2, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 2, S("1234567890"), 0, 0, S("ade")); + test(S("abcde"), 1, 2, S("1234567890"), 0, 1, S("a1de")); + test(S("abcde"), 1, 2, S("1234567890"), 0, 5, S("a12345de")); + test(S("abcde"), 1, 2, S("1234567890"), 0, 9, S("a123456789de")); + test(S("abcde"), 1, 2, S("1234567890"), 0, 10, S("a1234567890de")); + test(S("abcde"), 1, 2, S("1234567890"), 0, 11, S("a1234567890de")); + test(S("abcde"), 1, 2, S("1234567890"), 1, 0, S("ade")); + test(S("abcde"), 1, 2, S("1234567890"), 1, 1, S("a2de")); + test(S("abcde"), 1, 2, S("1234567890"), 1, 4, S("a2345de")); + test(S("abcde"), 1, 2, S("1234567890"), 1, 8, S("a23456789de")); + test(S("abcde"), 1, 2, S("1234567890"), 1, 9, S("a234567890de")); + test(S("abcde"), 1, 2, S("1234567890"), 1, 10, S("a234567890de")); + test(S("abcde"), 1, 2, S("1234567890"), 5, 0, S("ade")); + test(S("abcde"), 1, 2, S("1234567890"), 5, 1, S("a6de")); + test(S("abcde"), 1, 2, S("1234567890"), 5, 2, S("a67de")); + test(S("abcde"), 1, 2, S("1234567890"), 5, 4, S("a6789de")); + test(S("abcde"), 1, 2, S("1234567890"), 5, 5, S("a67890de")); + test(S("abcde"), 1, 2, S("1234567890"), 5, 6, S("a67890de")); + test(S("abcde"), 1, 2, S("1234567890"), 9, 0, S("ade")); + test(S("abcde"), 1, 2, S("1234567890"), 9, 1, S("a0de")); + test(S("abcde"), 1, 2, S("1234567890"), 9, 2, S("a0de")); + test(S("abcde"), 1, 2, S("1234567890"), 10, 0, S("ade")); + test(S("abcde"), 1, 2, S("1234567890"), 10, 1, S("ade")); + test(S("abcde"), 1, 2, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 1, S("a1de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 10, S("a1234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 19, S("a1234567890123456789de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 20, S("a12345678901234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 21, S("a12345678901234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 1, S("a2de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 9, S("a234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 18, S("a234567890123456789de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 19, S("a2345678901234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 20, S("a2345678901234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 1, S("a1de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 5, S("a12345de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 9, S("a123456789de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 10, S("a1234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 11, S("a1234567890de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 1, S("a0de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 2, S("a0de")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 20, 0, S("ade")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 20, 1, S("ade")); + test(S("abcde"), 1, 2, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 3, S(""), 0, 0, S("ae")); + test(S("abcde"), 1, 3, S(""), 0, 1, S("ae")); + test(S("abcde"), 1, 3, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 3, S("12345"), 0, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345"), 0, 1, S("a1e")); + test(S("abcde"), 1, 3, S("12345"), 0, 2, S("a12e")); + test(S("abcde"), 1, 3, S("12345"), 0, 4, S("a1234e")); + test(S("abcde"), 1, 3, S("12345"), 0, 5, S("a12345e")); + test(S("abcde"), 1, 3, S("12345"), 0, 6, S("a12345e")); + test(S("abcde"), 1, 3, S("12345"), 1, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345"), 1, 1, S("a2e")); + test(S("abcde"), 1, 3, S("12345"), 1, 2, S("a23e")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test9() -{ - test(S("abcde"), 1, 3, S("12345"), 1, 3, S("a234e")); - test(S("abcde"), 1, 3, S("12345"), 1, 4, S("a2345e")); - test(S("abcde"), 1, 3, S("12345"), 1, 5, S("a2345e")); - test(S("abcde"), 1, 3, S("12345"), 2, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345"), 2, 1, S("a3e")); - test(S("abcde"), 1, 3, S("12345"), 2, 2, S("a34e")); - test(S("abcde"), 1, 3, S("12345"), 2, 3, S("a345e")); - test(S("abcde"), 1, 3, S("12345"), 2, 4, S("a345e")); - test(S("abcde"), 1, 3, S("12345"), 4, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345"), 4, 1, S("a5e")); - test(S("abcde"), 1, 3, S("12345"), 4, 2, S("a5e")); - test(S("abcde"), 1, 3, S("12345"), 5, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345"), 5, 1, S("ae")); - test(S("abcde"), 1, 3, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 3, S("1234567890"), 0, 0, S("ae")); - test(S("abcde"), 1, 3, S("1234567890"), 0, 1, S("a1e")); - test(S("abcde"), 1, 3, S("1234567890"), 0, 5, S("a12345e")); - test(S("abcde"), 1, 3, S("1234567890"), 0, 9, S("a123456789e")); - test(S("abcde"), 1, 3, S("1234567890"), 0, 10, S("a1234567890e")); - test(S("abcde"), 1, 3, S("1234567890"), 0, 11, S("a1234567890e")); - test(S("abcde"), 1, 3, S("1234567890"), 1, 0, S("ae")); - test(S("abcde"), 1, 3, S("1234567890"), 1, 1, S("a2e")); - test(S("abcde"), 1, 3, S("1234567890"), 1, 4, S("a2345e")); - test(S("abcde"), 1, 3, S("1234567890"), 1, 8, S("a23456789e")); - test(S("abcde"), 1, 3, S("1234567890"), 1, 9, S("a234567890e")); - test(S("abcde"), 1, 3, S("1234567890"), 1, 10, S("a234567890e")); - test(S("abcde"), 1, 3, S("1234567890"), 5, 0, S("ae")); - test(S("abcde"), 1, 3, S("1234567890"), 5, 1, S("a6e")); - test(S("abcde"), 1, 3, S("1234567890"), 5, 2, S("a67e")); - test(S("abcde"), 1, 3, S("1234567890"), 5, 4, S("a6789e")); - test(S("abcde"), 1, 3, S("1234567890"), 5, 5, S("a67890e")); - test(S("abcde"), 1, 3, S("1234567890"), 5, 6, S("a67890e")); - test(S("abcde"), 1, 3, S("1234567890"), 9, 0, S("ae")); - test(S("abcde"), 1, 3, S("1234567890"), 9, 1, S("a0e")); - test(S("abcde"), 1, 3, S("1234567890"), 9, 2, S("a0e")); - test(S("abcde"), 1, 3, S("1234567890"), 10, 0, S("ae")); - test(S("abcde"), 1, 3, S("1234567890"), 10, 1, S("ae")); - test(S("abcde"), 1, 3, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 1, S("a1e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 10, S("a1234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 19, S("a1234567890123456789e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 20, S("a12345678901234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 21, S("a12345678901234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 1, S("a2e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 9, S("a234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 18, S("a234567890123456789e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 19, S("a2345678901234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 20, S("a2345678901234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 1, S("a1e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 5, S("a12345e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 9, S("a123456789e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 10, S("a1234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 11, S("a1234567890e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 1, S("a0e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 2, S("a0e")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 20, 0, S("ae")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 20, 1, S("ae")); - test(S("abcde"), 1, 3, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 4, S(""), 0, 0, S("a")); - test(S("abcde"), 1, 4, S(""), 0, 1, S("a")); - test(S("abcde"), 1, 4, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 4, S("12345"), 0, 0, S("a")); - test(S("abcde"), 1, 4, S("12345"), 0, 1, S("a1")); - test(S("abcde"), 1, 4, S("12345"), 0, 2, S("a12")); - test(S("abcde"), 1, 4, S("12345"), 0, 4, S("a1234")); - test(S("abcde"), 1, 4, S("12345"), 0, 5, S("a12345")); - test(S("abcde"), 1, 4, S("12345"), 0, 6, S("a12345")); - test(S("abcde"), 1, 4, S("12345"), 1, 0, S("a")); - test(S("abcde"), 1, 4, S("12345"), 1, 1, S("a2")); - test(S("abcde"), 1, 4, S("12345"), 1, 2, S("a23")); - test(S("abcde"), 1, 4, S("12345"), 1, 3, S("a234")); - test(S("abcde"), 1, 4, S("12345"), 1, 4, S("a2345")); - test(S("abcde"), 1, 4, S("12345"), 1, 5, S("a2345")); - test(S("abcde"), 1, 4, S("12345"), 2, 0, S("a")); - test(S("abcde"), 1, 4, S("12345"), 2, 1, S("a3")); - test(S("abcde"), 1, 4, S("12345"), 2, 2, S("a34")); - test(S("abcde"), 1, 4, S("12345"), 2, 3, S("a345")); - test(S("abcde"), 1, 4, S("12345"), 2, 4, S("a345")); - test(S("abcde"), 1, 4, S("12345"), 4, 0, S("a")); - test(S("abcde"), 1, 4, S("12345"), 4, 1, S("a5")); - test(S("abcde"), 1, 4, S("12345"), 4, 2, S("a5")); - test(S("abcde"), 1, 4, S("12345"), 5, 0, S("a")); - test(S("abcde"), 1, 4, S("12345"), 5, 1, S("a")); - test(S("abcde"), 1, 4, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 4, S("1234567890"), 0, 0, S("a")); - test(S("abcde"), 1, 4, S("1234567890"), 0, 1, S("a1")); - test(S("abcde"), 1, 4, S("1234567890"), 0, 5, S("a12345")); - test(S("abcde"), 1, 4, S("1234567890"), 0, 9, S("a123456789")); - test(S("abcde"), 1, 4, S("1234567890"), 0, 10, S("a1234567890")); - test(S("abcde"), 1, 4, S("1234567890"), 0, 11, S("a1234567890")); - test(S("abcde"), 1, 4, S("1234567890"), 1, 0, S("a")); - test(S("abcde"), 1, 4, S("1234567890"), 1, 1, S("a2")); - test(S("abcde"), 1, 4, S("1234567890"), 1, 4, S("a2345")); - test(S("abcde"), 1, 4, S("1234567890"), 1, 8, S("a23456789")); - test(S("abcde"), 1, 4, S("1234567890"), 1, 9, S("a234567890")); - test(S("abcde"), 1, 4, S("1234567890"), 1, 10, S("a234567890")); +TEST_CONSTEXPR_CXX20 bool test9() { + test(S("abcde"), 1, 3, S("12345"), 1, 3, S("a234e")); + test(S("abcde"), 1, 3, S("12345"), 1, 4, S("a2345e")); + test(S("abcde"), 1, 3, S("12345"), 1, 5, S("a2345e")); + test(S("abcde"), 1, 3, S("12345"), 2, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345"), 2, 1, S("a3e")); + test(S("abcde"), 1, 3, S("12345"), 2, 2, S("a34e")); + test(S("abcde"), 1, 3, S("12345"), 2, 3, S("a345e")); + test(S("abcde"), 1, 3, S("12345"), 2, 4, S("a345e")); + test(S("abcde"), 1, 3, S("12345"), 4, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345"), 4, 1, S("a5e")); + test(S("abcde"), 1, 3, S("12345"), 4, 2, S("a5e")); + test(S("abcde"), 1, 3, S("12345"), 5, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345"), 5, 1, S("ae")); + test(S("abcde"), 1, 3, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 3, S("1234567890"), 0, 0, S("ae")); + test(S("abcde"), 1, 3, S("1234567890"), 0, 1, S("a1e")); + test(S("abcde"), 1, 3, S("1234567890"), 0, 5, S("a12345e")); + test(S("abcde"), 1, 3, S("1234567890"), 0, 9, S("a123456789e")); + test(S("abcde"), 1, 3, S("1234567890"), 0, 10, S("a1234567890e")); + test(S("abcde"), 1, 3, S("1234567890"), 0, 11, S("a1234567890e")); + test(S("abcde"), 1, 3, S("1234567890"), 1, 0, S("ae")); + test(S("abcde"), 1, 3, S("1234567890"), 1, 1, S("a2e")); + test(S("abcde"), 1, 3, S("1234567890"), 1, 4, S("a2345e")); + test(S("abcde"), 1, 3, S("1234567890"), 1, 8, S("a23456789e")); + test(S("abcde"), 1, 3, S("1234567890"), 1, 9, S("a234567890e")); + test(S("abcde"), 1, 3, S("1234567890"), 1, 10, S("a234567890e")); + test(S("abcde"), 1, 3, S("1234567890"), 5, 0, S("ae")); + test(S("abcde"), 1, 3, S("1234567890"), 5, 1, S("a6e")); + test(S("abcde"), 1, 3, S("1234567890"), 5, 2, S("a67e")); + test(S("abcde"), 1, 3, S("1234567890"), 5, 4, S("a6789e")); + test(S("abcde"), 1, 3, S("1234567890"), 5, 5, S("a67890e")); + test(S("abcde"), 1, 3, S("1234567890"), 5, 6, S("a67890e")); + test(S("abcde"), 1, 3, S("1234567890"), 9, 0, S("ae")); + test(S("abcde"), 1, 3, S("1234567890"), 9, 1, S("a0e")); + test(S("abcde"), 1, 3, S("1234567890"), 9, 2, S("a0e")); + test(S("abcde"), 1, 3, S("1234567890"), 10, 0, S("ae")); + test(S("abcde"), 1, 3, S("1234567890"), 10, 1, S("ae")); + test(S("abcde"), 1, 3, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 1, S("a1e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 10, S("a1234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 19, S("a1234567890123456789e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 20, S("a12345678901234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 21, S("a12345678901234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 1, S("a2e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 9, S("a234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 18, S("a234567890123456789e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 19, S("a2345678901234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 20, S("a2345678901234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 1, S("a1e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 5, S("a12345e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 9, S("a123456789e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 10, S("a1234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 11, S("a1234567890e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 1, S("a0e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 2, S("a0e")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 20, 0, S("ae")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 20, 1, S("ae")); + test(S("abcde"), 1, 3, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 4, S(""), 0, 0, S("a")); + test(S("abcde"), 1, 4, S(""), 0, 1, S("a")); + test(S("abcde"), 1, 4, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 4, S("12345"), 0, 0, S("a")); + test(S("abcde"), 1, 4, S("12345"), 0, 1, S("a1")); + test(S("abcde"), 1, 4, S("12345"), 0, 2, S("a12")); + test(S("abcde"), 1, 4, S("12345"), 0, 4, S("a1234")); + test(S("abcde"), 1, 4, S("12345"), 0, 5, S("a12345")); + test(S("abcde"), 1, 4, S("12345"), 0, 6, S("a12345")); + test(S("abcde"), 1, 4, S("12345"), 1, 0, S("a")); + test(S("abcde"), 1, 4, S("12345"), 1, 1, S("a2")); + test(S("abcde"), 1, 4, S("12345"), 1, 2, S("a23")); + test(S("abcde"), 1, 4, S("12345"), 1, 3, S("a234")); + test(S("abcde"), 1, 4, S("12345"), 1, 4, S("a2345")); + test(S("abcde"), 1, 4, S("12345"), 1, 5, S("a2345")); + test(S("abcde"), 1, 4, S("12345"), 2, 0, S("a")); + test(S("abcde"), 1, 4, S("12345"), 2, 1, S("a3")); + test(S("abcde"), 1, 4, S("12345"), 2, 2, S("a34")); + test(S("abcde"), 1, 4, S("12345"), 2, 3, S("a345")); + test(S("abcde"), 1, 4, S("12345"), 2, 4, S("a345")); + test(S("abcde"), 1, 4, S("12345"), 4, 0, S("a")); + test(S("abcde"), 1, 4, S("12345"), 4, 1, S("a5")); + test(S("abcde"), 1, 4, S("12345"), 4, 2, S("a5")); + test(S("abcde"), 1, 4, S("12345"), 5, 0, S("a")); + test(S("abcde"), 1, 4, S("12345"), 5, 1, S("a")); + test(S("abcde"), 1, 4, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 4, S("1234567890"), 0, 0, S("a")); + test(S("abcde"), 1, 4, S("1234567890"), 0, 1, S("a1")); + test(S("abcde"), 1, 4, S("1234567890"), 0, 5, S("a12345")); + test(S("abcde"), 1, 4, S("1234567890"), 0, 9, S("a123456789")); + test(S("abcde"), 1, 4, S("1234567890"), 0, 10, S("a1234567890")); + test(S("abcde"), 1, 4, S("1234567890"), 0, 11, S("a1234567890")); + test(S("abcde"), 1, 4, S("1234567890"), 1, 0, S("a")); + test(S("abcde"), 1, 4, S("1234567890"), 1, 1, S("a2")); + test(S("abcde"), 1, 4, S("1234567890"), 1, 4, S("a2345")); + test(S("abcde"), 1, 4, S("1234567890"), 1, 8, S("a23456789")); + test(S("abcde"), 1, 4, S("1234567890"), 1, 9, S("a234567890")); + test(S("abcde"), 1, 4, S("1234567890"), 1, 10, S("a234567890")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test10() -{ - test(S("abcde"), 1, 4, S("1234567890"), 5, 0, S("a")); - test(S("abcde"), 1, 4, S("1234567890"), 5, 1, S("a6")); - test(S("abcde"), 1, 4, S("1234567890"), 5, 2, S("a67")); - test(S("abcde"), 1, 4, S("1234567890"), 5, 4, S("a6789")); - test(S("abcde"), 1, 4, S("1234567890"), 5, 5, S("a67890")); - test(S("abcde"), 1, 4, S("1234567890"), 5, 6, S("a67890")); - test(S("abcde"), 1, 4, S("1234567890"), 9, 0, S("a")); - test(S("abcde"), 1, 4, S("1234567890"), 9, 1, S("a0")); - test(S("abcde"), 1, 4, S("1234567890"), 9, 2, S("a0")); - test(S("abcde"), 1, 4, S("1234567890"), 10, 0, S("a")); - test(S("abcde"), 1, 4, S("1234567890"), 10, 1, S("a")); - test(S("abcde"), 1, 4, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 0, S("a")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 1, S("a1")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 0, S("a")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 1, S("a2")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 0, S("a")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 1, S("a1")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 0, S("a")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 1, S("a0")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 2, S("a0")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 20, 0, S("a")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 20, 1, S("a")); - test(S("abcde"), 1, 4, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 1, 5, S(""), 0, 0, S("a")); - test(S("abcde"), 1, 5, S(""), 0, 1, S("a")); - test(S("abcde"), 1, 5, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 1, 5, S("12345"), 0, 0, S("a")); - test(S("abcde"), 1, 5, S("12345"), 0, 1, S("a1")); - test(S("abcde"), 1, 5, S("12345"), 0, 2, S("a12")); - test(S("abcde"), 1, 5, S("12345"), 0, 4, S("a1234")); - test(S("abcde"), 1, 5, S("12345"), 0, 5, S("a12345")); - test(S("abcde"), 1, 5, S("12345"), 0, 6, S("a12345")); - test(S("abcde"), 1, 5, S("12345"), 1, 0, S("a")); - test(S("abcde"), 1, 5, S("12345"), 1, 1, S("a2")); - test(S("abcde"), 1, 5, S("12345"), 1, 2, S("a23")); - test(S("abcde"), 1, 5, S("12345"), 1, 3, S("a234")); - test(S("abcde"), 1, 5, S("12345"), 1, 4, S("a2345")); - test(S("abcde"), 1, 5, S("12345"), 1, 5, S("a2345")); - test(S("abcde"), 1, 5, S("12345"), 2, 0, S("a")); - test(S("abcde"), 1, 5, S("12345"), 2, 1, S("a3")); - test(S("abcde"), 1, 5, S("12345"), 2, 2, S("a34")); - test(S("abcde"), 1, 5, S("12345"), 2, 3, S("a345")); - test(S("abcde"), 1, 5, S("12345"), 2, 4, S("a345")); - test(S("abcde"), 1, 5, S("12345"), 4, 0, S("a")); - test(S("abcde"), 1, 5, S("12345"), 4, 1, S("a5")); - test(S("abcde"), 1, 5, S("12345"), 4, 2, S("a5")); - test(S("abcde"), 1, 5, S("12345"), 5, 0, S("a")); - test(S("abcde"), 1, 5, S("12345"), 5, 1, S("a")); - test(S("abcde"), 1, 5, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 1, 5, S("1234567890"), 0, 0, S("a")); - test(S("abcde"), 1, 5, S("1234567890"), 0, 1, S("a1")); - test(S("abcde"), 1, 5, S("1234567890"), 0, 5, S("a12345")); - test(S("abcde"), 1, 5, S("1234567890"), 0, 9, S("a123456789")); - test(S("abcde"), 1, 5, S("1234567890"), 0, 10, S("a1234567890")); - test(S("abcde"), 1, 5, S("1234567890"), 0, 11, S("a1234567890")); - test(S("abcde"), 1, 5, S("1234567890"), 1, 0, S("a")); - test(S("abcde"), 1, 5, S("1234567890"), 1, 1, S("a2")); - test(S("abcde"), 1, 5, S("1234567890"), 1, 4, S("a2345")); - test(S("abcde"), 1, 5, S("1234567890"), 1, 8, S("a23456789")); - test(S("abcde"), 1, 5, S("1234567890"), 1, 9, S("a234567890")); - test(S("abcde"), 1, 5, S("1234567890"), 1, 10, S("a234567890")); - test(S("abcde"), 1, 5, S("1234567890"), 5, 0, S("a")); - test(S("abcde"), 1, 5, S("1234567890"), 5, 1, S("a6")); - test(S("abcde"), 1, 5, S("1234567890"), 5, 2, S("a67")); - test(S("abcde"), 1, 5, S("1234567890"), 5, 4, S("a6789")); - test(S("abcde"), 1, 5, S("1234567890"), 5, 5, S("a67890")); - test(S("abcde"), 1, 5, S("1234567890"), 5, 6, S("a67890")); - test(S("abcde"), 1, 5, S("1234567890"), 9, 0, S("a")); - test(S("abcde"), 1, 5, S("1234567890"), 9, 1, S("a0")); - test(S("abcde"), 1, 5, S("1234567890"), 9, 2, S("a0")); - test(S("abcde"), 1, 5, S("1234567890"), 10, 0, S("a")); - test(S("abcde"), 1, 5, S("1234567890"), 10, 1, S("a")); - test(S("abcde"), 1, 5, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 0, S("a")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 1, S("a1")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 0, S("a")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 1, S("a2")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 0, S("a")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 1, S("a1")); +TEST_CONSTEXPR_CXX20 bool test10() { + test(S("abcde"), 1, 4, S("1234567890"), 5, 0, S("a")); + test(S("abcde"), 1, 4, S("1234567890"), 5, 1, S("a6")); + test(S("abcde"), 1, 4, S("1234567890"), 5, 2, S("a67")); + test(S("abcde"), 1, 4, S("1234567890"), 5, 4, S("a6789")); + test(S("abcde"), 1, 4, S("1234567890"), 5, 5, S("a67890")); + test(S("abcde"), 1, 4, S("1234567890"), 5, 6, S("a67890")); + test(S("abcde"), 1, 4, S("1234567890"), 9, 0, S("a")); + test(S("abcde"), 1, 4, S("1234567890"), 9, 1, S("a0")); + test(S("abcde"), 1, 4, S("1234567890"), 9, 2, S("a0")); + test(S("abcde"), 1, 4, S("1234567890"), 10, 0, S("a")); + test(S("abcde"), 1, 4, S("1234567890"), 10, 1, S("a")); + test(S("abcde"), 1, 4, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 0, S("a")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 1, S("a1")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 0, S("a")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 1, S("a2")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 0, S("a")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 1, S("a1")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 0, S("a")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 1, S("a0")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 2, S("a0")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 20, 0, S("a")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 20, 1, S("a")); + test(S("abcde"), 1, 4, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 1, 5, S(""), 0, 0, S("a")); + test(S("abcde"), 1, 5, S(""), 0, 1, S("a")); + test(S("abcde"), 1, 5, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 1, 5, S("12345"), 0, 0, S("a")); + test(S("abcde"), 1, 5, S("12345"), 0, 1, S("a1")); + test(S("abcde"), 1, 5, S("12345"), 0, 2, S("a12")); + test(S("abcde"), 1, 5, S("12345"), 0, 4, S("a1234")); + test(S("abcde"), 1, 5, S("12345"), 0, 5, S("a12345")); + test(S("abcde"), 1, 5, S("12345"), 0, 6, S("a12345")); + test(S("abcde"), 1, 5, S("12345"), 1, 0, S("a")); + test(S("abcde"), 1, 5, S("12345"), 1, 1, S("a2")); + test(S("abcde"), 1, 5, S("12345"), 1, 2, S("a23")); + test(S("abcde"), 1, 5, S("12345"), 1, 3, S("a234")); + test(S("abcde"), 1, 5, S("12345"), 1, 4, S("a2345")); + test(S("abcde"), 1, 5, S("12345"), 1, 5, S("a2345")); + test(S("abcde"), 1, 5, S("12345"), 2, 0, S("a")); + test(S("abcde"), 1, 5, S("12345"), 2, 1, S("a3")); + test(S("abcde"), 1, 5, S("12345"), 2, 2, S("a34")); + test(S("abcde"), 1, 5, S("12345"), 2, 3, S("a345")); + test(S("abcde"), 1, 5, S("12345"), 2, 4, S("a345")); + test(S("abcde"), 1, 5, S("12345"), 4, 0, S("a")); + test(S("abcde"), 1, 5, S("12345"), 4, 1, S("a5")); + test(S("abcde"), 1, 5, S("12345"), 4, 2, S("a5")); + test(S("abcde"), 1, 5, S("12345"), 5, 0, S("a")); + test(S("abcde"), 1, 5, S("12345"), 5, 1, S("a")); + test(S("abcde"), 1, 5, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 1, 5, S("1234567890"), 0, 0, S("a")); + test(S("abcde"), 1, 5, S("1234567890"), 0, 1, S("a1")); + test(S("abcde"), 1, 5, S("1234567890"), 0, 5, S("a12345")); + test(S("abcde"), 1, 5, S("1234567890"), 0, 9, S("a123456789")); + test(S("abcde"), 1, 5, S("1234567890"), 0, 10, S("a1234567890")); + test(S("abcde"), 1, 5, S("1234567890"), 0, 11, S("a1234567890")); + test(S("abcde"), 1, 5, S("1234567890"), 1, 0, S("a")); + test(S("abcde"), 1, 5, S("1234567890"), 1, 1, S("a2")); + test(S("abcde"), 1, 5, S("1234567890"), 1, 4, S("a2345")); + test(S("abcde"), 1, 5, S("1234567890"), 1, 8, S("a23456789")); + test(S("abcde"), 1, 5, S("1234567890"), 1, 9, S("a234567890")); + test(S("abcde"), 1, 5, S("1234567890"), 1, 10, S("a234567890")); + test(S("abcde"), 1, 5, S("1234567890"), 5, 0, S("a")); + test(S("abcde"), 1, 5, S("1234567890"), 5, 1, S("a6")); + test(S("abcde"), 1, 5, S("1234567890"), 5, 2, S("a67")); + test(S("abcde"), 1, 5, S("1234567890"), 5, 4, S("a6789")); + test(S("abcde"), 1, 5, S("1234567890"), 5, 5, S("a67890")); + test(S("abcde"), 1, 5, S("1234567890"), 5, 6, S("a67890")); + test(S("abcde"), 1, 5, S("1234567890"), 9, 0, S("a")); + test(S("abcde"), 1, 5, S("1234567890"), 9, 1, S("a0")); + test(S("abcde"), 1, 5, S("1234567890"), 9, 2, S("a0")); + test(S("abcde"), 1, 5, S("1234567890"), 10, 0, S("a")); + test(S("abcde"), 1, 5, S("1234567890"), 10, 1, S("a")); + test(S("abcde"), 1, 5, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 0, S("a")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 1, S("a1")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 0, S("a")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 1, S("a2")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 0, S("a")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 1, S("a1")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test11() -{ - test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 0, S("a")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 1, S("a0")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 2, S("a0")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 20, 0, S("a")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 20, 1, S("a")); - test(S("abcde"), 1, 5, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 0, S(""), 0, 0, S("abcde")); - test(S("abcde"), 2, 0, S(""), 0, 1, S("abcde")); - test(S("abcde"), 2, 0, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 0, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, 0, S("12345"), 0, 2, S("ab12cde")); - test(S("abcde"), 2, 0, S("12345"), 0, 4, S("ab1234cde")); - test(S("abcde"), 2, 0, S("12345"), 0, 5, S("ab12345cde")); - test(S("abcde"), 2, 0, S("12345"), 0, 6, S("ab12345cde")); - test(S("abcde"), 2, 0, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, 0, S("12345"), 1, 2, S("ab23cde")); - test(S("abcde"), 2, 0, S("12345"), 1, 3, S("ab234cde")); - test(S("abcde"), 2, 0, S("12345"), 1, 4, S("ab2345cde")); - test(S("abcde"), 2, 0, S("12345"), 1, 5, S("ab2345cde")); - test(S("abcde"), 2, 0, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345"), 2, 1, S("ab3cde")); - test(S("abcde"), 2, 0, S("12345"), 2, 2, S("ab34cde")); - test(S("abcde"), 2, 0, S("12345"), 2, 3, S("ab345cde")); - test(S("abcde"), 2, 0, S("12345"), 2, 4, S("ab345cde")); - test(S("abcde"), 2, 0, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345"), 4, 1, S("ab5cde")); - test(S("abcde"), 2, 0, S("12345"), 4, 2, S("ab5cde")); - test(S("abcde"), 2, 0, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 2, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 0, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 2, 0, S("1234567890"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, 0, S("1234567890"), 0, 5, S("ab12345cde")); - test(S("abcde"), 2, 0, S("1234567890"), 0, 9, S("ab123456789cde")); - test(S("abcde"), 2, 0, S("1234567890"), 0, 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, S("1234567890"), 0, 11, S("ab1234567890cde")); - test(S("abcde"), 2, 0, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 2, 0, S("1234567890"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, 0, S("1234567890"), 1, 4, S("ab2345cde")); - test(S("abcde"), 2, 0, S("1234567890"), 1, 8, S("ab23456789cde")); - test(S("abcde"), 2, 0, S("1234567890"), 1, 9, S("ab234567890cde")); - test(S("abcde"), 2, 0, S("1234567890"), 1, 10, S("ab234567890cde")); - test(S("abcde"), 2, 0, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 2, 0, S("1234567890"), 5, 1, S("ab6cde")); - test(S("abcde"), 2, 0, S("1234567890"), 5, 2, S("ab67cde")); - test(S("abcde"), 2, 0, S("1234567890"), 5, 4, S("ab6789cde")); - test(S("abcde"), 2, 0, S("1234567890"), 5, 5, S("ab67890cde")); - test(S("abcde"), 2, 0, S("1234567890"), 5, 6, S("ab67890cde")); - test(S("abcde"), 2, 0, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 2, 0, S("1234567890"), 9, 1, S("ab0cde")); - test(S("abcde"), 2, 0, S("1234567890"), 9, 2, S("ab0cde")); - test(S("abcde"), 2, 0, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 2, 0, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 2, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 1, S("ab1cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 1, S("ab2cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 9, S("ab234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 1, S("ab1cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 5, S("ab12345cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 9, S("ab123456789cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 10, S("ab1234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 11, S("ab1234567890cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 1, S("ab0cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 2, S("ab0cde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 2, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 1, S(""), 0, 0, S("abde")); - test(S("abcde"), 2, 1, S(""), 0, 1, S("abde")); - test(S("abcde"), 2, 1, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 1, S("12345"), 0, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345"), 0, 1, S("ab1de")); - test(S("abcde"), 2, 1, S("12345"), 0, 2, S("ab12de")); - test(S("abcde"), 2, 1, S("12345"), 0, 4, S("ab1234de")); - test(S("abcde"), 2, 1, S("12345"), 0, 5, S("ab12345de")); - test(S("abcde"), 2, 1, S("12345"), 0, 6, S("ab12345de")); - test(S("abcde"), 2, 1, S("12345"), 1, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345"), 1, 1, S("ab2de")); - test(S("abcde"), 2, 1, S("12345"), 1, 2, S("ab23de")); - test(S("abcde"), 2, 1, S("12345"), 1, 3, S("ab234de")); - test(S("abcde"), 2, 1, S("12345"), 1, 4, S("ab2345de")); - test(S("abcde"), 2, 1, S("12345"), 1, 5, S("ab2345de")); - test(S("abcde"), 2, 1, S("12345"), 2, 0, S("abde")); +TEST_CONSTEXPR_CXX20 bool test11() { + test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 0, S("a")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 1, S("a0")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 2, S("a0")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 20, 0, S("a")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 20, 1, S("a")); + test(S("abcde"), 1, 5, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 0, S(""), 0, 0, S("abcde")); + test(S("abcde"), 2, 0, S(""), 0, 1, S("abcde")); + test(S("abcde"), 2, 0, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 0, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, 0, S("12345"), 0, 2, S("ab12cde")); + test(S("abcde"), 2, 0, S("12345"), 0, 4, S("ab1234cde")); + test(S("abcde"), 2, 0, S("12345"), 0, 5, S("ab12345cde")); + test(S("abcde"), 2, 0, S("12345"), 0, 6, S("ab12345cde")); + test(S("abcde"), 2, 0, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, 0, S("12345"), 1, 2, S("ab23cde")); + test(S("abcde"), 2, 0, S("12345"), 1, 3, S("ab234cde")); + test(S("abcde"), 2, 0, S("12345"), 1, 4, S("ab2345cde")); + test(S("abcde"), 2, 0, S("12345"), 1, 5, S("ab2345cde")); + test(S("abcde"), 2, 0, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345"), 2, 1, S("ab3cde")); + test(S("abcde"), 2, 0, S("12345"), 2, 2, S("ab34cde")); + test(S("abcde"), 2, 0, S("12345"), 2, 3, S("ab345cde")); + test(S("abcde"), 2, 0, S("12345"), 2, 4, S("ab345cde")); + test(S("abcde"), 2, 0, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345"), 4, 1, S("ab5cde")); + test(S("abcde"), 2, 0, S("12345"), 4, 2, S("ab5cde")); + test(S("abcde"), 2, 0, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 2, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 0, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 2, 0, S("1234567890"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, 0, S("1234567890"), 0, 5, S("ab12345cde")); + test(S("abcde"), 2, 0, S("1234567890"), 0, 9, S("ab123456789cde")); + test(S("abcde"), 2, 0, S("1234567890"), 0, 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, S("1234567890"), 0, 11, S("ab1234567890cde")); + test(S("abcde"), 2, 0, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 2, 0, S("1234567890"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, 0, S("1234567890"), 1, 4, S("ab2345cde")); + test(S("abcde"), 2, 0, S("1234567890"), 1, 8, S("ab23456789cde")); + test(S("abcde"), 2, 0, S("1234567890"), 1, 9, S("ab234567890cde")); + test(S("abcde"), 2, 0, S("1234567890"), 1, 10, S("ab234567890cde")); + test(S("abcde"), 2, 0, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 2, 0, S("1234567890"), 5, 1, S("ab6cde")); + test(S("abcde"), 2, 0, S("1234567890"), 5, 2, S("ab67cde")); + test(S("abcde"), 2, 0, S("1234567890"), 5, 4, S("ab6789cde")); + test(S("abcde"), 2, 0, S("1234567890"), 5, 5, S("ab67890cde")); + test(S("abcde"), 2, 0, S("1234567890"), 5, 6, S("ab67890cde")); + test(S("abcde"), 2, 0, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 2, 0, S("1234567890"), 9, 1, S("ab0cde")); + test(S("abcde"), 2, 0, S("1234567890"), 9, 2, S("ab0cde")); + test(S("abcde"), 2, 0, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 2, 0, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 2, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 1, S("ab1cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 1, S("ab2cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 9, S("ab234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 1, S("ab1cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 5, S("ab12345cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 9, S("ab123456789cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 10, S("ab1234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 11, S("ab1234567890cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 1, S("ab0cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 2, S("ab0cde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 2, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 1, S(""), 0, 0, S("abde")); + test(S("abcde"), 2, 1, S(""), 0, 1, S("abde")); + test(S("abcde"), 2, 1, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 1, S("12345"), 0, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345"), 0, 1, S("ab1de")); + test(S("abcde"), 2, 1, S("12345"), 0, 2, S("ab12de")); + test(S("abcde"), 2, 1, S("12345"), 0, 4, S("ab1234de")); + test(S("abcde"), 2, 1, S("12345"), 0, 5, S("ab12345de")); + test(S("abcde"), 2, 1, S("12345"), 0, 6, S("ab12345de")); + test(S("abcde"), 2, 1, S("12345"), 1, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345"), 1, 1, S("ab2de")); + test(S("abcde"), 2, 1, S("12345"), 1, 2, S("ab23de")); + test(S("abcde"), 2, 1, S("12345"), 1, 3, S("ab234de")); + test(S("abcde"), 2, 1, S("12345"), 1, 4, S("ab2345de")); + test(S("abcde"), 2, 1, S("12345"), 1, 5, S("ab2345de")); + test(S("abcde"), 2, 1, S("12345"), 2, 0, S("abde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test12() -{ - test(S("abcde"), 2, 1, S("12345"), 2, 1, S("ab3de")); - test(S("abcde"), 2, 1, S("12345"), 2, 2, S("ab34de")); - test(S("abcde"), 2, 1, S("12345"), 2, 3, S("ab345de")); - test(S("abcde"), 2, 1, S("12345"), 2, 4, S("ab345de")); - test(S("abcde"), 2, 1, S("12345"), 4, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345"), 4, 1, S("ab5de")); - test(S("abcde"), 2, 1, S("12345"), 4, 2, S("ab5de")); - test(S("abcde"), 2, 1, S("12345"), 5, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345"), 5, 1, S("abde")); - test(S("abcde"), 2, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 1, S("1234567890"), 0, 0, S("abde")); - test(S("abcde"), 2, 1, S("1234567890"), 0, 1, S("ab1de")); - test(S("abcde"), 2, 1, S("1234567890"), 0, 5, S("ab12345de")); - test(S("abcde"), 2, 1, S("1234567890"), 0, 9, S("ab123456789de")); - test(S("abcde"), 2, 1, S("1234567890"), 0, 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, S("1234567890"), 0, 11, S("ab1234567890de")); - test(S("abcde"), 2, 1, S("1234567890"), 1, 0, S("abde")); - test(S("abcde"), 2, 1, S("1234567890"), 1, 1, S("ab2de")); - test(S("abcde"), 2, 1, S("1234567890"), 1, 4, S("ab2345de")); - test(S("abcde"), 2, 1, S("1234567890"), 1, 8, S("ab23456789de")); - test(S("abcde"), 2, 1, S("1234567890"), 1, 9, S("ab234567890de")); - test(S("abcde"), 2, 1, S("1234567890"), 1, 10, S("ab234567890de")); - test(S("abcde"), 2, 1, S("1234567890"), 5, 0, S("abde")); - test(S("abcde"), 2, 1, S("1234567890"), 5, 1, S("ab6de")); - test(S("abcde"), 2, 1, S("1234567890"), 5, 2, S("ab67de")); - test(S("abcde"), 2, 1, S("1234567890"), 5, 4, S("ab6789de")); - test(S("abcde"), 2, 1, S("1234567890"), 5, 5, S("ab67890de")); - test(S("abcde"), 2, 1, S("1234567890"), 5, 6, S("ab67890de")); - test(S("abcde"), 2, 1, S("1234567890"), 9, 0, S("abde")); - test(S("abcde"), 2, 1, S("1234567890"), 9, 1, S("ab0de")); - test(S("abcde"), 2, 1, S("1234567890"), 9, 2, S("ab0de")); - test(S("abcde"), 2, 1, S("1234567890"), 10, 0, S("abde")); - test(S("abcde"), 2, 1, S("1234567890"), 10, 1, S("abde")); - test(S("abcde"), 2, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 1, S("ab1de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 19, S("ab1234567890123456789de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 20, S("ab12345678901234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 21, S("ab12345678901234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 1, S("ab2de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 9, S("ab234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 18, S("ab234567890123456789de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 19, S("ab2345678901234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 20, S("ab2345678901234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 1, S("ab1de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 5, S("ab12345de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 9, S("ab123456789de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 10, S("ab1234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 11, S("ab1234567890de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 1, S("ab0de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 2, S("ab0de")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 20, 0, S("abde")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 20, 1, S("abde")); - test(S("abcde"), 2, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 2, S(""), 0, 0, S("abe")); - test(S("abcde"), 2, 2, S(""), 0, 1, S("abe")); - test(S("abcde"), 2, 2, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 2, S("12345"), 0, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345"), 0, 1, S("ab1e")); - test(S("abcde"), 2, 2, S("12345"), 0, 2, S("ab12e")); - test(S("abcde"), 2, 2, S("12345"), 0, 4, S("ab1234e")); - test(S("abcde"), 2, 2, S("12345"), 0, 5, S("ab12345e")); - test(S("abcde"), 2, 2, S("12345"), 0, 6, S("ab12345e")); - test(S("abcde"), 2, 2, S("12345"), 1, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345"), 1, 1, S("ab2e")); - test(S("abcde"), 2, 2, S("12345"), 1, 2, S("ab23e")); - test(S("abcde"), 2, 2, S("12345"), 1, 3, S("ab234e")); - test(S("abcde"), 2, 2, S("12345"), 1, 4, S("ab2345e")); - test(S("abcde"), 2, 2, S("12345"), 1, 5, S("ab2345e")); - test(S("abcde"), 2, 2, S("12345"), 2, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345"), 2, 1, S("ab3e")); - test(S("abcde"), 2, 2, S("12345"), 2, 2, S("ab34e")); - test(S("abcde"), 2, 2, S("12345"), 2, 3, S("ab345e")); - test(S("abcde"), 2, 2, S("12345"), 2, 4, S("ab345e")); - test(S("abcde"), 2, 2, S("12345"), 4, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345"), 4, 1, S("ab5e")); - test(S("abcde"), 2, 2, S("12345"), 4, 2, S("ab5e")); - test(S("abcde"), 2, 2, S("12345"), 5, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345"), 5, 1, S("abe")); - test(S("abcde"), 2, 2, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 2, S("1234567890"), 0, 0, S("abe")); - test(S("abcde"), 2, 2, S("1234567890"), 0, 1, S("ab1e")); - test(S("abcde"), 2, 2, S("1234567890"), 0, 5, S("ab12345e")); - test(S("abcde"), 2, 2, S("1234567890"), 0, 9, S("ab123456789e")); - test(S("abcde"), 2, 2, S("1234567890"), 0, 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, S("1234567890"), 0, 11, S("ab1234567890e")); - test(S("abcde"), 2, 2, S("1234567890"), 1, 0, S("abe")); - test(S("abcde"), 2, 2, S("1234567890"), 1, 1, S("ab2e")); - test(S("abcde"), 2, 2, S("1234567890"), 1, 4, S("ab2345e")); - test(S("abcde"), 2, 2, S("1234567890"), 1, 8, S("ab23456789e")); - test(S("abcde"), 2, 2, S("1234567890"), 1, 9, S("ab234567890e")); - test(S("abcde"), 2, 2, S("1234567890"), 1, 10, S("ab234567890e")); - test(S("abcde"), 2, 2, S("1234567890"), 5, 0, S("abe")); - test(S("abcde"), 2, 2, S("1234567890"), 5, 1, S("ab6e")); - test(S("abcde"), 2, 2, S("1234567890"), 5, 2, S("ab67e")); - test(S("abcde"), 2, 2, S("1234567890"), 5, 4, S("ab6789e")); +TEST_CONSTEXPR_CXX20 bool test12() { + test(S("abcde"), 2, 1, S("12345"), 2, 1, S("ab3de")); + test(S("abcde"), 2, 1, S("12345"), 2, 2, S("ab34de")); + test(S("abcde"), 2, 1, S("12345"), 2, 3, S("ab345de")); + test(S("abcde"), 2, 1, S("12345"), 2, 4, S("ab345de")); + test(S("abcde"), 2, 1, S("12345"), 4, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345"), 4, 1, S("ab5de")); + test(S("abcde"), 2, 1, S("12345"), 4, 2, S("ab5de")); + test(S("abcde"), 2, 1, S("12345"), 5, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345"), 5, 1, S("abde")); + test(S("abcde"), 2, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 1, S("1234567890"), 0, 0, S("abde")); + test(S("abcde"), 2, 1, S("1234567890"), 0, 1, S("ab1de")); + test(S("abcde"), 2, 1, S("1234567890"), 0, 5, S("ab12345de")); + test(S("abcde"), 2, 1, S("1234567890"), 0, 9, S("ab123456789de")); + test(S("abcde"), 2, 1, S("1234567890"), 0, 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, S("1234567890"), 0, 11, S("ab1234567890de")); + test(S("abcde"), 2, 1, S("1234567890"), 1, 0, S("abde")); + test(S("abcde"), 2, 1, S("1234567890"), 1, 1, S("ab2de")); + test(S("abcde"), 2, 1, S("1234567890"), 1, 4, S("ab2345de")); + test(S("abcde"), 2, 1, S("1234567890"), 1, 8, S("ab23456789de")); + test(S("abcde"), 2, 1, S("1234567890"), 1, 9, S("ab234567890de")); + test(S("abcde"), 2, 1, S("1234567890"), 1, 10, S("ab234567890de")); + test(S("abcde"), 2, 1, S("1234567890"), 5, 0, S("abde")); + test(S("abcde"), 2, 1, S("1234567890"), 5, 1, S("ab6de")); + test(S("abcde"), 2, 1, S("1234567890"), 5, 2, S("ab67de")); + test(S("abcde"), 2, 1, S("1234567890"), 5, 4, S("ab6789de")); + test(S("abcde"), 2, 1, S("1234567890"), 5, 5, S("ab67890de")); + test(S("abcde"), 2, 1, S("1234567890"), 5, 6, S("ab67890de")); + test(S("abcde"), 2, 1, S("1234567890"), 9, 0, S("abde")); + test(S("abcde"), 2, 1, S("1234567890"), 9, 1, S("ab0de")); + test(S("abcde"), 2, 1, S("1234567890"), 9, 2, S("ab0de")); + test(S("abcde"), 2, 1, S("1234567890"), 10, 0, S("abde")); + test(S("abcde"), 2, 1, S("1234567890"), 10, 1, S("abde")); + test(S("abcde"), 2, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 1, S("ab1de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 19, S("ab1234567890123456789de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 20, S("ab12345678901234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 21, S("ab12345678901234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 1, S("ab2de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 9, S("ab234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 18, S("ab234567890123456789de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 19, S("ab2345678901234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 20, S("ab2345678901234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 1, S("ab1de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 5, S("ab12345de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 9, S("ab123456789de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 10, S("ab1234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 11, S("ab1234567890de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 1, S("ab0de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 2, S("ab0de")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 20, 0, S("abde")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 20, 1, S("abde")); + test(S("abcde"), 2, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 2, S(""), 0, 0, S("abe")); + test(S("abcde"), 2, 2, S(""), 0, 1, S("abe")); + test(S("abcde"), 2, 2, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 2, S("12345"), 0, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345"), 0, 1, S("ab1e")); + test(S("abcde"), 2, 2, S("12345"), 0, 2, S("ab12e")); + test(S("abcde"), 2, 2, S("12345"), 0, 4, S("ab1234e")); + test(S("abcde"), 2, 2, S("12345"), 0, 5, S("ab12345e")); + test(S("abcde"), 2, 2, S("12345"), 0, 6, S("ab12345e")); + test(S("abcde"), 2, 2, S("12345"), 1, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345"), 1, 1, S("ab2e")); + test(S("abcde"), 2, 2, S("12345"), 1, 2, S("ab23e")); + test(S("abcde"), 2, 2, S("12345"), 1, 3, S("ab234e")); + test(S("abcde"), 2, 2, S("12345"), 1, 4, S("ab2345e")); + test(S("abcde"), 2, 2, S("12345"), 1, 5, S("ab2345e")); + test(S("abcde"), 2, 2, S("12345"), 2, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345"), 2, 1, S("ab3e")); + test(S("abcde"), 2, 2, S("12345"), 2, 2, S("ab34e")); + test(S("abcde"), 2, 2, S("12345"), 2, 3, S("ab345e")); + test(S("abcde"), 2, 2, S("12345"), 2, 4, S("ab345e")); + test(S("abcde"), 2, 2, S("12345"), 4, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345"), 4, 1, S("ab5e")); + test(S("abcde"), 2, 2, S("12345"), 4, 2, S("ab5e")); + test(S("abcde"), 2, 2, S("12345"), 5, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345"), 5, 1, S("abe")); + test(S("abcde"), 2, 2, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 2, S("1234567890"), 0, 0, S("abe")); + test(S("abcde"), 2, 2, S("1234567890"), 0, 1, S("ab1e")); + test(S("abcde"), 2, 2, S("1234567890"), 0, 5, S("ab12345e")); + test(S("abcde"), 2, 2, S("1234567890"), 0, 9, S("ab123456789e")); + test(S("abcde"), 2, 2, S("1234567890"), 0, 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, S("1234567890"), 0, 11, S("ab1234567890e")); + test(S("abcde"), 2, 2, S("1234567890"), 1, 0, S("abe")); + test(S("abcde"), 2, 2, S("1234567890"), 1, 1, S("ab2e")); + test(S("abcde"), 2, 2, S("1234567890"), 1, 4, S("ab2345e")); + test(S("abcde"), 2, 2, S("1234567890"), 1, 8, S("ab23456789e")); + test(S("abcde"), 2, 2, S("1234567890"), 1, 9, S("ab234567890e")); + test(S("abcde"), 2, 2, S("1234567890"), 1, 10, S("ab234567890e")); + test(S("abcde"), 2, 2, S("1234567890"), 5, 0, S("abe")); + test(S("abcde"), 2, 2, S("1234567890"), 5, 1, S("ab6e")); + test(S("abcde"), 2, 2, S("1234567890"), 5, 2, S("ab67e")); + test(S("abcde"), 2, 2, S("1234567890"), 5, 4, S("ab6789e")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test13() -{ - test(S("abcde"), 2, 2, S("1234567890"), 5, 5, S("ab67890e")); - test(S("abcde"), 2, 2, S("1234567890"), 5, 6, S("ab67890e")); - test(S("abcde"), 2, 2, S("1234567890"), 9, 0, S("abe")); - test(S("abcde"), 2, 2, S("1234567890"), 9, 1, S("ab0e")); - test(S("abcde"), 2, 2, S("1234567890"), 9, 2, S("ab0e")); - test(S("abcde"), 2, 2, S("1234567890"), 10, 0, S("abe")); - test(S("abcde"), 2, 2, S("1234567890"), 10, 1, S("abe")); - test(S("abcde"), 2, 2, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 1, S("ab1e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 19, S("ab1234567890123456789e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 20, S("ab12345678901234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 21, S("ab12345678901234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 1, S("ab2e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 9, S("ab234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 18, S("ab234567890123456789e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 19, S("ab2345678901234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 20, S("ab2345678901234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 1, S("ab1e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 5, S("ab12345e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 9, S("ab123456789e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 10, S("ab1234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 11, S("ab1234567890e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 1, S("ab0e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 2, S("ab0e")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 20, 0, S("abe")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 20, 1, S("abe")); - test(S("abcde"), 2, 2, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 3, S(""), 0, 0, S("ab")); - test(S("abcde"), 2, 3, S(""), 0, 1, S("ab")); - test(S("abcde"), 2, 3, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 3, S("12345"), 0, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345"), 0, 1, S("ab1")); - test(S("abcde"), 2, 3, S("12345"), 0, 2, S("ab12")); - test(S("abcde"), 2, 3, S("12345"), 0, 4, S("ab1234")); - test(S("abcde"), 2, 3, S("12345"), 0, 5, S("ab12345")); - test(S("abcde"), 2, 3, S("12345"), 0, 6, S("ab12345")); - test(S("abcde"), 2, 3, S("12345"), 1, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345"), 1, 1, S("ab2")); - test(S("abcde"), 2, 3, S("12345"), 1, 2, S("ab23")); - test(S("abcde"), 2, 3, S("12345"), 1, 3, S("ab234")); - test(S("abcde"), 2, 3, S("12345"), 1, 4, S("ab2345")); - test(S("abcde"), 2, 3, S("12345"), 1, 5, S("ab2345")); - test(S("abcde"), 2, 3, S("12345"), 2, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345"), 2, 1, S("ab3")); - test(S("abcde"), 2, 3, S("12345"), 2, 2, S("ab34")); - test(S("abcde"), 2, 3, S("12345"), 2, 3, S("ab345")); - test(S("abcde"), 2, 3, S("12345"), 2, 4, S("ab345")); - test(S("abcde"), 2, 3, S("12345"), 4, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345"), 4, 1, S("ab5")); - test(S("abcde"), 2, 3, S("12345"), 4, 2, S("ab5")); - test(S("abcde"), 2, 3, S("12345"), 5, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345"), 5, 1, S("ab")); - test(S("abcde"), 2, 3, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 3, S("1234567890"), 0, 0, S("ab")); - test(S("abcde"), 2, 3, S("1234567890"), 0, 1, S("ab1")); - test(S("abcde"), 2, 3, S("1234567890"), 0, 5, S("ab12345")); - test(S("abcde"), 2, 3, S("1234567890"), 0, 9, S("ab123456789")); - test(S("abcde"), 2, 3, S("1234567890"), 0, 10, S("ab1234567890")); - test(S("abcde"), 2, 3, S("1234567890"), 0, 11, S("ab1234567890")); - test(S("abcde"), 2, 3, S("1234567890"), 1, 0, S("ab")); - test(S("abcde"), 2, 3, S("1234567890"), 1, 1, S("ab2")); - test(S("abcde"), 2, 3, S("1234567890"), 1, 4, S("ab2345")); - test(S("abcde"), 2, 3, S("1234567890"), 1, 8, S("ab23456789")); - test(S("abcde"), 2, 3, S("1234567890"), 1, 9, S("ab234567890")); - test(S("abcde"), 2, 3, S("1234567890"), 1, 10, S("ab234567890")); - test(S("abcde"), 2, 3, S("1234567890"), 5, 0, S("ab")); - test(S("abcde"), 2, 3, S("1234567890"), 5, 1, S("ab6")); - test(S("abcde"), 2, 3, S("1234567890"), 5, 2, S("ab67")); - test(S("abcde"), 2, 3, S("1234567890"), 5, 4, S("ab6789")); - test(S("abcde"), 2, 3, S("1234567890"), 5, 5, S("ab67890")); - test(S("abcde"), 2, 3, S("1234567890"), 5, 6, S("ab67890")); - test(S("abcde"), 2, 3, S("1234567890"), 9, 0, S("ab")); - test(S("abcde"), 2, 3, S("1234567890"), 9, 1, S("ab0")); - test(S("abcde"), 2, 3, S("1234567890"), 9, 2, S("ab0")); - test(S("abcde"), 2, 3, S("1234567890"), 10, 0, S("ab")); - test(S("abcde"), 2, 3, S("1234567890"), 10, 1, S("ab")); - test(S("abcde"), 2, 3, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 1, S("ab1")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 10, S("ab1234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 19, S("ab1234567890123456789")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 20, S("ab12345678901234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 21, S("ab12345678901234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 1, S("ab2")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 9, S("ab234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 18, S("ab234567890123456789")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 19, S("ab2345678901234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 20, S("ab2345678901234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 1, S("ab1")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 5, S("ab12345")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 9, S("ab123456789")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 10, S("ab1234567890")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 11, S("ab1234567890")); +TEST_CONSTEXPR_CXX20 bool test13() { + test(S("abcde"), 2, 2, S("1234567890"), 5, 5, S("ab67890e")); + test(S("abcde"), 2, 2, S("1234567890"), 5, 6, S("ab67890e")); + test(S("abcde"), 2, 2, S("1234567890"), 9, 0, S("abe")); + test(S("abcde"), 2, 2, S("1234567890"), 9, 1, S("ab0e")); + test(S("abcde"), 2, 2, S("1234567890"), 9, 2, S("ab0e")); + test(S("abcde"), 2, 2, S("1234567890"), 10, 0, S("abe")); + test(S("abcde"), 2, 2, S("1234567890"), 10, 1, S("abe")); + test(S("abcde"), 2, 2, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 1, S("ab1e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 19, S("ab1234567890123456789e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 20, S("ab12345678901234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 21, S("ab12345678901234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 1, S("ab2e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 9, S("ab234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 18, S("ab234567890123456789e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 19, S("ab2345678901234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 20, S("ab2345678901234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 1, S("ab1e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 5, S("ab12345e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 9, S("ab123456789e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 10, S("ab1234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 11, S("ab1234567890e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 1, S("ab0e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 2, S("ab0e")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 20, 0, S("abe")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 20, 1, S("abe")); + test(S("abcde"), 2, 2, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 3, S(""), 0, 0, S("ab")); + test(S("abcde"), 2, 3, S(""), 0, 1, S("ab")); + test(S("abcde"), 2, 3, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 3, S("12345"), 0, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345"), 0, 1, S("ab1")); + test(S("abcde"), 2, 3, S("12345"), 0, 2, S("ab12")); + test(S("abcde"), 2, 3, S("12345"), 0, 4, S("ab1234")); + test(S("abcde"), 2, 3, S("12345"), 0, 5, S("ab12345")); + test(S("abcde"), 2, 3, S("12345"), 0, 6, S("ab12345")); + test(S("abcde"), 2, 3, S("12345"), 1, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345"), 1, 1, S("ab2")); + test(S("abcde"), 2, 3, S("12345"), 1, 2, S("ab23")); + test(S("abcde"), 2, 3, S("12345"), 1, 3, S("ab234")); + test(S("abcde"), 2, 3, S("12345"), 1, 4, S("ab2345")); + test(S("abcde"), 2, 3, S("12345"), 1, 5, S("ab2345")); + test(S("abcde"), 2, 3, S("12345"), 2, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345"), 2, 1, S("ab3")); + test(S("abcde"), 2, 3, S("12345"), 2, 2, S("ab34")); + test(S("abcde"), 2, 3, S("12345"), 2, 3, S("ab345")); + test(S("abcde"), 2, 3, S("12345"), 2, 4, S("ab345")); + test(S("abcde"), 2, 3, S("12345"), 4, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345"), 4, 1, S("ab5")); + test(S("abcde"), 2, 3, S("12345"), 4, 2, S("ab5")); + test(S("abcde"), 2, 3, S("12345"), 5, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345"), 5, 1, S("ab")); + test(S("abcde"), 2, 3, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 3, S("1234567890"), 0, 0, S("ab")); + test(S("abcde"), 2, 3, S("1234567890"), 0, 1, S("ab1")); + test(S("abcde"), 2, 3, S("1234567890"), 0, 5, S("ab12345")); + test(S("abcde"), 2, 3, S("1234567890"), 0, 9, S("ab123456789")); + test(S("abcde"), 2, 3, S("1234567890"), 0, 10, S("ab1234567890")); + test(S("abcde"), 2, 3, S("1234567890"), 0, 11, S("ab1234567890")); + test(S("abcde"), 2, 3, S("1234567890"), 1, 0, S("ab")); + test(S("abcde"), 2, 3, S("1234567890"), 1, 1, S("ab2")); + test(S("abcde"), 2, 3, S("1234567890"), 1, 4, S("ab2345")); + test(S("abcde"), 2, 3, S("1234567890"), 1, 8, S("ab23456789")); + test(S("abcde"), 2, 3, S("1234567890"), 1, 9, S("ab234567890")); + test(S("abcde"), 2, 3, S("1234567890"), 1, 10, S("ab234567890")); + test(S("abcde"), 2, 3, S("1234567890"), 5, 0, S("ab")); + test(S("abcde"), 2, 3, S("1234567890"), 5, 1, S("ab6")); + test(S("abcde"), 2, 3, S("1234567890"), 5, 2, S("ab67")); + test(S("abcde"), 2, 3, S("1234567890"), 5, 4, S("ab6789")); + test(S("abcde"), 2, 3, S("1234567890"), 5, 5, S("ab67890")); + test(S("abcde"), 2, 3, S("1234567890"), 5, 6, S("ab67890")); + test(S("abcde"), 2, 3, S("1234567890"), 9, 0, S("ab")); + test(S("abcde"), 2, 3, S("1234567890"), 9, 1, S("ab0")); + test(S("abcde"), 2, 3, S("1234567890"), 9, 2, S("ab0")); + test(S("abcde"), 2, 3, S("1234567890"), 10, 0, S("ab")); + test(S("abcde"), 2, 3, S("1234567890"), 10, 1, S("ab")); + test(S("abcde"), 2, 3, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 1, S("ab1")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 10, S("ab1234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 19, S("ab1234567890123456789")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 20, S("ab12345678901234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 21, S("ab12345678901234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 1, S("ab2")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 9, S("ab234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 18, S("ab234567890123456789")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 19, S("ab2345678901234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 20, S("ab2345678901234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 1, S("ab1")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 5, S("ab12345")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 9, S("ab123456789")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 10, S("ab1234567890")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 11, S("ab1234567890")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test14() -{ - test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 1, S("ab0")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 2, S("ab0")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 20, 0, S("ab")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 20, 1, S("ab")); - test(S("abcde"), 2, 3, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 2, 4, S(""), 0, 0, S("ab")); - test(S("abcde"), 2, 4, S(""), 0, 1, S("ab")); - test(S("abcde"), 2, 4, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 2, 4, S("12345"), 0, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345"), 0, 1, S("ab1")); - test(S("abcde"), 2, 4, S("12345"), 0, 2, S("ab12")); - test(S("abcde"), 2, 4, S("12345"), 0, 4, S("ab1234")); - test(S("abcde"), 2, 4, S("12345"), 0, 5, S("ab12345")); - test(S("abcde"), 2, 4, S("12345"), 0, 6, S("ab12345")); - test(S("abcde"), 2, 4, S("12345"), 1, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345"), 1, 1, S("ab2")); - test(S("abcde"), 2, 4, S("12345"), 1, 2, S("ab23")); - test(S("abcde"), 2, 4, S("12345"), 1, 3, S("ab234")); - test(S("abcde"), 2, 4, S("12345"), 1, 4, S("ab2345")); - test(S("abcde"), 2, 4, S("12345"), 1, 5, S("ab2345")); - test(S("abcde"), 2, 4, S("12345"), 2, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345"), 2, 1, S("ab3")); - test(S("abcde"), 2, 4, S("12345"), 2, 2, S("ab34")); - test(S("abcde"), 2, 4, S("12345"), 2, 3, S("ab345")); - test(S("abcde"), 2, 4, S("12345"), 2, 4, S("ab345")); - test(S("abcde"), 2, 4, S("12345"), 4, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345"), 4, 1, S("ab5")); - test(S("abcde"), 2, 4, S("12345"), 4, 2, S("ab5")); - test(S("abcde"), 2, 4, S("12345"), 5, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345"), 5, 1, S("ab")); - test(S("abcde"), 2, 4, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 2, 4, S("1234567890"), 0, 0, S("ab")); - test(S("abcde"), 2, 4, S("1234567890"), 0, 1, S("ab1")); - test(S("abcde"), 2, 4, S("1234567890"), 0, 5, S("ab12345")); - test(S("abcde"), 2, 4, S("1234567890"), 0, 9, S("ab123456789")); - test(S("abcde"), 2, 4, S("1234567890"), 0, 10, S("ab1234567890")); - test(S("abcde"), 2, 4, S("1234567890"), 0, 11, S("ab1234567890")); - test(S("abcde"), 2, 4, S("1234567890"), 1, 0, S("ab")); - test(S("abcde"), 2, 4, S("1234567890"), 1, 1, S("ab2")); - test(S("abcde"), 2, 4, S("1234567890"), 1, 4, S("ab2345")); - test(S("abcde"), 2, 4, S("1234567890"), 1, 8, S("ab23456789")); - test(S("abcde"), 2, 4, S("1234567890"), 1, 9, S("ab234567890")); - test(S("abcde"), 2, 4, S("1234567890"), 1, 10, S("ab234567890")); - test(S("abcde"), 2, 4, S("1234567890"), 5, 0, S("ab")); - test(S("abcde"), 2, 4, S("1234567890"), 5, 1, S("ab6")); - test(S("abcde"), 2, 4, S("1234567890"), 5, 2, S("ab67")); - test(S("abcde"), 2, 4, S("1234567890"), 5, 4, S("ab6789")); - test(S("abcde"), 2, 4, S("1234567890"), 5, 5, S("ab67890")); - test(S("abcde"), 2, 4, S("1234567890"), 5, 6, S("ab67890")); - test(S("abcde"), 2, 4, S("1234567890"), 9, 0, S("ab")); - test(S("abcde"), 2, 4, S("1234567890"), 9, 1, S("ab0")); - test(S("abcde"), 2, 4, S("1234567890"), 9, 2, S("ab0")); - test(S("abcde"), 2, 4, S("1234567890"), 10, 0, S("ab")); - test(S("abcde"), 2, 4, S("1234567890"), 10, 1, S("ab")); - test(S("abcde"), 2, 4, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 1, S("ab1")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 10, S("ab1234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 19, S("ab1234567890123456789")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 20, S("ab12345678901234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 21, S("ab12345678901234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 1, S("ab2")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 9, S("ab234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 18, S("ab234567890123456789")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 19, S("ab2345678901234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 20, S("ab2345678901234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 1, S("ab1")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 5, S("ab12345")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 9, S("ab123456789")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 10, S("ab1234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 11, S("ab1234567890")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 1, S("ab0")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 2, S("ab0")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 20, 0, S("ab")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 20, 1, S("ab")); - test(S("abcde"), 2, 4, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 4, 0, S(""), 0, 0, S("abcde")); - test(S("abcde"), 4, 0, S(""), 0, 1, S("abcde")); - test(S("abcde"), 4, 0, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 4, 0, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, 0, S("12345"), 0, 2, S("abcd12e")); - test(S("abcde"), 4, 0, S("12345"), 0, 4, S("abcd1234e")); - test(S("abcde"), 4, 0, S("12345"), 0, 5, S("abcd12345e")); - test(S("abcde"), 4, 0, S("12345"), 0, 6, S("abcd12345e")); - test(S("abcde"), 4, 0, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, 0, S("12345"), 1, 2, S("abcd23e")); - test(S("abcde"), 4, 0, S("12345"), 1, 3, S("abcd234e")); - test(S("abcde"), 4, 0, S("12345"), 1, 4, S("abcd2345e")); - test(S("abcde"), 4, 0, S("12345"), 1, 5, S("abcd2345e")); - test(S("abcde"), 4, 0, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345"), 2, 1, S("abcd3e")); - test(S("abcde"), 4, 0, S("12345"), 2, 2, S("abcd34e")); - test(S("abcde"), 4, 0, S("12345"), 2, 3, S("abcd345e")); - test(S("abcde"), 4, 0, S("12345"), 2, 4, S("abcd345e")); +TEST_CONSTEXPR_CXX20 bool test14() { + test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 1, S("ab0")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 2, S("ab0")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 20, 0, S("ab")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 20, 1, S("ab")); + test(S("abcde"), 2, 3, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 2, 4, S(""), 0, 0, S("ab")); + test(S("abcde"), 2, 4, S(""), 0, 1, S("ab")); + test(S("abcde"), 2, 4, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 2, 4, S("12345"), 0, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345"), 0, 1, S("ab1")); + test(S("abcde"), 2, 4, S("12345"), 0, 2, S("ab12")); + test(S("abcde"), 2, 4, S("12345"), 0, 4, S("ab1234")); + test(S("abcde"), 2, 4, S("12345"), 0, 5, S("ab12345")); + test(S("abcde"), 2, 4, S("12345"), 0, 6, S("ab12345")); + test(S("abcde"), 2, 4, S("12345"), 1, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345"), 1, 1, S("ab2")); + test(S("abcde"), 2, 4, S("12345"), 1, 2, S("ab23")); + test(S("abcde"), 2, 4, S("12345"), 1, 3, S("ab234")); + test(S("abcde"), 2, 4, S("12345"), 1, 4, S("ab2345")); + test(S("abcde"), 2, 4, S("12345"), 1, 5, S("ab2345")); + test(S("abcde"), 2, 4, S("12345"), 2, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345"), 2, 1, S("ab3")); + test(S("abcde"), 2, 4, S("12345"), 2, 2, S("ab34")); + test(S("abcde"), 2, 4, S("12345"), 2, 3, S("ab345")); + test(S("abcde"), 2, 4, S("12345"), 2, 4, S("ab345")); + test(S("abcde"), 2, 4, S("12345"), 4, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345"), 4, 1, S("ab5")); + test(S("abcde"), 2, 4, S("12345"), 4, 2, S("ab5")); + test(S("abcde"), 2, 4, S("12345"), 5, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345"), 5, 1, S("ab")); + test(S("abcde"), 2, 4, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 2, 4, S("1234567890"), 0, 0, S("ab")); + test(S("abcde"), 2, 4, S("1234567890"), 0, 1, S("ab1")); + test(S("abcde"), 2, 4, S("1234567890"), 0, 5, S("ab12345")); + test(S("abcde"), 2, 4, S("1234567890"), 0, 9, S("ab123456789")); + test(S("abcde"), 2, 4, S("1234567890"), 0, 10, S("ab1234567890")); + test(S("abcde"), 2, 4, S("1234567890"), 0, 11, S("ab1234567890")); + test(S("abcde"), 2, 4, S("1234567890"), 1, 0, S("ab")); + test(S("abcde"), 2, 4, S("1234567890"), 1, 1, S("ab2")); + test(S("abcde"), 2, 4, S("1234567890"), 1, 4, S("ab2345")); + test(S("abcde"), 2, 4, S("1234567890"), 1, 8, S("ab23456789")); + test(S("abcde"), 2, 4, S("1234567890"), 1, 9, S("ab234567890")); + test(S("abcde"), 2, 4, S("1234567890"), 1, 10, S("ab234567890")); + test(S("abcde"), 2, 4, S("1234567890"), 5, 0, S("ab")); + test(S("abcde"), 2, 4, S("1234567890"), 5, 1, S("ab6")); + test(S("abcde"), 2, 4, S("1234567890"), 5, 2, S("ab67")); + test(S("abcde"), 2, 4, S("1234567890"), 5, 4, S("ab6789")); + test(S("abcde"), 2, 4, S("1234567890"), 5, 5, S("ab67890")); + test(S("abcde"), 2, 4, S("1234567890"), 5, 6, S("ab67890")); + test(S("abcde"), 2, 4, S("1234567890"), 9, 0, S("ab")); + test(S("abcde"), 2, 4, S("1234567890"), 9, 1, S("ab0")); + test(S("abcde"), 2, 4, S("1234567890"), 9, 2, S("ab0")); + test(S("abcde"), 2, 4, S("1234567890"), 10, 0, S("ab")); + test(S("abcde"), 2, 4, S("1234567890"), 10, 1, S("ab")); + test(S("abcde"), 2, 4, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 1, S("ab1")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 10, S("ab1234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 19, S("ab1234567890123456789")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 20, S("ab12345678901234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 21, S("ab12345678901234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 1, S("ab2")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 9, S("ab234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 18, S("ab234567890123456789")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 19, S("ab2345678901234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 20, S("ab2345678901234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 1, S("ab1")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 5, S("ab12345")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 9, S("ab123456789")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 10, S("ab1234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 11, S("ab1234567890")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 1, S("ab0")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 2, S("ab0")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 20, 0, S("ab")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 20, 1, S("ab")); + test(S("abcde"), 2, 4, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 4, 0, S(""), 0, 0, S("abcde")); + test(S("abcde"), 4, 0, S(""), 0, 1, S("abcde")); + test(S("abcde"), 4, 0, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 4, 0, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, 0, S("12345"), 0, 2, S("abcd12e")); + test(S("abcde"), 4, 0, S("12345"), 0, 4, S("abcd1234e")); + test(S("abcde"), 4, 0, S("12345"), 0, 5, S("abcd12345e")); + test(S("abcde"), 4, 0, S("12345"), 0, 6, S("abcd12345e")); + test(S("abcde"), 4, 0, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, 0, S("12345"), 1, 2, S("abcd23e")); + test(S("abcde"), 4, 0, S("12345"), 1, 3, S("abcd234e")); + test(S("abcde"), 4, 0, S("12345"), 1, 4, S("abcd2345e")); + test(S("abcde"), 4, 0, S("12345"), 1, 5, S("abcd2345e")); + test(S("abcde"), 4, 0, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345"), 2, 1, S("abcd3e")); + test(S("abcde"), 4, 0, S("12345"), 2, 2, S("abcd34e")); + test(S("abcde"), 4, 0, S("12345"), 2, 3, S("abcd345e")); + test(S("abcde"), 4, 0, S("12345"), 2, 4, S("abcd345e")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test15() -{ - test(S("abcde"), 4, 0, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345"), 4, 1, S("abcd5e")); - test(S("abcde"), 4, 0, S("12345"), 4, 2, S("abcd5e")); - test(S("abcde"), 4, 0, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 4, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 4, 0, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 4, 0, S("1234567890"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, 0, S("1234567890"), 0, 5, S("abcd12345e")); - test(S("abcde"), 4, 0, S("1234567890"), 0, 9, S("abcd123456789e")); - test(S("abcde"), 4, 0, S("1234567890"), 0, 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, S("1234567890"), 0, 11, S("abcd1234567890e")); - test(S("abcde"), 4, 0, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 4, 0, S("1234567890"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, 0, S("1234567890"), 1, 4, S("abcd2345e")); - test(S("abcde"), 4, 0, S("1234567890"), 1, 8, S("abcd23456789e")); - test(S("abcde"), 4, 0, S("1234567890"), 1, 9, S("abcd234567890e")); - test(S("abcde"), 4, 0, S("1234567890"), 1, 10, S("abcd234567890e")); - test(S("abcde"), 4, 0, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 4, 0, S("1234567890"), 5, 1, S("abcd6e")); - test(S("abcde"), 4, 0, S("1234567890"), 5, 2, S("abcd67e")); - test(S("abcde"), 4, 0, S("1234567890"), 5, 4, S("abcd6789e")); - test(S("abcde"), 4, 0, S("1234567890"), 5, 5, S("abcd67890e")); - test(S("abcde"), 4, 0, S("1234567890"), 5, 6, S("abcd67890e")); - test(S("abcde"), 4, 0, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 4, 0, S("1234567890"), 9, 1, S("abcd0e")); - test(S("abcde"), 4, 0, S("1234567890"), 9, 2, S("abcd0e")); - test(S("abcde"), 4, 0, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 4, 0, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 4, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 1, S("abcd1e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 1, S("abcd2e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 9, S("abcd234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 1, S("abcd1e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 5, S("abcd12345e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 9, S("abcd123456789e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 10, S("abcd1234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 11, S("abcd1234567890e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 1, S("abcd0e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 2, S("abcd0e")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 4, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 4, 1, S(""), 0, 0, S("abcd")); - test(S("abcde"), 4, 1, S(""), 0, 1, S("abcd")); - test(S("abcde"), 4, 1, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 4, 1, S("12345"), 0, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 1, S("12345"), 0, 2, S("abcd12")); - test(S("abcde"), 4, 1, S("12345"), 0, 4, S("abcd1234")); - test(S("abcde"), 4, 1, S("12345"), 0, 5, S("abcd12345")); - test(S("abcde"), 4, 1, S("12345"), 0, 6, S("abcd12345")); - test(S("abcde"), 4, 1, S("12345"), 1, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 1, S("12345"), 1, 2, S("abcd23")); - test(S("abcde"), 4, 1, S("12345"), 1, 3, S("abcd234")); - test(S("abcde"), 4, 1, S("12345"), 1, 4, S("abcd2345")); - test(S("abcde"), 4, 1, S("12345"), 1, 5, S("abcd2345")); - test(S("abcde"), 4, 1, S("12345"), 2, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345"), 2, 1, S("abcd3")); - test(S("abcde"), 4, 1, S("12345"), 2, 2, S("abcd34")); - test(S("abcde"), 4, 1, S("12345"), 2, 3, S("abcd345")); - test(S("abcde"), 4, 1, S("12345"), 2, 4, S("abcd345")); - test(S("abcde"), 4, 1, S("12345"), 4, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345"), 4, 1, S("abcd5")); - test(S("abcde"), 4, 1, S("12345"), 4, 2, S("abcd5")); - test(S("abcde"), 4, 1, S("12345"), 5, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345"), 5, 1, S("abcd")); - test(S("abcde"), 4, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 4, 1, S("1234567890"), 0, 0, S("abcd")); - test(S("abcde"), 4, 1, S("1234567890"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 1, S("1234567890"), 0, 5, S("abcd12345")); - test(S("abcde"), 4, 1, S("1234567890"), 0, 9, S("abcd123456789")); - test(S("abcde"), 4, 1, S("1234567890"), 0, 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, S("1234567890"), 0, 11, S("abcd1234567890")); - test(S("abcde"), 4, 1, S("1234567890"), 1, 0, S("abcd")); - test(S("abcde"), 4, 1, S("1234567890"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 1, S("1234567890"), 1, 4, S("abcd2345")); - test(S("abcde"), 4, 1, S("1234567890"), 1, 8, S("abcd23456789")); - test(S("abcde"), 4, 1, S("1234567890"), 1, 9, S("abcd234567890")); - test(S("abcde"), 4, 1, S("1234567890"), 1, 10, S("abcd234567890")); - test(S("abcde"), 4, 1, S("1234567890"), 5, 0, S("abcd")); - test(S("abcde"), 4, 1, S("1234567890"), 5, 1, S("abcd6")); - test(S("abcde"), 4, 1, S("1234567890"), 5, 2, S("abcd67")); - test(S("abcde"), 4, 1, S("1234567890"), 5, 4, S("abcd6789")); - test(S("abcde"), 4, 1, S("1234567890"), 5, 5, S("abcd67890")); - test(S("abcde"), 4, 1, S("1234567890"), 5, 6, S("abcd67890")); - test(S("abcde"), 4, 1, S("1234567890"), 9, 0, S("abcd")); - test(S("abcde"), 4, 1, S("1234567890"), 9, 1, S("abcd0")); +TEST_CONSTEXPR_CXX20 bool test15() { + test(S("abcde"), 4, 0, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345"), 4, 1, S("abcd5e")); + test(S("abcde"), 4, 0, S("12345"), 4, 2, S("abcd5e")); + test(S("abcde"), 4, 0, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 4, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 4, 0, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 4, 0, S("1234567890"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, 0, S("1234567890"), 0, 5, S("abcd12345e")); + test(S("abcde"), 4, 0, S("1234567890"), 0, 9, S("abcd123456789e")); + test(S("abcde"), 4, 0, S("1234567890"), 0, 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, S("1234567890"), 0, 11, S("abcd1234567890e")); + test(S("abcde"), 4, 0, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 4, 0, S("1234567890"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, 0, S("1234567890"), 1, 4, S("abcd2345e")); + test(S("abcde"), 4, 0, S("1234567890"), 1, 8, S("abcd23456789e")); + test(S("abcde"), 4, 0, S("1234567890"), 1, 9, S("abcd234567890e")); + test(S("abcde"), 4, 0, S("1234567890"), 1, 10, S("abcd234567890e")); + test(S("abcde"), 4, 0, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 4, 0, S("1234567890"), 5, 1, S("abcd6e")); + test(S("abcde"), 4, 0, S("1234567890"), 5, 2, S("abcd67e")); + test(S("abcde"), 4, 0, S("1234567890"), 5, 4, S("abcd6789e")); + test(S("abcde"), 4, 0, S("1234567890"), 5, 5, S("abcd67890e")); + test(S("abcde"), 4, 0, S("1234567890"), 5, 6, S("abcd67890e")); + test(S("abcde"), 4, 0, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 4, 0, S("1234567890"), 9, 1, S("abcd0e")); + test(S("abcde"), 4, 0, S("1234567890"), 9, 2, S("abcd0e")); + test(S("abcde"), 4, 0, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 4, 0, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 4, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 1, S("abcd1e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 1, S("abcd2e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 9, S("abcd234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 1, S("abcd1e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 5, S("abcd12345e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 9, S("abcd123456789e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 10, S("abcd1234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 11, S("abcd1234567890e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 1, S("abcd0e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 2, S("abcd0e")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 4, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 4, 1, S(""), 0, 0, S("abcd")); + test(S("abcde"), 4, 1, S(""), 0, 1, S("abcd")); + test(S("abcde"), 4, 1, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 4, 1, S("12345"), 0, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 1, S("12345"), 0, 2, S("abcd12")); + test(S("abcde"), 4, 1, S("12345"), 0, 4, S("abcd1234")); + test(S("abcde"), 4, 1, S("12345"), 0, 5, S("abcd12345")); + test(S("abcde"), 4, 1, S("12345"), 0, 6, S("abcd12345")); + test(S("abcde"), 4, 1, S("12345"), 1, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 1, S("12345"), 1, 2, S("abcd23")); + test(S("abcde"), 4, 1, S("12345"), 1, 3, S("abcd234")); + test(S("abcde"), 4, 1, S("12345"), 1, 4, S("abcd2345")); + test(S("abcde"), 4, 1, S("12345"), 1, 5, S("abcd2345")); + test(S("abcde"), 4, 1, S("12345"), 2, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345"), 2, 1, S("abcd3")); + test(S("abcde"), 4, 1, S("12345"), 2, 2, S("abcd34")); + test(S("abcde"), 4, 1, S("12345"), 2, 3, S("abcd345")); + test(S("abcde"), 4, 1, S("12345"), 2, 4, S("abcd345")); + test(S("abcde"), 4, 1, S("12345"), 4, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345"), 4, 1, S("abcd5")); + test(S("abcde"), 4, 1, S("12345"), 4, 2, S("abcd5")); + test(S("abcde"), 4, 1, S("12345"), 5, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345"), 5, 1, S("abcd")); + test(S("abcde"), 4, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 4, 1, S("1234567890"), 0, 0, S("abcd")); + test(S("abcde"), 4, 1, S("1234567890"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 1, S("1234567890"), 0, 5, S("abcd12345")); + test(S("abcde"), 4, 1, S("1234567890"), 0, 9, S("abcd123456789")); + test(S("abcde"), 4, 1, S("1234567890"), 0, 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, S("1234567890"), 0, 11, S("abcd1234567890")); + test(S("abcde"), 4, 1, S("1234567890"), 1, 0, S("abcd")); + test(S("abcde"), 4, 1, S("1234567890"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 1, S("1234567890"), 1, 4, S("abcd2345")); + test(S("abcde"), 4, 1, S("1234567890"), 1, 8, S("abcd23456789")); + test(S("abcde"), 4, 1, S("1234567890"), 1, 9, S("abcd234567890")); + test(S("abcde"), 4, 1, S("1234567890"), 1, 10, S("abcd234567890")); + test(S("abcde"), 4, 1, S("1234567890"), 5, 0, S("abcd")); + test(S("abcde"), 4, 1, S("1234567890"), 5, 1, S("abcd6")); + test(S("abcde"), 4, 1, S("1234567890"), 5, 2, S("abcd67")); + test(S("abcde"), 4, 1, S("1234567890"), 5, 4, S("abcd6789")); + test(S("abcde"), 4, 1, S("1234567890"), 5, 5, S("abcd67890")); + test(S("abcde"), 4, 1, S("1234567890"), 5, 6, S("abcd67890")); + test(S("abcde"), 4, 1, S("1234567890"), 9, 0, S("abcd")); + test(S("abcde"), 4, 1, S("1234567890"), 9, 1, S("abcd0")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test16() -{ - test(S("abcde"), 4, 1, S("1234567890"), 9, 2, S("abcd0")); - test(S("abcde"), 4, 1, S("1234567890"), 10, 0, S("abcd")); - test(S("abcde"), 4, 1, S("1234567890"), 10, 1, S("abcd")); - test(S("abcde"), 4, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 9, S("abcd234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 18, S("abcd234567890123456789")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 1, S("abcd1")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 5, S("abcd12345")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 9, S("abcd123456789")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 10, S("abcd1234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 11, S("abcd1234567890")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 1, S("abcd0")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 2, S("abcd0")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 20, 0, S("abcd")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 20, 1, S("abcd")); - test(S("abcde"), 4, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 4, 2, S(""), 0, 0, S("abcd")); - test(S("abcde"), 4, 2, S(""), 0, 1, S("abcd")); - test(S("abcde"), 4, 2, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 4, 2, S("12345"), 0, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 2, S("12345"), 0, 2, S("abcd12")); - test(S("abcde"), 4, 2, S("12345"), 0, 4, S("abcd1234")); - test(S("abcde"), 4, 2, S("12345"), 0, 5, S("abcd12345")); - test(S("abcde"), 4, 2, S("12345"), 0, 6, S("abcd12345")); - test(S("abcde"), 4, 2, S("12345"), 1, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 2, S("12345"), 1, 2, S("abcd23")); - test(S("abcde"), 4, 2, S("12345"), 1, 3, S("abcd234")); - test(S("abcde"), 4, 2, S("12345"), 1, 4, S("abcd2345")); - test(S("abcde"), 4, 2, S("12345"), 1, 5, S("abcd2345")); - test(S("abcde"), 4, 2, S("12345"), 2, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345"), 2, 1, S("abcd3")); - test(S("abcde"), 4, 2, S("12345"), 2, 2, S("abcd34")); - test(S("abcde"), 4, 2, S("12345"), 2, 3, S("abcd345")); - test(S("abcde"), 4, 2, S("12345"), 2, 4, S("abcd345")); - test(S("abcde"), 4, 2, S("12345"), 4, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345"), 4, 1, S("abcd5")); - test(S("abcde"), 4, 2, S("12345"), 4, 2, S("abcd5")); - test(S("abcde"), 4, 2, S("12345"), 5, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345"), 5, 1, S("abcd")); - test(S("abcde"), 4, 2, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 4, 2, S("1234567890"), 0, 0, S("abcd")); - test(S("abcde"), 4, 2, S("1234567890"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 2, S("1234567890"), 0, 5, S("abcd12345")); - test(S("abcde"), 4, 2, S("1234567890"), 0, 9, S("abcd123456789")); - test(S("abcde"), 4, 2, S("1234567890"), 0, 10, S("abcd1234567890")); - test(S("abcde"), 4, 2, S("1234567890"), 0, 11, S("abcd1234567890")); - test(S("abcde"), 4, 2, S("1234567890"), 1, 0, S("abcd")); - test(S("abcde"), 4, 2, S("1234567890"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 2, S("1234567890"), 1, 4, S("abcd2345")); - test(S("abcde"), 4, 2, S("1234567890"), 1, 8, S("abcd23456789")); - test(S("abcde"), 4, 2, S("1234567890"), 1, 9, S("abcd234567890")); - test(S("abcde"), 4, 2, S("1234567890"), 1, 10, S("abcd234567890")); - test(S("abcde"), 4, 2, S("1234567890"), 5, 0, S("abcd")); - test(S("abcde"), 4, 2, S("1234567890"), 5, 1, S("abcd6")); - test(S("abcde"), 4, 2, S("1234567890"), 5, 2, S("abcd67")); - test(S("abcde"), 4, 2, S("1234567890"), 5, 4, S("abcd6789")); - test(S("abcde"), 4, 2, S("1234567890"), 5, 5, S("abcd67890")); - test(S("abcde"), 4, 2, S("1234567890"), 5, 6, S("abcd67890")); - test(S("abcde"), 4, 2, S("1234567890"), 9, 0, S("abcd")); - test(S("abcde"), 4, 2, S("1234567890"), 9, 1, S("abcd0")); - test(S("abcde"), 4, 2, S("1234567890"), 9, 2, S("abcd0")); - test(S("abcde"), 4, 2, S("1234567890"), 10, 0, S("abcd")); - test(S("abcde"), 4, 2, S("1234567890"), 10, 1, S("abcd")); - test(S("abcde"), 4, 2, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 1, S("abcd1")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 10, S("abcd1234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 1, S("abcd2")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 9, S("abcd234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 18, S("abcd234567890123456789")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 1, S("abcd1")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 5, S("abcd12345")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 9, S("abcd123456789")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 10, S("abcd1234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 11, S("abcd1234567890")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 0, S("abcd")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 1, S("abcd0")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 2, S("abcd0")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 20, 0, S("abcd")); +TEST_CONSTEXPR_CXX20 bool test16() { + test(S("abcde"), 4, 1, S("1234567890"), 9, 2, S("abcd0")); + test(S("abcde"), 4, 1, S("1234567890"), 10, 0, S("abcd")); + test(S("abcde"), 4, 1, S("1234567890"), 10, 1, S("abcd")); + test(S("abcde"), 4, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 9, S("abcd234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 18, S("abcd234567890123456789")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 1, S("abcd1")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 5, S("abcd12345")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 9, S("abcd123456789")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 10, S("abcd1234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 11, S("abcd1234567890")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 1, S("abcd0")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 2, S("abcd0")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 20, 0, S("abcd")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 20, 1, S("abcd")); + test(S("abcde"), 4, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 4, 2, S(""), 0, 0, S("abcd")); + test(S("abcde"), 4, 2, S(""), 0, 1, S("abcd")); + test(S("abcde"), 4, 2, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 4, 2, S("12345"), 0, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 2, S("12345"), 0, 2, S("abcd12")); + test(S("abcde"), 4, 2, S("12345"), 0, 4, S("abcd1234")); + test(S("abcde"), 4, 2, S("12345"), 0, 5, S("abcd12345")); + test(S("abcde"), 4, 2, S("12345"), 0, 6, S("abcd12345")); + test(S("abcde"), 4, 2, S("12345"), 1, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 2, S("12345"), 1, 2, S("abcd23")); + test(S("abcde"), 4, 2, S("12345"), 1, 3, S("abcd234")); + test(S("abcde"), 4, 2, S("12345"), 1, 4, S("abcd2345")); + test(S("abcde"), 4, 2, S("12345"), 1, 5, S("abcd2345")); + test(S("abcde"), 4, 2, S("12345"), 2, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345"), 2, 1, S("abcd3")); + test(S("abcde"), 4, 2, S("12345"), 2, 2, S("abcd34")); + test(S("abcde"), 4, 2, S("12345"), 2, 3, S("abcd345")); + test(S("abcde"), 4, 2, S("12345"), 2, 4, S("abcd345")); + test(S("abcde"), 4, 2, S("12345"), 4, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345"), 4, 1, S("abcd5")); + test(S("abcde"), 4, 2, S("12345"), 4, 2, S("abcd5")); + test(S("abcde"), 4, 2, S("12345"), 5, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345"), 5, 1, S("abcd")); + test(S("abcde"), 4, 2, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 4, 2, S("1234567890"), 0, 0, S("abcd")); + test(S("abcde"), 4, 2, S("1234567890"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 2, S("1234567890"), 0, 5, S("abcd12345")); + test(S("abcde"), 4, 2, S("1234567890"), 0, 9, S("abcd123456789")); + test(S("abcde"), 4, 2, S("1234567890"), 0, 10, S("abcd1234567890")); + test(S("abcde"), 4, 2, S("1234567890"), 0, 11, S("abcd1234567890")); + test(S("abcde"), 4, 2, S("1234567890"), 1, 0, S("abcd")); + test(S("abcde"), 4, 2, S("1234567890"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 2, S("1234567890"), 1, 4, S("abcd2345")); + test(S("abcde"), 4, 2, S("1234567890"), 1, 8, S("abcd23456789")); + test(S("abcde"), 4, 2, S("1234567890"), 1, 9, S("abcd234567890")); + test(S("abcde"), 4, 2, S("1234567890"), 1, 10, S("abcd234567890")); + test(S("abcde"), 4, 2, S("1234567890"), 5, 0, S("abcd")); + test(S("abcde"), 4, 2, S("1234567890"), 5, 1, S("abcd6")); + test(S("abcde"), 4, 2, S("1234567890"), 5, 2, S("abcd67")); + test(S("abcde"), 4, 2, S("1234567890"), 5, 4, S("abcd6789")); + test(S("abcde"), 4, 2, S("1234567890"), 5, 5, S("abcd67890")); + test(S("abcde"), 4, 2, S("1234567890"), 5, 6, S("abcd67890")); + test(S("abcde"), 4, 2, S("1234567890"), 9, 0, S("abcd")); + test(S("abcde"), 4, 2, S("1234567890"), 9, 1, S("abcd0")); + test(S("abcde"), 4, 2, S("1234567890"), 9, 2, S("abcd0")); + test(S("abcde"), 4, 2, S("1234567890"), 10, 0, S("abcd")); + test(S("abcde"), 4, 2, S("1234567890"), 10, 1, S("abcd")); + test(S("abcde"), 4, 2, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 1, S("abcd1")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 10, S("abcd1234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 1, S("abcd2")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 9, S("abcd234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 18, S("abcd234567890123456789")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 1, S("abcd1")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 5, S("abcd12345")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 9, S("abcd123456789")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 10, S("abcd1234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 11, S("abcd1234567890")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 0, S("abcd")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 1, S("abcd0")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 2, S("abcd0")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 20, 0, S("abcd")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test17() -{ - test(S("abcde"), 4, 2, S("12345678901234567890"), 20, 1, S("abcd")); - test(S("abcde"), 4, 2, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 5, 0, S(""), 0, 0, S("abcde")); - test(S("abcde"), 5, 0, S(""), 0, 1, S("abcde")); - test(S("abcde"), 5, 0, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 5, 0, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 0, S("12345"), 0, 2, S("abcde12")); - test(S("abcde"), 5, 0, S("12345"), 0, 4, S("abcde1234")); - test(S("abcde"), 5, 0, S("12345"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, 0, S("12345"), 0, 6, S("abcde12345")); - test(S("abcde"), 5, 0, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 0, S("12345"), 1, 2, S("abcde23")); - test(S("abcde"), 5, 0, S("12345"), 1, 3, S("abcde234")); - test(S("abcde"), 5, 0, S("12345"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, 0, S("12345"), 1, 5, S("abcde2345")); - test(S("abcde"), 5, 0, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345"), 2, 1, S("abcde3")); - test(S("abcde"), 5, 0, S("12345"), 2, 2, S("abcde34")); - test(S("abcde"), 5, 0, S("12345"), 2, 3, S("abcde345")); - test(S("abcde"), 5, 0, S("12345"), 2, 4, S("abcde345")); - test(S("abcde"), 5, 0, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345"), 4, 1, S("abcde5")); - test(S("abcde"), 5, 0, S("12345"), 4, 2, S("abcde5")); - test(S("abcde"), 5, 0, S("12345"), 5, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 5, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 5, 0, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, 0, S("1234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 0, S("1234567890"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, 0, S("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcde"), 5, 0, S("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, S("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcde"), 5, 0, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, 0, S("1234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 0, S("1234567890"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, 0, S("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcde"), 5, 0, S("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, 0, S("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcde"), 5, 0, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 5, 0, S("1234567890"), 5, 1, S("abcde6")); - test(S("abcde"), 5, 0, S("1234567890"), 5, 2, S("abcde67")); - test(S("abcde"), 5, 0, S("1234567890"), 5, 4, S("abcde6789")); - test(S("abcde"), 5, 0, S("1234567890"), 5, 5, S("abcde67890")); - test(S("abcde"), 5, 0, S("1234567890"), 5, 6, S("abcde67890")); - test(S("abcde"), 5, 0, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 5, 0, S("1234567890"), 9, 1, S("abcde0")); - test(S("abcde"), 5, 0, S("1234567890"), 9, 2, S("abcde0")); - test(S("abcde"), 5, 0, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, 0, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 5, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 5, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 5, 1, S(""), 0, 0, S("abcde")); - test(S("abcde"), 5, 1, S(""), 0, 1, S("abcde")); - test(S("abcde"), 5, 1, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 5, 1, S("12345"), 0, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 1, S("12345"), 0, 2, S("abcde12")); - test(S("abcde"), 5, 1, S("12345"), 0, 4, S("abcde1234")); - test(S("abcde"), 5, 1, S("12345"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, 1, S("12345"), 0, 6, S("abcde12345")); - test(S("abcde"), 5, 1, S("12345"), 1, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 1, S("12345"), 1, 2, S("abcde23")); - test(S("abcde"), 5, 1, S("12345"), 1, 3, S("abcde234")); - test(S("abcde"), 5, 1, S("12345"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, 1, S("12345"), 1, 5, S("abcde2345")); - test(S("abcde"), 5, 1, S("12345"), 2, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345"), 2, 1, S("abcde3")); - test(S("abcde"), 5, 1, S("12345"), 2, 2, S("abcde34")); - test(S("abcde"), 5, 1, S("12345"), 2, 3, S("abcde345")); - test(S("abcde"), 5, 1, S("12345"), 2, 4, S("abcde345")); - test(S("abcde"), 5, 1, S("12345"), 4, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345"), 4, 1, S("abcde5")); - test(S("abcde"), 5, 1, S("12345"), 4, 2, S("abcde5")); - test(S("abcde"), 5, 1, S("12345"), 5, 0, S("abcde")); +TEST_CONSTEXPR_CXX20 bool test17() { + test(S("abcde"), 4, 2, S("12345678901234567890"), 20, 1, S("abcd")); + test(S("abcde"), 4, 2, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 5, 0, S(""), 0, 0, S("abcde")); + test(S("abcde"), 5, 0, S(""), 0, 1, S("abcde")); + test(S("abcde"), 5, 0, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 5, 0, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 0, S("12345"), 0, 2, S("abcde12")); + test(S("abcde"), 5, 0, S("12345"), 0, 4, S("abcde1234")); + test(S("abcde"), 5, 0, S("12345"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, 0, S("12345"), 0, 6, S("abcde12345")); + test(S("abcde"), 5, 0, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 0, S("12345"), 1, 2, S("abcde23")); + test(S("abcde"), 5, 0, S("12345"), 1, 3, S("abcde234")); + test(S("abcde"), 5, 0, S("12345"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, 0, S("12345"), 1, 5, S("abcde2345")); + test(S("abcde"), 5, 0, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345"), 2, 1, S("abcde3")); + test(S("abcde"), 5, 0, S("12345"), 2, 2, S("abcde34")); + test(S("abcde"), 5, 0, S("12345"), 2, 3, S("abcde345")); + test(S("abcde"), 5, 0, S("12345"), 2, 4, S("abcde345")); + test(S("abcde"), 5, 0, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345"), 4, 1, S("abcde5")); + test(S("abcde"), 5, 0, S("12345"), 4, 2, S("abcde5")); + test(S("abcde"), 5, 0, S("12345"), 5, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 5, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 5, 0, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, 0, S("1234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 0, S("1234567890"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, 0, S("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcde"), 5, 0, S("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, S("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcde"), 5, 0, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, 0, S("1234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 0, S("1234567890"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, 0, S("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcde"), 5, 0, S("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, 0, S("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcde"), 5, 0, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 5, 0, S("1234567890"), 5, 1, S("abcde6")); + test(S("abcde"), 5, 0, S("1234567890"), 5, 2, S("abcde67")); + test(S("abcde"), 5, 0, S("1234567890"), 5, 4, S("abcde6789")); + test(S("abcde"), 5, 0, S("1234567890"), 5, 5, S("abcde67890")); + test(S("abcde"), 5, 0, S("1234567890"), 5, 6, S("abcde67890")); + test(S("abcde"), 5, 0, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 5, 0, S("1234567890"), 9, 1, S("abcde0")); + test(S("abcde"), 5, 0, S("1234567890"), 9, 2, S("abcde0")); + test(S("abcde"), 5, 0, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, 0, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 5, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 5, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 5, 1, S(""), 0, 0, S("abcde")); + test(S("abcde"), 5, 1, S(""), 0, 1, S("abcde")); + test(S("abcde"), 5, 1, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 5, 1, S("12345"), 0, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 1, S("12345"), 0, 2, S("abcde12")); + test(S("abcde"), 5, 1, S("12345"), 0, 4, S("abcde1234")); + test(S("abcde"), 5, 1, S("12345"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, 1, S("12345"), 0, 6, S("abcde12345")); + test(S("abcde"), 5, 1, S("12345"), 1, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 1, S("12345"), 1, 2, S("abcde23")); + test(S("abcde"), 5, 1, S("12345"), 1, 3, S("abcde234")); + test(S("abcde"), 5, 1, S("12345"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, 1, S("12345"), 1, 5, S("abcde2345")); + test(S("abcde"), 5, 1, S("12345"), 2, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345"), 2, 1, S("abcde3")); + test(S("abcde"), 5, 1, S("12345"), 2, 2, S("abcde34")); + test(S("abcde"), 5, 1, S("12345"), 2, 3, S("abcde345")); + test(S("abcde"), 5, 1, S("12345"), 2, 4, S("abcde345")); + test(S("abcde"), 5, 1, S("12345"), 4, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345"), 4, 1, S("abcde5")); + test(S("abcde"), 5, 1, S("12345"), 4, 2, S("abcde5")); + test(S("abcde"), 5, 1, S("12345"), 5, 0, S("abcde")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test18() -{ - test(S("abcde"), 5, 1, S("12345"), 5, 1, S("abcde")); - test(S("abcde"), 5, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 5, 1, S("1234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, 1, S("1234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 1, S("1234567890"), 0, 5, S("abcde12345")); - test(S("abcde"), 5, 1, S("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcde"), 5, 1, S("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, 1, S("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcde"), 5, 1, S("1234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, 1, S("1234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 1, S("1234567890"), 1, 4, S("abcde2345")); - test(S("abcde"), 5, 1, S("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcde"), 5, 1, S("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, 1, S("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcde"), 5, 1, S("1234567890"), 5, 0, S("abcde")); - test(S("abcde"), 5, 1, S("1234567890"), 5, 1, S("abcde6")); - test(S("abcde"), 5, 1, S("1234567890"), 5, 2, S("abcde67")); - test(S("abcde"), 5, 1, S("1234567890"), 5, 4, S("abcde6789")); - test(S("abcde"), 5, 1, S("1234567890"), 5, 5, S("abcde67890")); - test(S("abcde"), 5, 1, S("1234567890"), 5, 6, S("abcde67890")); - test(S("abcde"), 5, 1, S("1234567890"), 9, 0, S("abcde")); - test(S("abcde"), 5, 1, S("1234567890"), 9, 1, S("abcde0")); - test(S("abcde"), 5, 1, S("1234567890"), 9, 2, S("abcde0")); - test(S("abcde"), 5, 1, S("1234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, 1, S("1234567890"), 10, 1, S("abcde")); - test(S("abcde"), 5, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcde"), 5, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcde"), 6, 0, S(""), 0, 0, S("can't happen")); - test(S("abcde"), 6, 0, S(""), 0, 1, S("can't happen")); - test(S("abcde"), 6, 0, S(""), 1, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 0, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 0, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 0, 2, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 0, 4, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 0, 5, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 0, 6, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 1, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 1, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 1, 2, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 1, 3, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 1, 4, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 1, 5, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 2, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 2, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 2, 2, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 2, 3, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 2, 4, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 4, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 4, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 4, 2, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 5, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 5, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 0, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 0, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 0, 5, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 0, 9, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 0, 10, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 0, 11, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 1, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 1, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 1, 4, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 1, 8, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 1, 9, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 1, 10, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 5, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 5, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 5, 2, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 5, 4, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 5, 5, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 5, 6, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 9, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 9, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 9, 2, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 10, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 10, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("1234567890"), 11, 0, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test18() { + test(S("abcde"), 5, 1, S("12345"), 5, 1, S("abcde")); + test(S("abcde"), 5, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 5, 1, S("1234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, 1, S("1234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 1, S("1234567890"), 0, 5, S("abcde12345")); + test(S("abcde"), 5, 1, S("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcde"), 5, 1, S("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, 1, S("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcde"), 5, 1, S("1234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, 1, S("1234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 1, S("1234567890"), 1, 4, S("abcde2345")); + test(S("abcde"), 5, 1, S("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcde"), 5, 1, S("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, 1, S("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcde"), 5, 1, S("1234567890"), 5, 0, S("abcde")); + test(S("abcde"), 5, 1, S("1234567890"), 5, 1, S("abcde6")); + test(S("abcde"), 5, 1, S("1234567890"), 5, 2, S("abcde67")); + test(S("abcde"), 5, 1, S("1234567890"), 5, 4, S("abcde6789")); + test(S("abcde"), 5, 1, S("1234567890"), 5, 5, S("abcde67890")); + test(S("abcde"), 5, 1, S("1234567890"), 5, 6, S("abcde67890")); + test(S("abcde"), 5, 1, S("1234567890"), 9, 0, S("abcde")); + test(S("abcde"), 5, 1, S("1234567890"), 9, 1, S("abcde0")); + test(S("abcde"), 5, 1, S("1234567890"), 9, 2, S("abcde0")); + test(S("abcde"), 5, 1, S("1234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, 1, S("1234567890"), 10, 1, S("abcde")); + test(S("abcde"), 5, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcde"), 5, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcde"), 6, 0, S(""), 0, 0, S("can't happen")); + test(S("abcde"), 6, 0, S(""), 0, 1, S("can't happen")); + test(S("abcde"), 6, 0, S(""), 1, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 0, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 0, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 0, 2, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 0, 4, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 0, 5, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 0, 6, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 1, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 1, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 1, 2, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 1, 3, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 1, 4, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 1, 5, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 2, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 2, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 2, 2, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 2, 3, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 2, 4, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 4, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 4, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 4, 2, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 5, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 5, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 0, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 0, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 0, 5, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 0, 9, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 0, 10, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 0, 11, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 1, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 1, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 1, 4, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 1, 8, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 1, 9, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 1, 10, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 5, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 5, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 5, 2, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 5, 4, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 5, 5, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 5, 6, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 9, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 9, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 9, 2, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 10, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 10, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("1234567890"), 11, 0, S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test19() -{ - test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcde"), 6, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 0, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 0, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 0, 2, S("12abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 0, 4, S("1234abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 0, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 0, 6, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 1, 2, S("23abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 1, 3, S("234abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 1, 4, S("2345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 1, 5, S("2345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 2, 1, S("3abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 2, 2, S("34abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 2, 3, S("345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 2, 4, S("345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 4, 1, S("5abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 4, 2, S("5abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 4, S("2345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 8, S("23456789abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 9, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 10, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 1, S("6abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 2, S("67abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 4, S("6789abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 5, S("67890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 6, S("67890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 1, S("0abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 2, S("0abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 1, S(""), 0, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S(""), 0, 1, S("bcdefghij")); +TEST_CONSTEXPR_CXX20 bool test19() { + test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcde"), 6, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 0, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 0, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 0, 2, S("12abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 0, 4, S("1234abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 0, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 0, 6, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 1, 2, S("23abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 1, 3, S("234abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 1, 4, S("2345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 1, 5, S("2345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 2, 1, S("3abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 2, 2, S("34abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 2, 3, S("345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 2, 4, S("345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 4, 1, S("5abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 4, 2, S("5abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 4, S("2345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 8, S("23456789abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 9, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 10, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 1, S("6abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 2, S("67abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 4, S("6789abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 5, S("67890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 6, S("67890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 1, S("0abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 2, S("0abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 1, S(""), 0, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S(""), 0, 1, S("bcdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test20() -{ - test(S("abcdefghij"), 0, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 1, S("12345"), 0, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 0, 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 0, 2, S("12bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 0, 4, S("1234bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 0, 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 0, 6, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 1, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 1, 1, S("2bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 1, 2, S("23bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 1, 3, S("234bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 1, 4, S("2345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 1, 5, S("2345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 2, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 2, 1, S("3bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 2, 2, S("34bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 2, 3, S("345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 2, 4, S("345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 4, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 4, 1, S("5bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 4, 2, S("5bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 5, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 5, 1, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 9, S("123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 1, S("2bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 4, S("2345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 8, S("23456789bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 9, S("234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 10, S("234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 1, S("6bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 2, S("67bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 4, S("6789bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 5, S("67890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 6, S("67890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 1, S("0bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 2, S("0bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 10, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 10, 1, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 20, 0, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 20, 1, S("bcdefghij")); - test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 5, S(""), 0, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S(""), 0, 1, S("fghij")); - test(S("abcdefghij"), 0, 5, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 5, S("12345"), 0, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 0, 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 0, 2, S("12fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 0, 4, S("1234fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 0, 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 0, 6, S("12345fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 1, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 1, 1, S("2fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 1, 2, S("23fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 1, 3, S("234fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 1, 4, S("2345fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 1, 5, S("2345fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 2, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 2, 1, S("3fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 2, 2, S("34fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 2, 3, S("345fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 2, 4, S("345fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 4, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 4, 1, S("5fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 4, 2, S("5fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 5, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 5, 1, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 1, S("1fghij")); +TEST_CONSTEXPR_CXX20 bool test20() { + test(S("abcdefghij"), 0, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 1, S("12345"), 0, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 0, 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 0, 2, S("12bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 0, 4, S("1234bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 0, 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 0, 6, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 1, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 1, 1, S("2bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 1, 2, S("23bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 1, 3, S("234bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 1, 4, S("2345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 1, 5, S("2345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 2, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 2, 1, S("3bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 2, 2, S("34bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 2, 3, S("345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 2, 4, S("345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 4, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 4, 1, S("5bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 4, 2, S("5bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 5, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 5, 1, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 9, S("123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 1, S("2bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 4, S("2345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 8, S("23456789bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 9, S("234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 10, S("234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 1, S("6bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 2, S("67bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 4, S("6789bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 5, S("67890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 6, S("67890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 1, S("0bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 2, S("0bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 10, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 10, 1, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 20, 0, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 20, 1, S("bcdefghij")); + test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 5, S(""), 0, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S(""), 0, 1, S("fghij")); + test(S("abcdefghij"), 0, 5, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 5, S("12345"), 0, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 0, 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 0, 2, S("12fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 0, 4, S("1234fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 0, 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 0, 6, S("12345fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 1, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 1, 1, S("2fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 1, 2, S("23fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 1, 3, S("234fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 1, 4, S("2345fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 1, 5, S("2345fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 2, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 2, 1, S("3fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 2, 2, S("34fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 2, 3, S("345fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 2, 4, S("345fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 4, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 4, 1, S("5fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 4, 2, S("5fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 5, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 5, 1, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 1, S("1fghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test21() -{ - test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 9, S("123456789fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 11, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 1, S("2fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 4, S("2345fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 8, S("23456789fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 9, S("234567890fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 10, S("234567890fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 1, S("6fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 2, S("67fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 4, S("6789fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 5, S("67890fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 6, S("67890fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 1, S("0fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 2, S("0fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 10, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 10, 1, S("fghij")); - test(S("abcdefghij"), 0, 5, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 19, S("1234567890123456789fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 20, S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 21, S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 1, S("2fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 9, S("234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 18, S("234567890123456789fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 19, S("2345678901234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 20, S("2345678901234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 1, S("1fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 5, S("12345fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 9, S("123456789fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 10, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 11, S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 1, S("0fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 2, S("0fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 20, 0, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 20, 1, S("fghij")); - test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 9, S(""), 0, 0, S("j")); - test(S("abcdefghij"), 0, 9, S(""), 0, 1, S("j")); - test(S("abcdefghij"), 0, 9, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 9, S("12345"), 0, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345"), 0, 1, S("1j")); - test(S("abcdefghij"), 0, 9, S("12345"), 0, 2, S("12j")); - test(S("abcdefghij"), 0, 9, S("12345"), 0, 4, S("1234j")); - test(S("abcdefghij"), 0, 9, S("12345"), 0, 5, S("12345j")); - test(S("abcdefghij"), 0, 9, S("12345"), 0, 6, S("12345j")); - test(S("abcdefghij"), 0, 9, S("12345"), 1, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345"), 1, 1, S("2j")); - test(S("abcdefghij"), 0, 9, S("12345"), 1, 2, S("23j")); - test(S("abcdefghij"), 0, 9, S("12345"), 1, 3, S("234j")); - test(S("abcdefghij"), 0, 9, S("12345"), 1, 4, S("2345j")); - test(S("abcdefghij"), 0, 9, S("12345"), 1, 5, S("2345j")); - test(S("abcdefghij"), 0, 9, S("12345"), 2, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345"), 2, 1, S("3j")); - test(S("abcdefghij"), 0, 9, S("12345"), 2, 2, S("34j")); - test(S("abcdefghij"), 0, 9, S("12345"), 2, 3, S("345j")); - test(S("abcdefghij"), 0, 9, S("12345"), 2, 4, S("345j")); - test(S("abcdefghij"), 0, 9, S("12345"), 4, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345"), 4, 1, S("5j")); - test(S("abcdefghij"), 0, 9, S("12345"), 4, 2, S("5j")); - test(S("abcdefghij"), 0, 9, S("12345"), 5, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345"), 5, 1, S("j")); - test(S("abcdefghij"), 0, 9, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 1, S("1j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 5, S("12345j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 9, S("123456789j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 11, S("1234567890j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 1, S("2j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 4, S("2345j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 8, S("23456789j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 9, S("234567890j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 10, S("234567890j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 1, S("6j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 2, S("67j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 4, S("6789j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 5, S("67890j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 6, S("67890j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 1, S("0j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 2, S("0j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 10, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 10, 1, S("j")); - test(S("abcdefghij"), 0, 9, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 1, S("1j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 19, S("1234567890123456789j")); +TEST_CONSTEXPR_CXX20 bool test21() { + test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 9, S("123456789fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 11, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 1, S("2fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 4, S("2345fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 8, S("23456789fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 9, S("234567890fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 10, S("234567890fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 1, S("6fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 2, S("67fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 4, S("6789fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 5, S("67890fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 6, S("67890fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 1, S("0fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 2, S("0fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 10, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 10, 1, S("fghij")); + test(S("abcdefghij"), 0, 5, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 19, S("1234567890123456789fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 20, S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 21, S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 1, S("2fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 9, S("234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 18, S("234567890123456789fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 19, S("2345678901234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 20, S("2345678901234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 1, S("1fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 5, S("12345fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 9, S("123456789fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 10, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 11, S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 1, S("0fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 2, S("0fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 20, 0, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 20, 1, S("fghij")); + test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 9, S(""), 0, 0, S("j")); + test(S("abcdefghij"), 0, 9, S(""), 0, 1, S("j")); + test(S("abcdefghij"), 0, 9, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 9, S("12345"), 0, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345"), 0, 1, S("1j")); + test(S("abcdefghij"), 0, 9, S("12345"), 0, 2, S("12j")); + test(S("abcdefghij"), 0, 9, S("12345"), 0, 4, S("1234j")); + test(S("abcdefghij"), 0, 9, S("12345"), 0, 5, S("12345j")); + test(S("abcdefghij"), 0, 9, S("12345"), 0, 6, S("12345j")); + test(S("abcdefghij"), 0, 9, S("12345"), 1, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345"), 1, 1, S("2j")); + test(S("abcdefghij"), 0, 9, S("12345"), 1, 2, S("23j")); + test(S("abcdefghij"), 0, 9, S("12345"), 1, 3, S("234j")); + test(S("abcdefghij"), 0, 9, S("12345"), 1, 4, S("2345j")); + test(S("abcdefghij"), 0, 9, S("12345"), 1, 5, S("2345j")); + test(S("abcdefghij"), 0, 9, S("12345"), 2, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345"), 2, 1, S("3j")); + test(S("abcdefghij"), 0, 9, S("12345"), 2, 2, S("34j")); + test(S("abcdefghij"), 0, 9, S("12345"), 2, 3, S("345j")); + test(S("abcdefghij"), 0, 9, S("12345"), 2, 4, S("345j")); + test(S("abcdefghij"), 0, 9, S("12345"), 4, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345"), 4, 1, S("5j")); + test(S("abcdefghij"), 0, 9, S("12345"), 4, 2, S("5j")); + test(S("abcdefghij"), 0, 9, S("12345"), 5, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345"), 5, 1, S("j")); + test(S("abcdefghij"), 0, 9, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 1, S("1j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 5, S("12345j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 9, S("123456789j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 11, S("1234567890j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 1, S("2j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 4, S("2345j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 8, S("23456789j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 9, S("234567890j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 10, S("234567890j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 1, S("6j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 2, S("67j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 4, S("6789j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 5, S("67890j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 6, S("67890j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 1, S("0j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 2, S("0j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 10, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 10, 1, S("j")); + test(S("abcdefghij"), 0, 9, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 1, S("1j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 19, S("1234567890123456789j")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test22() -{ - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 20, S("12345678901234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 21, S("12345678901234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 1, S("2j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 9, S("234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 18, S("234567890123456789j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 19, S("2345678901234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 20, S("2345678901234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 1, S("1j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 5, S("12345j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 9, S("123456789j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 10, S("1234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 11, S("1234567890j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 1, S("0j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 2, S("0j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 20, 0, S("j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 20, 1, S("j")); - test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 10, S(""), 0, 0, S("")); - test(S("abcdefghij"), 0, 10, S(""), 0, 1, S("")); - test(S("abcdefghij"), 0, 10, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 10, S("12345"), 0, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 10, S("12345"), 0, 2, S("12")); - test(S("abcdefghij"), 0, 10, S("12345"), 0, 4, S("1234")); - test(S("abcdefghij"), 0, 10, S("12345"), 0, 5, S("12345")); - test(S("abcdefghij"), 0, 10, S("12345"), 0, 6, S("12345")); - test(S("abcdefghij"), 0, 10, S("12345"), 1, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 10, S("12345"), 1, 2, S("23")); - test(S("abcdefghij"), 0, 10, S("12345"), 1, 3, S("234")); - test(S("abcdefghij"), 0, 10, S("12345"), 1, 4, S("2345")); - test(S("abcdefghij"), 0, 10, S("12345"), 1, 5, S("2345")); - test(S("abcdefghij"), 0, 10, S("12345"), 2, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345"), 2, 1, S("3")); - test(S("abcdefghij"), 0, 10, S("12345"), 2, 2, S("34")); - test(S("abcdefghij"), 0, 10, S("12345"), 2, 3, S("345")); - test(S("abcdefghij"), 0, 10, S("12345"), 2, 4, S("345")); - test(S("abcdefghij"), 0, 10, S("12345"), 4, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345"), 4, 1, S("5")); - test(S("abcdefghij"), 0, 10, S("12345"), 4, 2, S("5")); - test(S("abcdefghij"), 0, 10, S("12345"), 5, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345"), 5, 1, S("")); - test(S("abcdefghij"), 0, 10, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 0, S("")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 5, S("12345")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 9, S("123456789")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 11, S("1234567890")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 0, S("")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 4, S("2345")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 8, S("23456789")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 9, S("234567890")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 10, S("234567890")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 0, S("")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 1, S("6")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 2, S("67")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 4, S("6789")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 5, S("67890")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 6, S("67890")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 0, S("")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 1, S("0")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 2, S("0")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 10, 0, S("")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 10, 1, S("")); - test(S("abcdefghij"), 0, 10, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 1, S("1")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 5, S("12345")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 1, S("0")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 2, S("0")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 20, 0, S("")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 20, 1, S("")); - test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 0, 11, S(""), 0, 0, S("")); - test(S("abcdefghij"), 0, 11, S(""), 0, 1, S("")); - test(S("abcdefghij"), 0, 11, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 0, 11, S("12345"), 0, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 11, S("12345"), 0, 2, S("12")); +TEST_CONSTEXPR_CXX20 bool test22() { + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 20, S("12345678901234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 21, S("12345678901234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 1, S("2j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 9, S("234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 18, S("234567890123456789j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 19, S("2345678901234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 20, S("2345678901234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 1, S("1j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 5, S("12345j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 9, S("123456789j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 10, S("1234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 11, S("1234567890j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 1, S("0j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 2, S("0j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 20, 0, S("j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 20, 1, S("j")); + test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 10, S(""), 0, 0, S("")); + test(S("abcdefghij"), 0, 10, S(""), 0, 1, S("")); + test(S("abcdefghij"), 0, 10, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 10, S("12345"), 0, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 10, S("12345"), 0, 2, S("12")); + test(S("abcdefghij"), 0, 10, S("12345"), 0, 4, S("1234")); + test(S("abcdefghij"), 0, 10, S("12345"), 0, 5, S("12345")); + test(S("abcdefghij"), 0, 10, S("12345"), 0, 6, S("12345")); + test(S("abcdefghij"), 0, 10, S("12345"), 1, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 10, S("12345"), 1, 2, S("23")); + test(S("abcdefghij"), 0, 10, S("12345"), 1, 3, S("234")); + test(S("abcdefghij"), 0, 10, S("12345"), 1, 4, S("2345")); + test(S("abcdefghij"), 0, 10, S("12345"), 1, 5, S("2345")); + test(S("abcdefghij"), 0, 10, S("12345"), 2, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345"), 2, 1, S("3")); + test(S("abcdefghij"), 0, 10, S("12345"), 2, 2, S("34")); + test(S("abcdefghij"), 0, 10, S("12345"), 2, 3, S("345")); + test(S("abcdefghij"), 0, 10, S("12345"), 2, 4, S("345")); + test(S("abcdefghij"), 0, 10, S("12345"), 4, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345"), 4, 1, S("5")); + test(S("abcdefghij"), 0, 10, S("12345"), 4, 2, S("5")); + test(S("abcdefghij"), 0, 10, S("12345"), 5, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345"), 5, 1, S("")); + test(S("abcdefghij"), 0, 10, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 0, S("")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 5, S("12345")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 9, S("123456789")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 11, S("1234567890")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 0, S("")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 4, S("2345")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 8, S("23456789")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 9, S("234567890")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 10, S("234567890")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 0, S("")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 1, S("6")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 2, S("67")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 4, S("6789")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 5, S("67890")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 6, S("67890")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 0, S("")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 1, S("0")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 2, S("0")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 10, 0, S("")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 10, 1, S("")); + test(S("abcdefghij"), 0, 10, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 1, S("1")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 5, S("12345")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 1, S("0")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 2, S("0")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 20, 0, S("")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 20, 1, S("")); + test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 0, 11, S(""), 0, 0, S("")); + test(S("abcdefghij"), 0, 11, S(""), 0, 1, S("")); + test(S("abcdefghij"), 0, 11, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 0, 11, S("12345"), 0, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 11, S("12345"), 0, 2, S("12")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test23() -{ - test(S("abcdefghij"), 0, 11, S("12345"), 0, 4, S("1234")); - test(S("abcdefghij"), 0, 11, S("12345"), 0, 5, S("12345")); - test(S("abcdefghij"), 0, 11, S("12345"), 0, 6, S("12345")); - test(S("abcdefghij"), 0, 11, S("12345"), 1, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 11, S("12345"), 1, 2, S("23")); - test(S("abcdefghij"), 0, 11, S("12345"), 1, 3, S("234")); - test(S("abcdefghij"), 0, 11, S("12345"), 1, 4, S("2345")); - test(S("abcdefghij"), 0, 11, S("12345"), 1, 5, S("2345")); - test(S("abcdefghij"), 0, 11, S("12345"), 2, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345"), 2, 1, S("3")); - test(S("abcdefghij"), 0, 11, S("12345"), 2, 2, S("34")); - test(S("abcdefghij"), 0, 11, S("12345"), 2, 3, S("345")); - test(S("abcdefghij"), 0, 11, S("12345"), 2, 4, S("345")); - test(S("abcdefghij"), 0, 11, S("12345"), 4, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345"), 4, 1, S("5")); - test(S("abcdefghij"), 0, 11, S("12345"), 4, 2, S("5")); - test(S("abcdefghij"), 0, 11, S("12345"), 5, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345"), 5, 1, S("")); - test(S("abcdefghij"), 0, 11, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 0, S("")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 5, S("12345")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 9, S("123456789")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 10, S("1234567890")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 11, S("1234567890")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 0, S("")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 4, S("2345")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 8, S("23456789")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 9, S("234567890")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 10, S("234567890")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 0, S("")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 1, S("6")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 2, S("67")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 4, S("6789")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 5, S("67890")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 6, S("67890")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 0, S("")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 1, S("0")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 2, S("0")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 10, 0, S("")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 10, 1, S("")); - test(S("abcdefghij"), 0, 11, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 1, S("1")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 1, S("2")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 1, S("1")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 5, S("12345")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 1, S("0")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 2, S("0")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 20, 0, S("")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 20, 1, S("")); - test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 0, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 0, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 0, 2, S("a12bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 0, 4, S("a1234bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 0, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 0, 6, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 1, 2, S("a23bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 1, 3, S("a234bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 1, 4, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 1, 5, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 2, 1, S("a3bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 2, 2, S("a34bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 2, 3, S("a345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 2, 4, S("a345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 4, 1, S("a5bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 4, 2, S("a5bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcdefghij")); +TEST_CONSTEXPR_CXX20 bool test23() { + test(S("abcdefghij"), 0, 11, S("12345"), 0, 4, S("1234")); + test(S("abcdefghij"), 0, 11, S("12345"), 0, 5, S("12345")); + test(S("abcdefghij"), 0, 11, S("12345"), 0, 6, S("12345")); + test(S("abcdefghij"), 0, 11, S("12345"), 1, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 11, S("12345"), 1, 2, S("23")); + test(S("abcdefghij"), 0, 11, S("12345"), 1, 3, S("234")); + test(S("abcdefghij"), 0, 11, S("12345"), 1, 4, S("2345")); + test(S("abcdefghij"), 0, 11, S("12345"), 1, 5, S("2345")); + test(S("abcdefghij"), 0, 11, S("12345"), 2, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345"), 2, 1, S("3")); + test(S("abcdefghij"), 0, 11, S("12345"), 2, 2, S("34")); + test(S("abcdefghij"), 0, 11, S("12345"), 2, 3, S("345")); + test(S("abcdefghij"), 0, 11, S("12345"), 2, 4, S("345")); + test(S("abcdefghij"), 0, 11, S("12345"), 4, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345"), 4, 1, S("5")); + test(S("abcdefghij"), 0, 11, S("12345"), 4, 2, S("5")); + test(S("abcdefghij"), 0, 11, S("12345"), 5, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345"), 5, 1, S("")); + test(S("abcdefghij"), 0, 11, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 0, S("")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 5, S("12345")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 9, S("123456789")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 10, S("1234567890")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 11, S("1234567890")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 0, S("")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 4, S("2345")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 8, S("23456789")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 9, S("234567890")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 10, S("234567890")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 0, S("")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 1, S("6")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 2, S("67")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 4, S("6789")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 5, S("67890")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 6, S("67890")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 0, S("")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 1, S("0")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 2, S("0")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 10, 0, S("")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 10, 1, S("")); + test(S("abcdefghij"), 0, 11, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 1, S("1")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 1, S("2")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 1, S("1")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 5, S("12345")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 1, S("0")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 2, S("0")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 20, 0, S("")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 20, 1, S("")); + test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 0, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 0, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 0, 2, S("a12bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 0, 4, S("a1234bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 0, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 0, 6, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 1, 2, S("a23bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 1, 3, S("a234bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 1, 4, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 1, 5, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 2, 1, S("a3bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 2, 2, S("a34bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 2, 3, S("a345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 2, 4, S("a345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 4, 1, S("a5bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 4, 2, S("a5bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test24() -{ - test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 4, S("a2345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 1, S("a6bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 2, S("a67bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 4, S("a6789bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 5, S("a67890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 6, S("a67890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 1, S("a0bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 2, S("a0bcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 1, S(""), 0, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S(""), 0, 1, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 1, S("12345"), 0, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 0, 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 0, 2, S("a12cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 0, 4, S("a1234cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 0, 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 0, 6, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 1, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 1, 1, S("a2cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 1, 2, S("a23cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 1, 3, S("a234cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 1, 4, S("a2345cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 1, 5, S("a2345cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 2, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 2, 1, S("a3cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 2, 2, S("a34cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 2, 3, S("a345cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 2, 4, S("a345cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 4, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 4, 1, S("a5cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 4, 2, S("a5cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 5, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 5, 1, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 9, S("a123456789cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 1, S("a2cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 4, S("a2345cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 8, S("a23456789cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 9, S("a234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 10, S("a234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 1, S("a6cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 2, S("a67cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 4, S("a6789cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 5, S("a67890cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 6, S("a67890cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 1, S("a0cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 2, S("a0cdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 10, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 10, 1, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cdefghij")); +TEST_CONSTEXPR_CXX20 bool test24() { + test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 4, S("a2345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 1, S("a6bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 2, S("a67bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 4, S("a6789bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 5, S("a67890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 6, S("a67890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 1, S("a0bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 2, S("a0bcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 1, S(""), 0, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S(""), 0, 1, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 1, S("12345"), 0, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 0, 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 0, 2, S("a12cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 0, 4, S("a1234cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 0, 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 0, 6, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 1, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 1, 1, S("a2cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 1, 2, S("a23cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 1, 3, S("a234cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 1, 4, S("a2345cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 1, 5, S("a2345cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 2, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 2, 1, S("a3cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 2, 2, S("a34cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 2, 3, S("a345cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 2, 4, S("a345cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 4, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 4, 1, S("a5cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 4, 2, S("a5cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 5, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 5, 1, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 9, S("a123456789cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 1, S("a2cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 4, S("a2345cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 8, S("a23456789cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 9, S("a234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 10, S("a234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 1, S("a6cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 2, S("a67cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 4, S("a6789cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 5, S("a67890cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 6, S("a67890cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 1, S("a0cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 2, S("a0cdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 10, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 10, 1, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test25() -{ - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 20, 0, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 20, 1, S("acdefghij")); - test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 4, S(""), 0, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S(""), 0, 1, S("afghij")); - test(S("abcdefghij"), 1, 4, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 4, S("12345"), 0, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 0, 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 0, 2, S("a12fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 0, 4, S("a1234fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 0, 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 0, 6, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 1, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 1, 1, S("a2fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 1, 2, S("a23fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 1, 3, S("a234fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 1, 4, S("a2345fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 1, 5, S("a2345fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 2, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 2, 1, S("a3fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 2, 2, S("a34fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 2, 3, S("a345fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 2, 4, S("a345fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 4, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 4, 1, S("a5fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 4, 2, S("a5fghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 5, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 5, 1, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 9, S("a123456789fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 11, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 1, S("a2fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 4, S("a2345fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 8, S("a23456789fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 9, S("a234567890fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 10, S("a234567890fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 1, S("a6fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 2, S("a67fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 4, S("a6789fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 5, S("a67890fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 6, S("a67890fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 1, S("a0fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 2, S("a0fghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 10, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 10, 1, S("afghij")); - test(S("abcdefghij"), 1, 4, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 19, S("a1234567890123456789fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 20, S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 21, S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 1, S("a2fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 9, S("a234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 18, S("a234567890123456789fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 19, S("a2345678901234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 20, S("a2345678901234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 1, S("a1fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 5, S("a12345fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 9, S("a123456789fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 10, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 11, S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 1, S("a0fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 2, S("a0fghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 20, 0, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 20, 1, S("afghij")); - test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 8, S(""), 0, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S(""), 0, 1, S("aj")); - test(S("abcdefghij"), 1, 8, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 8, S("12345"), 0, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345"), 0, 1, S("a1j")); - test(S("abcdefghij"), 1, 8, S("12345"), 0, 2, S("a12j")); - test(S("abcdefghij"), 1, 8, S("12345"), 0, 4, S("a1234j")); - test(S("abcdefghij"), 1, 8, S("12345"), 0, 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, S("12345"), 0, 6, S("a12345j")); - test(S("abcdefghij"), 1, 8, S("12345"), 1, 0, S("aj")); +TEST_CONSTEXPR_CXX20 bool test25() { + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 20, 0, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 20, 1, S("acdefghij")); + test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 4, S(""), 0, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S(""), 0, 1, S("afghij")); + test(S("abcdefghij"), 1, 4, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 4, S("12345"), 0, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 0, 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 0, 2, S("a12fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 0, 4, S("a1234fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 0, 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 0, 6, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 1, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 1, 1, S("a2fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 1, 2, S("a23fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 1, 3, S("a234fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 1, 4, S("a2345fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 1, 5, S("a2345fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 2, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 2, 1, S("a3fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 2, 2, S("a34fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 2, 3, S("a345fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 2, 4, S("a345fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 4, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 4, 1, S("a5fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 4, 2, S("a5fghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 5, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 5, 1, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 9, S("a123456789fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 11, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 1, S("a2fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 4, S("a2345fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 8, S("a23456789fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 9, S("a234567890fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 10, S("a234567890fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 1, S("a6fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 2, S("a67fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 4, S("a6789fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 5, S("a67890fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 6, S("a67890fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 1, S("a0fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 2, S("a0fghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 10, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 10, 1, S("afghij")); + test(S("abcdefghij"), 1, 4, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 19, S("a1234567890123456789fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 20, S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 21, S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 1, S("a2fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 9, S("a234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 18, S("a234567890123456789fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 19, S("a2345678901234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 20, S("a2345678901234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 1, S("a1fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 5, S("a12345fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 9, S("a123456789fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 10, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 11, S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 1, S("a0fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 2, S("a0fghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 20, 0, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 20, 1, S("afghij")); + test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 8, S(""), 0, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S(""), 0, 1, S("aj")); + test(S("abcdefghij"), 1, 8, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 8, S("12345"), 0, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345"), 0, 1, S("a1j")); + test(S("abcdefghij"), 1, 8, S("12345"), 0, 2, S("a12j")); + test(S("abcdefghij"), 1, 8, S("12345"), 0, 4, S("a1234j")); + test(S("abcdefghij"), 1, 8, S("12345"), 0, 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, S("12345"), 0, 6, S("a12345j")); + test(S("abcdefghij"), 1, 8, S("12345"), 1, 0, S("aj")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test26() -{ - test(S("abcdefghij"), 1, 8, S("12345"), 1, 1, S("a2j")); - test(S("abcdefghij"), 1, 8, S("12345"), 1, 2, S("a23j")); - test(S("abcdefghij"), 1, 8, S("12345"), 1, 3, S("a234j")); - test(S("abcdefghij"), 1, 8, S("12345"), 1, 4, S("a2345j")); - test(S("abcdefghij"), 1, 8, S("12345"), 1, 5, S("a2345j")); - test(S("abcdefghij"), 1, 8, S("12345"), 2, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345"), 2, 1, S("a3j")); - test(S("abcdefghij"), 1, 8, S("12345"), 2, 2, S("a34j")); - test(S("abcdefghij"), 1, 8, S("12345"), 2, 3, S("a345j")); - test(S("abcdefghij"), 1, 8, S("12345"), 2, 4, S("a345j")); - test(S("abcdefghij"), 1, 8, S("12345"), 4, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345"), 4, 1, S("a5j")); - test(S("abcdefghij"), 1, 8, S("12345"), 4, 2, S("a5j")); - test(S("abcdefghij"), 1, 8, S("12345"), 5, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345"), 5, 1, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 1, S("a1j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 9, S("a123456789j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 11, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 1, S("a2j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 4, S("a2345j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 8, S("a23456789j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 9, S("a234567890j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 10, S("a234567890j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 1, S("a6j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 2, S("a67j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 4, S("a6789j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 5, S("a67890j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 6, S("a67890j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 1, S("a0j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 2, S("a0j")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 10, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 10, 1, S("aj")); - test(S("abcdefghij"), 1, 8, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 1, S("a1j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 19, S("a1234567890123456789j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 20, S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 21, S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 1, S("a2j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 9, S("a234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 18, S("a234567890123456789j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 19, S("a2345678901234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 20, S("a2345678901234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 1, S("a1j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 5, S("a12345j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 9, S("a123456789j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 10, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 11, S("a1234567890j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 1, S("a0j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 2, S("a0j")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 20, 0, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 20, 1, S("aj")); - test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 9, S(""), 0, 0, S("a")); - test(S("abcdefghij"), 1, 9, S(""), 0, 1, S("a")); - test(S("abcdefghij"), 1, 9, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 9, S("12345"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 9, S("12345"), 0, 2, S("a12")); - test(S("abcdefghij"), 1, 9, S("12345"), 0, 4, S("a1234")); - test(S("abcdefghij"), 1, 9, S("12345"), 0, 5, S("a12345")); - test(S("abcdefghij"), 1, 9, S("12345"), 0, 6, S("a12345")); - test(S("abcdefghij"), 1, 9, S("12345"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 9, S("12345"), 1, 2, S("a23")); - test(S("abcdefghij"), 1, 9, S("12345"), 1, 3, S("a234")); - test(S("abcdefghij"), 1, 9, S("12345"), 1, 4, S("a2345")); - test(S("abcdefghij"), 1, 9, S("12345"), 1, 5, S("a2345")); - test(S("abcdefghij"), 1, 9, S("12345"), 2, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345"), 2, 1, S("a3")); - test(S("abcdefghij"), 1, 9, S("12345"), 2, 2, S("a34")); - test(S("abcdefghij"), 1, 9, S("12345"), 2, 3, S("a345")); - test(S("abcdefghij"), 1, 9, S("12345"), 2, 4, S("a345")); - test(S("abcdefghij"), 1, 9, S("12345"), 4, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345"), 4, 1, S("a5")); - test(S("abcdefghij"), 1, 9, S("12345"), 4, 2, S("a5")); - test(S("abcdefghij"), 1, 9, S("12345"), 5, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345"), 5, 1, S("a")); - test(S("abcdefghij"), 1, 9, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 5, S("a12345")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 9, S("a123456789")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 11, S("a1234567890")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 4, S("a2345")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 8, S("a23456789")); +TEST_CONSTEXPR_CXX20 bool test26() { + test(S("abcdefghij"), 1, 8, S("12345"), 1, 1, S("a2j")); + test(S("abcdefghij"), 1, 8, S("12345"), 1, 2, S("a23j")); + test(S("abcdefghij"), 1, 8, S("12345"), 1, 3, S("a234j")); + test(S("abcdefghij"), 1, 8, S("12345"), 1, 4, S("a2345j")); + test(S("abcdefghij"), 1, 8, S("12345"), 1, 5, S("a2345j")); + test(S("abcdefghij"), 1, 8, S("12345"), 2, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345"), 2, 1, S("a3j")); + test(S("abcdefghij"), 1, 8, S("12345"), 2, 2, S("a34j")); + test(S("abcdefghij"), 1, 8, S("12345"), 2, 3, S("a345j")); + test(S("abcdefghij"), 1, 8, S("12345"), 2, 4, S("a345j")); + test(S("abcdefghij"), 1, 8, S("12345"), 4, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345"), 4, 1, S("a5j")); + test(S("abcdefghij"), 1, 8, S("12345"), 4, 2, S("a5j")); + test(S("abcdefghij"), 1, 8, S("12345"), 5, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345"), 5, 1, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 1, S("a1j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 9, S("a123456789j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 11, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 1, S("a2j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 4, S("a2345j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 8, S("a23456789j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 9, S("a234567890j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 10, S("a234567890j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 1, S("a6j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 2, S("a67j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 4, S("a6789j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 5, S("a67890j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 6, S("a67890j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 1, S("a0j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 2, S("a0j")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 10, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 10, 1, S("aj")); + test(S("abcdefghij"), 1, 8, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 1, S("a1j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 19, S("a1234567890123456789j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 20, S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 21, S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 1, S("a2j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 9, S("a234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 18, S("a234567890123456789j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 19, S("a2345678901234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 20, S("a2345678901234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 1, S("a1j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 5, S("a12345j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 9, S("a123456789j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 10, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 11, S("a1234567890j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 1, S("a0j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 2, S("a0j")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 20, 0, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 20, 1, S("aj")); + test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 9, S(""), 0, 0, S("a")); + test(S("abcdefghij"), 1, 9, S(""), 0, 1, S("a")); + test(S("abcdefghij"), 1, 9, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 9, S("12345"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 9, S("12345"), 0, 2, S("a12")); + test(S("abcdefghij"), 1, 9, S("12345"), 0, 4, S("a1234")); + test(S("abcdefghij"), 1, 9, S("12345"), 0, 5, S("a12345")); + test(S("abcdefghij"), 1, 9, S("12345"), 0, 6, S("a12345")); + test(S("abcdefghij"), 1, 9, S("12345"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 9, S("12345"), 1, 2, S("a23")); + test(S("abcdefghij"), 1, 9, S("12345"), 1, 3, S("a234")); + test(S("abcdefghij"), 1, 9, S("12345"), 1, 4, S("a2345")); + test(S("abcdefghij"), 1, 9, S("12345"), 1, 5, S("a2345")); + test(S("abcdefghij"), 1, 9, S("12345"), 2, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345"), 2, 1, S("a3")); + test(S("abcdefghij"), 1, 9, S("12345"), 2, 2, S("a34")); + test(S("abcdefghij"), 1, 9, S("12345"), 2, 3, S("a345")); + test(S("abcdefghij"), 1, 9, S("12345"), 2, 4, S("a345")); + test(S("abcdefghij"), 1, 9, S("12345"), 4, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345"), 4, 1, S("a5")); + test(S("abcdefghij"), 1, 9, S("12345"), 4, 2, S("a5")); + test(S("abcdefghij"), 1, 9, S("12345"), 5, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345"), 5, 1, S("a")); + test(S("abcdefghij"), 1, 9, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 5, S("a12345")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 9, S("a123456789")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 11, S("a1234567890")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 4, S("a2345")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 8, S("a23456789")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test27() -{ - test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 9, S("a234567890")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 10, S("a234567890")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 1, S("a6")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 2, S("a67")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 4, S("a6789")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 5, S("a67890")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 6, S("a67890")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 1, S("a0")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 2, S("a0")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 10, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 10, 1, S("a")); - test(S("abcdefghij"), 1, 9, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 1, S("a1")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 1, S("a0")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 2, S("a0")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 20, 0, S("a")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 20, 1, S("a")); - test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 1, 10, S(""), 0, 0, S("a")); - test(S("abcdefghij"), 1, 10, S(""), 0, 1, S("a")); - test(S("abcdefghij"), 1, 10, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 1, 10, S("12345"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 10, S("12345"), 0, 2, S("a12")); - test(S("abcdefghij"), 1, 10, S("12345"), 0, 4, S("a1234")); - test(S("abcdefghij"), 1, 10, S("12345"), 0, 5, S("a12345")); - test(S("abcdefghij"), 1, 10, S("12345"), 0, 6, S("a12345")); - test(S("abcdefghij"), 1, 10, S("12345"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 10, S("12345"), 1, 2, S("a23")); - test(S("abcdefghij"), 1, 10, S("12345"), 1, 3, S("a234")); - test(S("abcdefghij"), 1, 10, S("12345"), 1, 4, S("a2345")); - test(S("abcdefghij"), 1, 10, S("12345"), 1, 5, S("a2345")); - test(S("abcdefghij"), 1, 10, S("12345"), 2, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345"), 2, 1, S("a3")); - test(S("abcdefghij"), 1, 10, S("12345"), 2, 2, S("a34")); - test(S("abcdefghij"), 1, 10, S("12345"), 2, 3, S("a345")); - test(S("abcdefghij"), 1, 10, S("12345"), 2, 4, S("a345")); - test(S("abcdefghij"), 1, 10, S("12345"), 4, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345"), 4, 1, S("a5")); - test(S("abcdefghij"), 1, 10, S("12345"), 4, 2, S("a5")); - test(S("abcdefghij"), 1, 10, S("12345"), 5, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345"), 5, 1, S("a")); - test(S("abcdefghij"), 1, 10, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 5, S("a12345")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 9, S("a123456789")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 11, S("a1234567890")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 4, S("a2345")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 8, S("a23456789")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 9, S("a234567890")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 10, S("a234567890")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 1, S("a6")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 2, S("a67")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 4, S("a6789")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 5, S("a67890")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 6, S("a67890")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 1, S("a0")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 2, S("a0")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 10, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 10, 1, S("a")); - test(S("abcdefghij"), 1, 10, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 1, S("a1")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 1, S("a2")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test27() { + test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 9, S("a234567890")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 10, S("a234567890")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 1, S("a6")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 2, S("a67")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 4, S("a6789")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 5, S("a67890")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 6, S("a67890")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 1, S("a0")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 2, S("a0")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 10, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 10, 1, S("a")); + test(S("abcdefghij"), 1, 9, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 1, S("a1")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 1, S("a0")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 2, S("a0")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 20, 0, S("a")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 20, 1, S("a")); + test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 1, 10, S(""), 0, 0, S("a")); + test(S("abcdefghij"), 1, 10, S(""), 0, 1, S("a")); + test(S("abcdefghij"), 1, 10, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 1, 10, S("12345"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 10, S("12345"), 0, 2, S("a12")); + test(S("abcdefghij"), 1, 10, S("12345"), 0, 4, S("a1234")); + test(S("abcdefghij"), 1, 10, S("12345"), 0, 5, S("a12345")); + test(S("abcdefghij"), 1, 10, S("12345"), 0, 6, S("a12345")); + test(S("abcdefghij"), 1, 10, S("12345"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 10, S("12345"), 1, 2, S("a23")); + test(S("abcdefghij"), 1, 10, S("12345"), 1, 3, S("a234")); + test(S("abcdefghij"), 1, 10, S("12345"), 1, 4, S("a2345")); + test(S("abcdefghij"), 1, 10, S("12345"), 1, 5, S("a2345")); + test(S("abcdefghij"), 1, 10, S("12345"), 2, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345"), 2, 1, S("a3")); + test(S("abcdefghij"), 1, 10, S("12345"), 2, 2, S("a34")); + test(S("abcdefghij"), 1, 10, S("12345"), 2, 3, S("a345")); + test(S("abcdefghij"), 1, 10, S("12345"), 2, 4, S("a345")); + test(S("abcdefghij"), 1, 10, S("12345"), 4, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345"), 4, 1, S("a5")); + test(S("abcdefghij"), 1, 10, S("12345"), 4, 2, S("a5")); + test(S("abcdefghij"), 1, 10, S("12345"), 5, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345"), 5, 1, S("a")); + test(S("abcdefghij"), 1, 10, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 5, S("a12345")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 9, S("a123456789")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 11, S("a1234567890")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 4, S("a2345")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 8, S("a23456789")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 9, S("a234567890")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 10, S("a234567890")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 1, S("a6")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 2, S("a67")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 4, S("a6789")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 5, S("a67890")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 6, S("a67890")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 1, S("a0")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 2, S("a0")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 10, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 10, 1, S("a")); + test(S("abcdefghij"), 1, 10, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 1, S("a1")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 1, S("a2")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test28() -{ - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 1, S("a1")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 1, S("a0")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 2, S("a0")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 20, 0, S("a")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 20, 1, S("a")); - test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 0, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 0, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 0, 2, S("abcde12fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 0, 4, S("abcde1234fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 0, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 0, 6, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 1, 2, S("abcde23fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 1, 3, S("abcde234fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 1, 4, S("abcde2345fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 1, 5, S("abcde2345fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 2, 1, S("abcde3fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 2, 2, S("abcde34fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 2, 3, S("abcde345fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 2, 4, S("abcde345fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 4, 1, S("abcde5fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 4, 2, S("abcde5fghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 11, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 4, S("abcde2345fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 8, S("abcde23456789fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 9, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 10, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 1, S("abcde6fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 2, S("abcde67fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 4, S("abcde6789fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 5, S("abcde67890fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 6, S("abcde67890fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 1, S("abcde0fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 2, S("abcde0fghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 1, S("abcde2fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 9, S("abcde234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 1, S("abcde1fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 5, S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 9, S("abcde123456789fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 1, S("abcde0fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 2, S("abcde0fghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 1, S(""), 0, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S(""), 0, 1, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 1, S("12345"), 0, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 0, 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 0, 2, S("abcde12ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 0, 4, S("abcde1234ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 0, 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 0, 6, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 1, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 1, 1, S("abcde2ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 1, 2, S("abcde23ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 1, 3, S("abcde234ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 1, 4, S("abcde2345ghij")); +TEST_CONSTEXPR_CXX20 bool test28() { + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 1, S("a1")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 1, S("a0")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 2, S("a0")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 20, 0, S("a")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 20, 1, S("a")); + test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 0, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 0, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 0, 2, S("abcde12fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 0, 4, S("abcde1234fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 0, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 0, 6, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 1, 2, S("abcde23fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 1, 3, S("abcde234fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 1, 4, S("abcde2345fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 1, 5, S("abcde2345fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 2, 1, S("abcde3fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 2, 2, S("abcde34fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 2, 3, S("abcde345fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 2, 4, S("abcde345fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 4, 1, S("abcde5fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 4, 2, S("abcde5fghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 11, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 4, S("abcde2345fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 8, S("abcde23456789fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 9, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 10, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 1, S("abcde6fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 2, S("abcde67fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 4, S("abcde6789fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 5, S("abcde67890fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 6, S("abcde67890fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 1, S("abcde0fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 2, S("abcde0fghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 1, S("abcde2fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 9, S("abcde234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 1, S("abcde1fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 5, S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 9, S("abcde123456789fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 1, S("abcde0fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 2, S("abcde0fghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 1, S(""), 0, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S(""), 0, 1, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 1, S("12345"), 0, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 0, 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 0, 2, S("abcde12ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 0, 4, S("abcde1234ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 0, 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 0, 6, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 1, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 1, 1, S("abcde2ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 1, 2, S("abcde23ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 1, 3, S("abcde234ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 1, 4, S("abcde2345ghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test29() -{ - test(S("abcdefghij"), 5, 1, S("12345"), 1, 5, S("abcde2345ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 2, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 2, 1, S("abcde3ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 2, 2, S("abcde34ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 2, 3, S("abcde345ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 2, 4, S("abcde345ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 4, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 4, 1, S("abcde5ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 4, 2, S("abcde5ghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 5, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 5, 1, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 9, S("abcde123456789ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 11, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 1, S("abcde2ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 4, S("abcde2345ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 8, S("abcde23456789ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 9, S("abcde234567890ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 10, S("abcde234567890ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 1, S("abcde6ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 2, S("abcde67ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 4, S("abcde6789ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 5, S("abcde67890ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 6, S("abcde67890ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 1, S("abcde0ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 2, S("abcde0ghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 10, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 10, 1, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 1, S("abcde2ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 9, S("abcde234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 18, S("abcde234567890123456789ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 1, S("abcde1ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 5, S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 9, S("abcde123456789ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 10, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 11, S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 1, S("abcde0ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 2, S("abcde0ghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 20, 0, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 20, 1, S("abcdeghij")); - test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 2, S(""), 0, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S(""), 0, 1, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 2, S("12345"), 0, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345"), 0, 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 0, 2, S("abcde12hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 0, 4, S("abcde1234hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 0, 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 0, 6, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 1, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345"), 1, 1, S("abcde2hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 1, 2, S("abcde23hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 1, 3, S("abcde234hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 1, 4, S("abcde2345hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 1, 5, S("abcde2345hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 2, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345"), 2, 1, S("abcde3hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 2, 2, S("abcde34hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 2, 3, S("abcde345hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 2, 4, S("abcde345hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 4, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345"), 4, 1, S("abcde5hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 4, 2, S("abcde5hij")); - test(S("abcdefghij"), 5, 2, S("12345"), 5, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345"), 5, 1, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 9, S("abcde123456789hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 11, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 1, S("abcde2hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 4, S("abcde2345hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 8, S("abcde23456789hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 9, S("abcde234567890hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 10, S("abcde234567890hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 1, S("abcde6hij")); +TEST_CONSTEXPR_CXX20 bool test29() { + test(S("abcdefghij"), 5, 1, S("12345"), 1, 5, S("abcde2345ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 2, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 2, 1, S("abcde3ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 2, 2, S("abcde34ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 2, 3, S("abcde345ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 2, 4, S("abcde345ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 4, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 4, 1, S("abcde5ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 4, 2, S("abcde5ghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 5, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 5, 1, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 9, S("abcde123456789ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 11, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 1, S("abcde2ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 4, S("abcde2345ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 8, S("abcde23456789ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 9, S("abcde234567890ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 10, S("abcde234567890ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 1, S("abcde6ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 2, S("abcde67ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 4, S("abcde6789ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 5, S("abcde67890ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 6, S("abcde67890ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 1, S("abcde0ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 2, S("abcde0ghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 10, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 10, 1, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 1, S("abcde2ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 9, S("abcde234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 18, S("abcde234567890123456789ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 1, S("abcde1ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 5, S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 9, S("abcde123456789ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 10, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 11, S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 1, S("abcde0ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 2, S("abcde0ghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 20, 0, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 20, 1, S("abcdeghij")); + test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 2, S(""), 0, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S(""), 0, 1, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 2, S("12345"), 0, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345"), 0, 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 0, 2, S("abcde12hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 0, 4, S("abcde1234hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 0, 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 0, 6, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 1, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345"), 1, 1, S("abcde2hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 1, 2, S("abcde23hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 1, 3, S("abcde234hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 1, 4, S("abcde2345hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 1, 5, S("abcde2345hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 2, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345"), 2, 1, S("abcde3hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 2, 2, S("abcde34hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 2, 3, S("abcde345hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 2, 4, S("abcde345hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 4, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345"), 4, 1, S("abcde5hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 4, 2, S("abcde5hij")); + test(S("abcdefghij"), 5, 2, S("12345"), 5, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345"), 5, 1, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 9, S("abcde123456789hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 11, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 1, S("abcde2hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 4, S("abcde2345hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 8, S("abcde23456789hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 9, S("abcde234567890hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 10, S("abcde234567890hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 1, S("abcde6hij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test30() -{ - test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 2, S("abcde67hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 4, S("abcde6789hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 5, S("abcde67890hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 6, S("abcde67890hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 1, S("abcde0hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 2, S("abcde0hij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 10, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 10, 1, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 1, S("abcde2hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 9, S("abcde234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 18, S("abcde234567890123456789hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 1, S("abcde1hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 5, S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 9, S("abcde123456789hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 10, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 11, S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 1, S("abcde0hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 2, S("abcde0hij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 20, 0, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 20, 1, S("abcdehij")); - test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 4, S(""), 0, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S(""), 0, 1, S("abcdej")); - test(S("abcdefghij"), 5, 4, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 4, S("12345"), 0, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345"), 0, 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, S("12345"), 0, 2, S("abcde12j")); - test(S("abcdefghij"), 5, 4, S("12345"), 0, 4, S("abcde1234j")); - test(S("abcdefghij"), 5, 4, S("12345"), 0, 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, S("12345"), 0, 6, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, S("12345"), 1, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345"), 1, 1, S("abcde2j")); - test(S("abcdefghij"), 5, 4, S("12345"), 1, 2, S("abcde23j")); - test(S("abcdefghij"), 5, 4, S("12345"), 1, 3, S("abcde234j")); - test(S("abcdefghij"), 5, 4, S("12345"), 1, 4, S("abcde2345j")); - test(S("abcdefghij"), 5, 4, S("12345"), 1, 5, S("abcde2345j")); - test(S("abcdefghij"), 5, 4, S("12345"), 2, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345"), 2, 1, S("abcde3j")); - test(S("abcdefghij"), 5, 4, S("12345"), 2, 2, S("abcde34j")); - test(S("abcdefghij"), 5, 4, S("12345"), 2, 3, S("abcde345j")); - test(S("abcdefghij"), 5, 4, S("12345"), 2, 4, S("abcde345j")); - test(S("abcdefghij"), 5, 4, S("12345"), 4, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345"), 4, 1, S("abcde5j")); - test(S("abcdefghij"), 5, 4, S("12345"), 4, 2, S("abcde5j")); - test(S("abcdefghij"), 5, 4, S("12345"), 5, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345"), 5, 1, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 9, S("abcde123456789j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 11, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 1, S("abcde2j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 4, S("abcde2345j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 8, S("abcde23456789j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 9, S("abcde234567890j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 10, S("abcde234567890j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 1, S("abcde6j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 2, S("abcde67j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 4, S("abcde6789j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 5, S("abcde67890j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 6, S("abcde67890j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 1, S("abcde0j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 2, S("abcde0j")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 10, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 10, 1, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 1, S("abcde2j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 9, S("abcde234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 18, S("abcde234567890123456789j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 1, S("abcde1j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 5, S("abcde12345j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 9, S("abcde123456789j")); +TEST_CONSTEXPR_CXX20 bool test30() { + test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 2, S("abcde67hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 4, S("abcde6789hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 5, S("abcde67890hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 6, S("abcde67890hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 1, S("abcde0hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 2, S("abcde0hij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 10, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 10, 1, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 1, S("abcde2hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 9, S("abcde234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 18, S("abcde234567890123456789hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 1, S("abcde1hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 5, S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 9, S("abcde123456789hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 10, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 11, S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 1, S("abcde0hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 2, S("abcde0hij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 20, 0, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 20, 1, S("abcdehij")); + test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 4, S(""), 0, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S(""), 0, 1, S("abcdej")); + test(S("abcdefghij"), 5, 4, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 4, S("12345"), 0, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345"), 0, 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, S("12345"), 0, 2, S("abcde12j")); + test(S("abcdefghij"), 5, 4, S("12345"), 0, 4, S("abcde1234j")); + test(S("abcdefghij"), 5, 4, S("12345"), 0, 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, S("12345"), 0, 6, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, S("12345"), 1, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345"), 1, 1, S("abcde2j")); + test(S("abcdefghij"), 5, 4, S("12345"), 1, 2, S("abcde23j")); + test(S("abcdefghij"), 5, 4, S("12345"), 1, 3, S("abcde234j")); + test(S("abcdefghij"), 5, 4, S("12345"), 1, 4, S("abcde2345j")); + test(S("abcdefghij"), 5, 4, S("12345"), 1, 5, S("abcde2345j")); + test(S("abcdefghij"), 5, 4, S("12345"), 2, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345"), 2, 1, S("abcde3j")); + test(S("abcdefghij"), 5, 4, S("12345"), 2, 2, S("abcde34j")); + test(S("abcdefghij"), 5, 4, S("12345"), 2, 3, S("abcde345j")); + test(S("abcdefghij"), 5, 4, S("12345"), 2, 4, S("abcde345j")); + test(S("abcdefghij"), 5, 4, S("12345"), 4, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345"), 4, 1, S("abcde5j")); + test(S("abcdefghij"), 5, 4, S("12345"), 4, 2, S("abcde5j")); + test(S("abcdefghij"), 5, 4, S("12345"), 5, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345"), 5, 1, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 9, S("abcde123456789j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 11, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 1, S("abcde2j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 4, S("abcde2345j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 8, S("abcde23456789j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 9, S("abcde234567890j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 10, S("abcde234567890j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 1, S("abcde6j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 2, S("abcde67j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 4, S("abcde6789j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 5, S("abcde67890j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 6, S("abcde67890j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 1, S("abcde0j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 2, S("abcde0j")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 10, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 10, 1, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 1, S("abcde2j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 9, S("abcde234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 18, S("abcde234567890123456789j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 1, S("abcde1j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 5, S("abcde12345j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 9, S("abcde123456789j")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test31() -{ - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 10, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 11, S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 1, S("abcde0j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 2, S("abcde0j")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 20, 0, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 20, 1, S("abcdej")); - test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 5, S(""), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S(""), 0, 1, S("abcde")); - test(S("abcdefghij"), 5, 5, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 5, S("12345"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, S("12345"), 0, 2, S("abcde12")); - test(S("abcdefghij"), 5, 5, S("12345"), 0, 4, S("abcde1234")); - test(S("abcdefghij"), 5, 5, S("12345"), 0, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, S("12345"), 0, 6, S("abcde12345")); - test(S("abcdefghij"), 5, 5, S("12345"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 5, S("12345"), 1, 2, S("abcde23")); - test(S("abcdefghij"), 5, 5, S("12345"), 1, 3, S("abcde234")); - test(S("abcdefghij"), 5, 5, S("12345"), 1, 4, S("abcde2345")); - test(S("abcdefghij"), 5, 5, S("12345"), 1, 5, S("abcde2345")); - test(S("abcdefghij"), 5, 5, S("12345"), 2, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345"), 2, 1, S("abcde3")); - test(S("abcdefghij"), 5, 5, S("12345"), 2, 2, S("abcde34")); - test(S("abcdefghij"), 5, 5, S("12345"), 2, 3, S("abcde345")); - test(S("abcdefghij"), 5, 5, S("12345"), 2, 4, S("abcde345")); - test(S("abcdefghij"), 5, 5, S("12345"), 4, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345"), 4, 1, S("abcde5")); - test(S("abcdefghij"), 5, 5, S("12345"), 4, 2, S("abcde5")); - test(S("abcdefghij"), 5, 5, S("12345"), 5, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345"), 5, 1, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 4, S("abcde2345")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 1, S("abcde6")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 2, S("abcde67")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 4, S("abcde6789")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 5, S("abcde67890")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 6, S("abcde67890")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 1, S("abcde0")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 2, S("abcde0")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 10, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 10, 1, S("abcde")); - test(S("abcdefghij"), 5, 5, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 5, 6, S(""), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S(""), 0, 1, S("abcde")); - test(S("abcdefghij"), 5, 6, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 5, 6, S("12345"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, S("12345"), 0, 2, S("abcde12")); - test(S("abcdefghij"), 5, 6, S("12345"), 0, 4, S("abcde1234")); - test(S("abcdefghij"), 5, 6, S("12345"), 0, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 6, S("12345"), 0, 6, S("abcde12345")); - test(S("abcdefghij"), 5, 6, S("12345"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 6, S("12345"), 1, 2, S("abcde23")); - test(S("abcdefghij"), 5, 6, S("12345"), 1, 3, S("abcde234")); - test(S("abcdefghij"), 5, 6, S("12345"), 1, 4, S("abcde2345")); - test(S("abcdefghij"), 5, 6, S("12345"), 1, 5, S("abcde2345")); - test(S("abcdefghij"), 5, 6, S("12345"), 2, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345"), 2, 1, S("abcde3")); - test(S("abcdefghij"), 5, 6, S("12345"), 2, 2, S("abcde34")); +TEST_CONSTEXPR_CXX20 bool test31() { + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 10, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 11, S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 1, S("abcde0j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 2, S("abcde0j")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 20, 0, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 20, 1, S("abcdej")); + test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 5, S(""), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S(""), 0, 1, S("abcde")); + test(S("abcdefghij"), 5, 5, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 5, S("12345"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, S("12345"), 0, 2, S("abcde12")); + test(S("abcdefghij"), 5, 5, S("12345"), 0, 4, S("abcde1234")); + test(S("abcdefghij"), 5, 5, S("12345"), 0, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, S("12345"), 0, 6, S("abcde12345")); + test(S("abcdefghij"), 5, 5, S("12345"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 5, S("12345"), 1, 2, S("abcde23")); + test(S("abcdefghij"), 5, 5, S("12345"), 1, 3, S("abcde234")); + test(S("abcdefghij"), 5, 5, S("12345"), 1, 4, S("abcde2345")); + test(S("abcdefghij"), 5, 5, S("12345"), 1, 5, S("abcde2345")); + test(S("abcdefghij"), 5, 5, S("12345"), 2, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345"), 2, 1, S("abcde3")); + test(S("abcdefghij"), 5, 5, S("12345"), 2, 2, S("abcde34")); + test(S("abcdefghij"), 5, 5, S("12345"), 2, 3, S("abcde345")); + test(S("abcdefghij"), 5, 5, S("12345"), 2, 4, S("abcde345")); + test(S("abcdefghij"), 5, 5, S("12345"), 4, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345"), 4, 1, S("abcde5")); + test(S("abcdefghij"), 5, 5, S("12345"), 4, 2, S("abcde5")); + test(S("abcdefghij"), 5, 5, S("12345"), 5, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345"), 5, 1, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 4, S("abcde2345")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 1, S("abcde6")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 2, S("abcde67")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 4, S("abcde6789")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 5, S("abcde67890")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 6, S("abcde67890")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 1, S("abcde0")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 2, S("abcde0")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 10, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 10, 1, S("abcde")); + test(S("abcdefghij"), 5, 5, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 5, 6, S(""), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S(""), 0, 1, S("abcde")); + test(S("abcdefghij"), 5, 6, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 5, 6, S("12345"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, S("12345"), 0, 2, S("abcde12")); + test(S("abcdefghij"), 5, 6, S("12345"), 0, 4, S("abcde1234")); + test(S("abcdefghij"), 5, 6, S("12345"), 0, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 6, S("12345"), 0, 6, S("abcde12345")); + test(S("abcdefghij"), 5, 6, S("12345"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 6, S("12345"), 1, 2, S("abcde23")); + test(S("abcdefghij"), 5, 6, S("12345"), 1, 3, S("abcde234")); + test(S("abcdefghij"), 5, 6, S("12345"), 1, 4, S("abcde2345")); + test(S("abcdefghij"), 5, 6, S("12345"), 1, 5, S("abcde2345")); + test(S("abcdefghij"), 5, 6, S("12345"), 2, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345"), 2, 1, S("abcde3")); + test(S("abcdefghij"), 5, 6, S("12345"), 2, 2, S("abcde34")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test32() -{ - test(S("abcdefghij"), 5, 6, S("12345"), 2, 3, S("abcde345")); - test(S("abcdefghij"), 5, 6, S("12345"), 2, 4, S("abcde345")); - test(S("abcdefghij"), 5, 6, S("12345"), 4, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345"), 4, 1, S("abcde5")); - test(S("abcdefghij"), 5, 6, S("12345"), 4, 2, S("abcde5")); - test(S("abcdefghij"), 5, 6, S("12345"), 5, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345"), 5, 1, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 11, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 4, S("abcde2345")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 8, S("abcde23456789")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 9, S("abcde234567890")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 10, S("abcde234567890")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 1, S("abcde6")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 2, S("abcde67")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 4, S("abcde6789")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 5, S("abcde67890")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 6, S("abcde67890")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 1, S("abcde0")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 2, S("abcde0")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 10, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 10, 1, S("abcde")); - test(S("abcdefghij"), 5, 6, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 1, S("abcde2")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 9, S("abcde234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 1, S("abcde1")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 5, S("abcde12345")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 9, S("abcde123456789")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 10, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 11, S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 1, S("abcde0")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 2, S("abcde0")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 20, 0, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 20, 1, S("abcde")); - test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 9, 0, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 9, 0, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, S("12345"), 0, 2, S("abcdefghi12j")); - test(S("abcdefghij"), 9, 0, S("12345"), 0, 4, S("abcdefghi1234j")); - test(S("abcdefghij"), 9, 0, S("12345"), 0, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, S("12345"), 0, 6, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, 0, S("12345"), 1, 2, S("abcdefghi23j")); - test(S("abcdefghij"), 9, 0, S("12345"), 1, 3, S("abcdefghi234j")); - test(S("abcdefghij"), 9, 0, S("12345"), 1, 4, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, 0, S("12345"), 1, 5, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, 0, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345"), 2, 1, S("abcdefghi3j")); - test(S("abcdefghij"), 9, 0, S("12345"), 2, 2, S("abcdefghi34j")); - test(S("abcdefghij"), 9, 0, S("12345"), 2, 3, S("abcdefghi345j")); - test(S("abcdefghij"), 9, 0, S("12345"), 2, 4, S("abcdefghi345j")); - test(S("abcdefghij"), 9, 0, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345"), 4, 1, S("abcdefghi5j")); - test(S("abcdefghij"), 9, 0, S("12345"), 4, 2, S("abcdefghi5j")); - test(S("abcdefghij"), 9, 0, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 11, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 4, S("abcdefghi2345j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 8, S("abcdefghi23456789j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 9, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 10, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 1, S("abcdefghi6j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 2, S("abcdefghi67j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 4, S("abcdefghi6789j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 5, S("abcdefghi67890j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 6, S("abcdefghi67890j")); +TEST_CONSTEXPR_CXX20 bool test32() { + test(S("abcdefghij"), 5, 6, S("12345"), 2, 3, S("abcde345")); + test(S("abcdefghij"), 5, 6, S("12345"), 2, 4, S("abcde345")); + test(S("abcdefghij"), 5, 6, S("12345"), 4, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345"), 4, 1, S("abcde5")); + test(S("abcdefghij"), 5, 6, S("12345"), 4, 2, S("abcde5")); + test(S("abcdefghij"), 5, 6, S("12345"), 5, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345"), 5, 1, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 11, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 4, S("abcde2345")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 8, S("abcde23456789")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 9, S("abcde234567890")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 10, S("abcde234567890")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 1, S("abcde6")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 2, S("abcde67")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 4, S("abcde6789")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 5, S("abcde67890")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 6, S("abcde67890")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 1, S("abcde0")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 2, S("abcde0")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 10, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 10, 1, S("abcde")); + test(S("abcdefghij"), 5, 6, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 1, S("abcde2")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 9, S("abcde234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 1, S("abcde1")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 5, S("abcde12345")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 9, S("abcde123456789")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 10, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 11, S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 1, S("abcde0")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 2, S("abcde0")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 20, 0, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 20, 1, S("abcde")); + test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 9, 0, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 9, 0, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, S("12345"), 0, 2, S("abcdefghi12j")); + test(S("abcdefghij"), 9, 0, S("12345"), 0, 4, S("abcdefghi1234j")); + test(S("abcdefghij"), 9, 0, S("12345"), 0, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, S("12345"), 0, 6, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, 0, S("12345"), 1, 2, S("abcdefghi23j")); + test(S("abcdefghij"), 9, 0, S("12345"), 1, 3, S("abcdefghi234j")); + test(S("abcdefghij"), 9, 0, S("12345"), 1, 4, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, 0, S("12345"), 1, 5, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, 0, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345"), 2, 1, S("abcdefghi3j")); + test(S("abcdefghij"), 9, 0, S("12345"), 2, 2, S("abcdefghi34j")); + test(S("abcdefghij"), 9, 0, S("12345"), 2, 3, S("abcdefghi345j")); + test(S("abcdefghij"), 9, 0, S("12345"), 2, 4, S("abcdefghi345j")); + test(S("abcdefghij"), 9, 0, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345"), 4, 1, S("abcdefghi5j")); + test(S("abcdefghij"), 9, 0, S("12345"), 4, 2, S("abcdefghi5j")); + test(S("abcdefghij"), 9, 0, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 11, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 4, S("abcdefghi2345j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 8, S("abcdefghi23456789j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 9, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 10, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 1, S("abcdefghi6j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 2, S("abcdefghi67j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 4, S("abcdefghi6789j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 5, S("abcdefghi67890j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 6, S("abcdefghi67890j")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test33() -{ - test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 1, S("abcdefghi0j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 2, S("abcdefghi0j")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 1, S("abcdefghi2j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 1, S("abcdefghi1j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 5, S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 1, S("abcdefghi0j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 2, S("abcdefghi0j")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 9, 1, S(""), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S(""), 0, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 9, 1, S("12345"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, S("12345"), 0, 2, S("abcdefghi12")); - test(S("abcdefghij"), 9, 1, S("12345"), 0, 4, S("abcdefghi1234")); - test(S("abcdefghij"), 9, 1, S("12345"), 0, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, S("12345"), 0, 6, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, S("12345"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 1, S("12345"), 1, 2, S("abcdefghi23")); - test(S("abcdefghij"), 9, 1, S("12345"), 1, 3, S("abcdefghi234")); - test(S("abcdefghij"), 9, 1, S("12345"), 1, 4, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 1, S("12345"), 1, 5, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 1, S("12345"), 2, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345"), 2, 1, S("abcdefghi3")); - test(S("abcdefghij"), 9, 1, S("12345"), 2, 2, S("abcdefghi34")); - test(S("abcdefghij"), 9, 1, S("12345"), 2, 3, S("abcdefghi345")); - test(S("abcdefghij"), 9, 1, S("12345"), 2, 4, S("abcdefghi345")); - test(S("abcdefghij"), 9, 1, S("12345"), 4, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345"), 4, 1, S("abcdefghi5")); - test(S("abcdefghij"), 9, 1, S("12345"), 4, 2, S("abcdefghi5")); - test(S("abcdefghij"), 9, 1, S("12345"), 5, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345"), 5, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 11, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 4, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 8, S("abcdefghi23456789")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 9, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 10, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 1, S("abcdefghi6")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 2, S("abcdefghi67")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 4, S("abcdefghi6789")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 5, S("abcdefghi67890")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 6, S("abcdefghi67890")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 1, S("abcdefghi0")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 2, S("abcdefghi0")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 10, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 10, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 9, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 1, S("abcdefghi0")); +TEST_CONSTEXPR_CXX20 bool test33() { + test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 1, S("abcdefghi0j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 2, S("abcdefghi0j")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 1, S("abcdefghi2j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 1, S("abcdefghi1j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 5, S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 1, S("abcdefghi0j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 2, S("abcdefghi0j")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 9, 1, S(""), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S(""), 0, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 9, 1, S("12345"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, S("12345"), 0, 2, S("abcdefghi12")); + test(S("abcdefghij"), 9, 1, S("12345"), 0, 4, S("abcdefghi1234")); + test(S("abcdefghij"), 9, 1, S("12345"), 0, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, S("12345"), 0, 6, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, S("12345"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 1, S("12345"), 1, 2, S("abcdefghi23")); + test(S("abcdefghij"), 9, 1, S("12345"), 1, 3, S("abcdefghi234")); + test(S("abcdefghij"), 9, 1, S("12345"), 1, 4, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 1, S("12345"), 1, 5, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 1, S("12345"), 2, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345"), 2, 1, S("abcdefghi3")); + test(S("abcdefghij"), 9, 1, S("12345"), 2, 2, S("abcdefghi34")); + test(S("abcdefghij"), 9, 1, S("12345"), 2, 3, S("abcdefghi345")); + test(S("abcdefghij"), 9, 1, S("12345"), 2, 4, S("abcdefghi345")); + test(S("abcdefghij"), 9, 1, S("12345"), 4, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345"), 4, 1, S("abcdefghi5")); + test(S("abcdefghij"), 9, 1, S("12345"), 4, 2, S("abcdefghi5")); + test(S("abcdefghij"), 9, 1, S("12345"), 5, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345"), 5, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 11, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 4, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 8, S("abcdefghi23456789")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 9, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 10, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 1, S("abcdefghi6")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 2, S("abcdefghi67")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 4, S("abcdefghi6789")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 5, S("abcdefghi67890")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 6, S("abcdefghi67890")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 1, S("abcdefghi0")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 2, S("abcdefghi0")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 10, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 10, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 9, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 1, S("abcdefghi0")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test34() -{ - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 2, S("abcdefghi0")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 9, 2, S(""), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S(""), 0, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 9, 2, S("12345"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, S("12345"), 0, 2, S("abcdefghi12")); - test(S("abcdefghij"), 9, 2, S("12345"), 0, 4, S("abcdefghi1234")); - test(S("abcdefghij"), 9, 2, S("12345"), 0, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, S("12345"), 0, 6, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, S("12345"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 2, S("12345"), 1, 2, S("abcdefghi23")); - test(S("abcdefghij"), 9, 2, S("12345"), 1, 3, S("abcdefghi234")); - test(S("abcdefghij"), 9, 2, S("12345"), 1, 4, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 2, S("12345"), 1, 5, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 2, S("12345"), 2, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345"), 2, 1, S("abcdefghi3")); - test(S("abcdefghij"), 9, 2, S("12345"), 2, 2, S("abcdefghi34")); - test(S("abcdefghij"), 9, 2, S("12345"), 2, 3, S("abcdefghi345")); - test(S("abcdefghij"), 9, 2, S("12345"), 2, 4, S("abcdefghi345")); - test(S("abcdefghij"), 9, 2, S("12345"), 4, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345"), 4, 1, S("abcdefghi5")); - test(S("abcdefghij"), 9, 2, S("12345"), 4, 2, S("abcdefghi5")); - test(S("abcdefghij"), 9, 2, S("12345"), 5, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345"), 5, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 11, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 4, S("abcdefghi2345")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 8, S("abcdefghi23456789")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 9, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 10, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 1, S("abcdefghi6")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 2, S("abcdefghi67")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 4, S("abcdefghi6789")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 5, S("abcdefghi67890")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 6, S("abcdefghi67890")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 1, S("abcdefghi0")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 2, S("abcdefghi0")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 10, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 10, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 1, S("abcdefghi2")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 9, S("abcdefghi234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 1, S("abcdefghi1")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 5, S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 9, S("abcdefghi123456789")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 1, S("abcdefghi0")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 2, S("abcdefghi0")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 20, 0, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 20, 1, S("abcdefghi")); - test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 10, 0, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 10, 0, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, S("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, 0, S("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, 0, S("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, S("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 0, S("12345"), 1, 2, S("abcdefghij23")); - test(S("abcdefghij"), 10, 0, S("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghij"), 10, 0, S("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 0, S("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 0, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghij"), 10, 0, S("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghij"), 10, 0, S("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghij"), 10, 0, S("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghij"), 10, 0, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345"), 4, 1, S("abcdefghij5")); +TEST_CONSTEXPR_CXX20 bool test34() { + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 2, S("abcdefghi0")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 9, 2, S(""), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S(""), 0, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 9, 2, S("12345"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, S("12345"), 0, 2, S("abcdefghi12")); + test(S("abcdefghij"), 9, 2, S("12345"), 0, 4, S("abcdefghi1234")); + test(S("abcdefghij"), 9, 2, S("12345"), 0, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, S("12345"), 0, 6, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, S("12345"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 2, S("12345"), 1, 2, S("abcdefghi23")); + test(S("abcdefghij"), 9, 2, S("12345"), 1, 3, S("abcdefghi234")); + test(S("abcdefghij"), 9, 2, S("12345"), 1, 4, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 2, S("12345"), 1, 5, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 2, S("12345"), 2, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345"), 2, 1, S("abcdefghi3")); + test(S("abcdefghij"), 9, 2, S("12345"), 2, 2, S("abcdefghi34")); + test(S("abcdefghij"), 9, 2, S("12345"), 2, 3, S("abcdefghi345")); + test(S("abcdefghij"), 9, 2, S("12345"), 2, 4, S("abcdefghi345")); + test(S("abcdefghij"), 9, 2, S("12345"), 4, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345"), 4, 1, S("abcdefghi5")); + test(S("abcdefghij"), 9, 2, S("12345"), 4, 2, S("abcdefghi5")); + test(S("abcdefghij"), 9, 2, S("12345"), 5, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345"), 5, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 11, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 4, S("abcdefghi2345")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 8, S("abcdefghi23456789")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 9, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 10, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 1, S("abcdefghi6")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 2, S("abcdefghi67")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 4, S("abcdefghi6789")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 5, S("abcdefghi67890")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 6, S("abcdefghi67890")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 1, S("abcdefghi0")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 2, S("abcdefghi0")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 10, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 10, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 1, S("abcdefghi2")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 9, S("abcdefghi234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 1, S("abcdefghi1")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 5, S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 9, S("abcdefghi123456789")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 1, S("abcdefghi0")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 2, S("abcdefghi0")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 20, 0, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 20, 1, S("abcdefghi")); + test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 10, 0, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 10, 0, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, S("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, 0, S("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, 0, S("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, S("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 0, S("12345"), 1, 2, S("abcdefghij23")); + test(S("abcdefghij"), 10, 0, S("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghij"), 10, 0, S("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 0, S("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 0, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghij"), 10, 0, S("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghij"), 10, 0, S("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghij"), 10, 0, S("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghij"), 10, 0, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345"), 4, 1, S("abcdefghij5")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test35() -{ - test(S("abcdefghij"), 10, 0, S("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghij"), 10, 0, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 4, S("abcdefghij6789")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 10, 1, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 10, 1, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, S("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghij"), 10, 1, S("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghij"), 10, 1, S("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, S("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 1, S("12345"), 1, 2, S("abcdefghij23")); - test(S("abcdefghij"), 10, 1, S("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghij"), 10, 1, S("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 1, S("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 1, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghij"), 10, 1, S("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghij"), 10, 1, S("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghij"), 10, 1, S("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghij"), 10, 1, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345"), 4, 1, S("abcdefghij5")); - test(S("abcdefghij"), 10, 1, S("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghij"), 10, 1, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 4, S("abcdefghij6789")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 10, 0, S("abcdefghij")); +TEST_CONSTEXPR_CXX20 bool test35() { + test(S("abcdefghij"), 10, 0, S("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghij"), 10, 0, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 4, S("abcdefghij6789")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 10, 1, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 10, 1, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, S("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghij"), 10, 1, S("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghij"), 10, 1, S("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, S("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 1, S("12345"), 1, 2, S("abcdefghij23")); + test(S("abcdefghij"), 10, 1, S("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghij"), 10, 1, S("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 1, S("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 1, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghij"), 10, 1, S("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghij"), 10, 1, S("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghij"), 10, 1, S("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghij"), 10, 1, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345"), 4, 1, S("abcdefghij5")); + test(S("abcdefghij"), 10, 1, S("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghij"), 10, 1, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 4, S("abcdefghij6789")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 10, 0, S("abcdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test36() -{ - test(S("abcdefghij"), 10, 1, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S(""), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S(""), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 0, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 0, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 0, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 0, 6, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 1, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 1, 3, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 1, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 1, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 2, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 2, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 2, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 2, 3, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 2, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 4, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 4, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 4, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 5, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 5, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 11, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 8, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 4, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 6, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 10, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 10, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 21, 0, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test36() { + test(S("abcdefghij"), 10, 1, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S(""), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S(""), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 0, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 0, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 0, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 0, 6, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 1, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 1, 3, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 1, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 1, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 2, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 2, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 2, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 2, 3, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 2, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 4, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 4, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 4, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 5, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 5, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 11, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 8, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 4, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 6, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 10, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 10, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test37() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 2, S("12abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 2, S("23abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 3, S("234abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 1, S("3abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 2, S("34abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 3, S("345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 4, S("345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 1, S("5abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 2, S("5abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 1, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 2, S("12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 4, S("1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 6, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 1, S("2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 2, S("23bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 3, S("234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 4, S("2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 5, S("2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 1, S("3bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 2, S("34bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 3, S("345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 4, S("345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 1, S("5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 2, S("5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 5, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 5, 1, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 6, 0, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test37() { + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 2, S("12abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 2, S("23abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 3, S("234abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 1, S("3abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 2, S("34abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 3, S("345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 4, S("345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 1, S("5abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 2, S("5abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 1, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 2, S("12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 4, S("1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 6, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 1, S("2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 2, S("23bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 3, S("234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 4, S("2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 5, S("2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 1, S("3bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 2, S("34bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 3, S("345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 4, S("345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 1, S("5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 2, S("5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 5, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 5, 1, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 6, 0, S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test38() -{ - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 9, S("123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 1, S("2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 4, S("2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 8, S("23456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 10, S("234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 1, S("6bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 2, S("67bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 4, S("6789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 5, S("67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 6, S("67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 1, S("0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 2, S("0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 10, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 10, 1, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 20, 0, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 20, 1, S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 1, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 2, S("12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 4, S("1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 6, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 1, S("2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 2, S("23klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 3, S("234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 4, S("2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 5, S("2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 1, S("3klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 2, S("34klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 3, S("345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 4, S("345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 1, S("5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 2, S("5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 5, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 5, 1, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 9, S("123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 11, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 1, S("2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 4, S("2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 8, S("23456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 9, S("234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 10, S("234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 1, S("6klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 2, S("67klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 4, S("6789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 5, S("67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 6, S("67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 1, S("0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 2, S("0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 10, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 10, 1, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 1, S("1klmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test38() { + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 9, S("123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 1, S("2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 4, S("2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 8, S("23456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 10, S("234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 1, S("6bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 2, S("67bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 4, S("6789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 5, S("67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 6, S("67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 1, S("0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 2, S("0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 10, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 10, 1, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 20, 0, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 20, 1, S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 1, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 2, S("12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 4, S("1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 6, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 1, S("2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 2, S("23klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 3, S("234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 4, S("2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 5, S("2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 1, S("3klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 2, S("34klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 3, S("345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 4, S("345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 1, S("5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 2, S("5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 5, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 5, 1, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 9, S("123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 11, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 1, S("2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 4, S("2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 8, S("23456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 9, S("234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 10, S("234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 1, S("6klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 2, S("67klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 4, S("6789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 5, S("67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 6, S("67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 1, S("0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 2, S("0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 10, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 10, 1, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 1, S("1klmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test39() -{ - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 19, S("1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 20, S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 21, S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 1, S("2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 9, S("234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 18, S("234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 19, S("2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 20, S("2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 1, S("1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 5, S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 9, S("123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 10, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 11, S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 1, S("0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 2, S("0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 20, 0, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 20, 1, S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 1, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 2, S("12t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 4, S("1234t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 6, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 1, S("2t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 2, S("23t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 3, S("234t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 4, S("2345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 5, S("2345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 1, S("3t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 2, S("34t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 3, S("345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 4, S("345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 1, S("5t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 2, S("5t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 5, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 5, 1, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 9, S("123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 11, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 1, S("2t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 4, S("2345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 8, S("23456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 9, S("234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 10, S("234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 1, S("6t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 2, S("67t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 4, S("6789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 5, S("67890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 6, S("67890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 1, S("0t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 2, S("0t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 10, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 10, 1, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 19, S("1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 20, S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 21, S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 1, S("2t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 9, S("234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 18, S("234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 19, S("2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 20, S("2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 1, S("1t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 5, S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 9, S("123456789t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 10, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 11, S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 1, S("0t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 2, S("0t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 20, 0, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 20, 1, S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 0, S("")); +TEST_CONSTEXPR_CXX20 bool test39() { + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 19, S("1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 20, S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 21, S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 1, S("2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 9, S("234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 18, S("234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 19, S("2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 20, S("2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 1, S("1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 5, S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 9, S("123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 10, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 11, S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 1, S("0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 2, S("0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 20, 0, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 20, 1, S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 1, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 2, S("12t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 4, S("1234t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 6, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 1, S("2t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 2, S("23t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 3, S("234t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 4, S("2345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 5, S("2345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 1, S("3t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 2, S("34t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 3, S("345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 4, S("345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 1, S("5t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 2, S("5t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 5, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 5, 1, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 9, S("123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 11, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 1, S("2t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 4, S("2345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 8, S("23456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 9, S("234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 10, S("234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 1, S("6t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 2, S("67t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 4, S("6789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 5, S("67890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 6, S("67890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 1, S("0t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 2, S("0t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 10, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 10, 1, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 19, S("1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 20, S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 21, S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 1, S("2t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 9, S("234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 18, S("234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 19, S("2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 20, S("2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 1, S("1t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 5, S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 9, S("123456789t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 10, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 11, S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 1, S("0t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 2, S("0t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 20, 0, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 20, 1, S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 0, S("")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test40() -{ - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 2, S("12")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 4, S("1234")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 6, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 2, S("23")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 3, S("234")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 4, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 5, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 1, S("3")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 2, S("34")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 3, S("345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 4, S("345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 1, S("5")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 2, S("5")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 5, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 5, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 11, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 4, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 8, S("23456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 9, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 10, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 1, S("6")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 2, S("67")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 4, S("6789")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 5, S("67890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 6, S("67890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 1, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 2, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 10, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 10, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 1, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 2, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 20, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 20, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 2, S("12")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 4, S("1234")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 6, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 2, S("23")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 3, S("234")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 4, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 5, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 1, S("3")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 2, S("34")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 3, S("345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 4, S("345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 1, S("5")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 2, S("5")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 5, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 5, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 9, S("123456789")); +TEST_CONSTEXPR_CXX20 bool test40() { + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 2, S("12")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 4, S("1234")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 6, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 2, S("23")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 3, S("234")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 4, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 5, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 1, S("3")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 2, S("34")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 3, S("345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 4, S("345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 1, S("5")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 2, S("5")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 5, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 5, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 11, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 4, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 8, S("23456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 9, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 10, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 1, S("6")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 2, S("67")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 4, S("6789")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 5, S("67890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 6, S("67890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 1, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 2, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 10, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 10, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 1, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 2, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 20, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 20, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 2, S("12")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 4, S("1234")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 6, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 2, S("23")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 3, S("234")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 4, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 5, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 1, S("3")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 2, S("34")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 3, S("345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 4, S("345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 1, S("5")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 2, S("5")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 5, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 5, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 9, S("123456789")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test41() -{ - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 11, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 4, S("2345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 8, S("23456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 9, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 10, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 1, S("6")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 2, S("67")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 4, S("6789")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 5, S("67890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 6, S("67890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 1, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 2, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 10, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 10, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 19, S("1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 20, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 21, S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 1, S("2")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 9, S("234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 18, S("234567890123456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 19, S("2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 20, S("2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 1, S("1")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 5, S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 9, S("123456789")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 10, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 11, S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 1, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 2, S("0")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 20, 0, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 20, 1, S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test41() { + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 11, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 4, S("2345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 8, S("23456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 9, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 10, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 1, S("6")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 2, S("67")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 4, S("6789")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 5, S("67890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 6, S("67890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 1, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 2, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 10, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 10, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 19, S("1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 20, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 21, S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 1, S("2")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 9, S("234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 18, S("234567890123456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 19, S("2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 20, S("2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 1, S("1")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 5, S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 9, S("123456789")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 10, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 11, S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 1, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 2, S("0")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 20, 0, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 20, 1, S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test42() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 1, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 2, S("a12cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 4, S("a1234cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 6, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 1, S("a2cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 2, S("a23cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 3, S("a234cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 4, S("a2345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 5, S("a2345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 1, S("a3cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 2, S("a34cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 3, S("a345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 4, S("a345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 1, S("a5cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 2, S("a5cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 5, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 5, 1, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 9, S("a123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 1, S("a2cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 4, S("a2345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 8, S("a23456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 10, S("a234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 1, S("a6cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 2, S("a67cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 4, S("a6789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 5, S("a67890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 6, S("a67890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 1, S("a0cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 2, S("a0cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 10, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 10, 1, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 20, 0, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 20, 1, S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 1, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 2, S("a12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 4, S("a1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 5, S("a12345klmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test42() { + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 1, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 2, S("a12cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 4, S("a1234cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 6, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 1, S("a2cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 2, S("a23cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 3, S("a234cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 4, S("a2345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 5, S("a2345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 1, S("a3cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 2, S("a34cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 3, S("a345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 4, S("a345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 1, S("a5cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 2, S("a5cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 5, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 5, 1, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 9, S("a123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 1, S("a2cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 4, S("a2345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 8, S("a23456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 10, S("a234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 1, S("a6cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 2, S("a67cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 4, S("a6789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 5, S("a67890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 6, S("a67890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 1, S("a0cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 2, S("a0cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 10, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 10, 1, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 20, 0, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 20, 1, S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 1, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 2, S("a12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 4, S("a1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 5, S("a12345klmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test43() -{ - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 6, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 1, S("a2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 2, S("a23klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 3, S("a234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 4, S("a2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 5, S("a2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 1, S("a3klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 2, S("a34klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 3, S("a345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 4, S("a345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 1, S("a5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 2, S("a5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 5, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 5, 1, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 9, S("a123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 11, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 1, S("a2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 4, S("a2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 8, S("a23456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 9, S("a234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 10, S("a234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 1, S("a6klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 2, S("a67klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 4, S("a6789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 5, S("a67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 6, S("a67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 1, S("a0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 2, S("a0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 10, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 10, 1, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 19, S("a1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 20, S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 21, S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 1, S("a2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 9, S("a234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 18, S("a234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 19, S("a2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 20, S("a2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 1, S("a1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 5, S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 9, S("a123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 10, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 11, S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 1, S("a0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 2, S("a0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 20, 0, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 20, 1, S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 1, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 2, S("a12t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 4, S("a1234t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 6, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 1, S("a2t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 2, S("a23t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 3, S("a234t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 4, S("a2345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 5, S("a2345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 1, S("a3t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 2, S("a34t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 3, S("a345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 4, S("a345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 1, S("a5t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 2, S("a5t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 5, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 5, 1, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 9, S("a123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 11, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 1, S("a2t")); +TEST_CONSTEXPR_CXX20 bool test43() { + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 6, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 1, S("a2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 2, S("a23klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 3, S("a234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 4, S("a2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 5, S("a2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 1, S("a3klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 2, S("a34klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 3, S("a345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 4, S("a345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 1, S("a5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 2, S("a5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 5, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 5, 1, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 9, S("a123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 11, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 1, S("a2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 4, S("a2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 8, S("a23456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 9, S("a234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 10, S("a234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 1, S("a6klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 2, S("a67klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 4, S("a6789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 5, S("a67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 6, S("a67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 1, S("a0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 2, S("a0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 10, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 10, 1, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 19, S("a1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 20, S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 21, S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 1, S("a2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 9, S("a234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 18, S("a234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 19, S("a2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 20, S("a2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 1, S("a1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 5, S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 9, S("a123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 10, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 11, S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 1, S("a0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 2, S("a0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 20, 0, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 20, 1, S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 1, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 2, S("a12t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 4, S("a1234t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 6, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 1, S("a2t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 2, S("a23t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 3, S("a234t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 4, S("a2345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 5, S("a2345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 1, S("a3t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 2, S("a34t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 3, S("a345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 4, S("a345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 1, S("a5t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 2, S("a5t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 5, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 5, 1, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 9, S("a123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 11, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 1, S("a2t")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test44() -{ - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 4, S("a2345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 8, S("a23456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 9, S("a234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 10, S("a234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 1, S("a6t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 2, S("a67t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 4, S("a6789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 5, S("a67890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 6, S("a67890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 1, S("a0t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 2, S("a0t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 10, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 10, 1, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 19, S("a1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 20, S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 21, S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 1, S("a2t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 9, S("a234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 18, S("a234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 19, S("a2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 20, S("a2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 1, S("a1t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 5, S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 9, S("a123456789t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 10, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 11, S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 1, S("a0t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 2, S("a0t")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 20, 0, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 20, 1, S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 2, S("a12")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 4, S("a1234")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 6, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 2, S("a23")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 3, S("a234")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 4, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 5, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 1, S("a3")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 2, S("a34")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 3, S("a345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 4, S("a345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 1, S("a5")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 2, S("a5")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 5, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 5, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 11, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 4, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 8, S("a23456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 9, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 10, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 1, S("a6")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 2, S("a67")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 4, S("a6789")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 5, S("a67890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 6, S("a67890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 1, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 2, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 10, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 10, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 18, S("a234567890123456789")); +TEST_CONSTEXPR_CXX20 bool test44() { + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 4, S("a2345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 8, S("a23456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 9, S("a234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 10, S("a234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 1, S("a6t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 2, S("a67t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 4, S("a6789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 5, S("a67890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 6, S("a67890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 1, S("a0t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 2, S("a0t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 10, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 10, 1, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 19, S("a1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 20, S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 21, S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 1, S("a2t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 9, S("a234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 18, S("a234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 19, S("a2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 20, S("a2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 1, S("a1t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 5, S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 9, S("a123456789t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 10, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 11, S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 1, S("a0t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 2, S("a0t")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 20, 0, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 20, 1, S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 2, S("a12")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 4, S("a1234")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 6, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 2, S("a23")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 3, S("a234")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 4, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 5, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 1, S("a3")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 2, S("a34")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 3, S("a345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 4, S("a345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 1, S("a5")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 2, S("a5")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 5, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 5, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 11, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 4, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 8, S("a23456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 9, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 10, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 1, S("a6")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 2, S("a67")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 4, S("a6789")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 5, S("a67890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 6, S("a67890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 1, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 2, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 10, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 10, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 18, S("a234567890123456789")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test45() -{ - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 1, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 2, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 20, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 20, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 2, S("a12")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 4, S("a1234")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 6, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 2, S("a23")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 3, S("a234")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 4, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 5, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 1, S("a3")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 2, S("a34")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 3, S("a345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 4, S("a345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 1, S("a5")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 2, S("a5")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 5, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 5, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 11, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 4, S("a2345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 8, S("a23456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 9, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 10, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 1, S("a6")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 2, S("a67")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 4, S("a6789")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 5, S("a67890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 6, S("a67890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 1, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 2, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 10, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 10, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 1, S("a2")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 9, S("a234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 18, S("a234567890123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 1, S("a1")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 5, S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 9, S("a123456789")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 10, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 11, S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 1, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 2, S("a0")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 20, 0, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 20, 1, S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 2, S("abcdefghij12klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 2, S("abcdefghij23klmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test45() { + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 1, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 2, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 20, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 20, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 2, S("a12")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 4, S("a1234")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 6, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 2, S("a23")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 3, S("a234")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 4, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 5, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 1, S("a3")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 2, S("a34")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 3, S("a345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 4, S("a345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 1, S("a5")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 2, S("a5")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 5, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 5, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 11, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 4, S("a2345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 8, S("a23456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 9, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 10, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 1, S("a6")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 2, S("a67")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 4, S("a6789")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 5, S("a67890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 6, S("a67890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 1, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 2, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 10, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 10, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 1, S("a2")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 9, S("a234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 18, S("a234567890123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 1, S("a1")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 5, S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 9, S("a123456789")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 10, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 11, S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 1, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 2, S("a0")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 20, 0, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 20, 1, S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 2, S("abcdefghij12klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 2, S("abcdefghij23klmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test46() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 3, S("abcdefghij234klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 1, S("abcdefghij3klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 2, S("abcdefghij34klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 3, S("abcdefghij345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 4, S("abcdefghij345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 1, S("abcdefghij5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 2, S("abcdefghij5klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 1, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 2, S("abcdefghij12lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 4, S("abcdefghij1234lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 6, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 1, S("abcdefghij2lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 2, S("abcdefghij23lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 3, S("abcdefghij234lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 4, S("abcdefghij2345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 5, S("abcdefghij2345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 1, S("abcdefghij3lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 2, S("abcdefghij34lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 3, S("abcdefghij345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 4, S("abcdefghij345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 1, S("abcdefghij5lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 2, S("abcdefghij5lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 5, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 5, 1, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 9, S("abcdefghij123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 11, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 1, S("abcdefghij2lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 4, S("abcdefghij2345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 8, S("abcdefghij23456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 10, S("abcdefghij234567890lmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test46() { + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 3, S("abcdefghij234klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 1, S("abcdefghij3klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 2, S("abcdefghij34klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 3, S("abcdefghij345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 4, S("abcdefghij345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 1, S("abcdefghij5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 2, S("abcdefghij5klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 0, + S("12345678901234567890"), + 0, + 20, + S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), + 10, + 0, + S("12345678901234567890"), + 0, + 21, + S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 1, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 2, S("abcdefghij12lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 4, S("abcdefghij1234lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 6, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 1, S("abcdefghij2lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 2, S("abcdefghij23lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 3, S("abcdefghij234lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 4, S("abcdefghij2345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 5, S("abcdefghij2345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 1, S("abcdefghij3lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 2, S("abcdefghij34lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 3, S("abcdefghij345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 4, S("abcdefghij345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 1, S("abcdefghij5lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 2, S("abcdefghij5lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 5, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 5, 1, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 9, S("abcdefghij123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 11, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 1, S("abcdefghij2lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 4, S("abcdefghij2345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 8, S("abcdefghij23456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 10, S("abcdefghij234567890lmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test47() -{ - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 1, S("abcdefghij6lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 2, S("abcdefghij67lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 4, S("abcdefghij6789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 5, S("abcdefghij67890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 6, S("abcdefghij67890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 1, S("abcdefghij0lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 2, S("abcdefghij0lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 10, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 10, 1, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 1, S("abcdefghij2lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 1, S("abcdefghij1lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 5, S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 9, S("abcdefghij123456789lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 1, S("abcdefghij0lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 2, S("abcdefghij0lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 20, 0, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 20, 1, S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 1, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 2, S("abcdefghij12pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 4, S("abcdefghij1234pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 6, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 1, S("abcdefghij2pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 2, S("abcdefghij23pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 3, S("abcdefghij234pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 4, S("abcdefghij2345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 5, S("abcdefghij2345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 1, S("abcdefghij3pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 2, S("abcdefghij34pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 3, S("abcdefghij345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 4, S("abcdefghij345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 1, S("abcdefghij5pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 2, S("abcdefghij5pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 5, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 5, 1, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 9, S("abcdefghij123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 11, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 1, S("abcdefghij2pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 4, S("abcdefghij2345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 8, S("abcdefghij23456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 9, S("abcdefghij234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 10, S("abcdefghij234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 1, S("abcdefghij6pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 2, S("abcdefghij67pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 4, S("abcdefghij6789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 5, S("abcdefghij67890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 6, S("abcdefghij67890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 1, S("abcdefghij0pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 2, S("abcdefghij0pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 10, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 10, 1, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 1, S("abcdefghij1pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 1, S("abcdefghij2pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 9, S("abcdefghij234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 1, S("abcdefghij1pqrst")); +TEST_CONSTEXPR_CXX20 bool test47() { + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 1, S("abcdefghij6lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 2, S("abcdefghij67lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 4, S("abcdefghij6789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 5, S("abcdefghij67890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 6, S("abcdefghij67890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 1, S("abcdefghij0lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 2, S("abcdefghij0lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 10, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 10, 1, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789lmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890lmnopqrst")); + test( + S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 1, S("abcdefghij2lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 1, S("abcdefghij1lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 5, S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 9, S("abcdefghij123456789lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 1, S("abcdefghij0lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 2, S("abcdefghij0lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 20, 0, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 20, 1, S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 1, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 2, S("abcdefghij12pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 4, S("abcdefghij1234pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 6, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 1, S("abcdefghij2pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 2, S("abcdefghij23pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 3, S("abcdefghij234pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 4, S("abcdefghij2345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 5, S("abcdefghij2345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 1, S("abcdefghij3pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 2, S("abcdefghij34pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 3, S("abcdefghij345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 4, S("abcdefghij345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 1, S("abcdefghij5pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 2, S("abcdefghij5pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 5, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 5, 1, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 9, S("abcdefghij123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 11, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 1, S("abcdefghij2pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 4, S("abcdefghij2345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 8, S("abcdefghij23456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 9, S("abcdefghij234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 10, S("abcdefghij234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 1, S("abcdefghij6pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 2, S("abcdefghij67pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 4, S("abcdefghij6789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 5, S("abcdefghij67890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 6, S("abcdefghij67890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 1, S("abcdefghij0pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 2, S("abcdefghij0pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 10, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 10, 1, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 1, S("abcdefghij1pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 1, S("abcdefghij2pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 9, S("abcdefghij234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 1, S("abcdefghij1pqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test48() -{ - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 5, S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 9, S("abcdefghij123456789pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 1, S("abcdefghij0pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 2, S("abcdefghij0pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 20, 0, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 20, 1, S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 1, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 2, S("abcdefghij12t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 4, S("abcdefghij1234t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 6, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 1, S("abcdefghij2t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 2, S("abcdefghij23t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 3, S("abcdefghij234t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 4, S("abcdefghij2345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 5, S("abcdefghij2345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 1, S("abcdefghij3t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 2, S("abcdefghij34t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 3, S("abcdefghij345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 4, S("abcdefghij345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 1, S("abcdefghij5t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 2, S("abcdefghij5t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 5, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 5, 1, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 9, S("abcdefghij123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 11, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 1, S("abcdefghij2t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 4, S("abcdefghij2345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 8, S("abcdefghij23456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 9, S("abcdefghij234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 10, S("abcdefghij234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 1, S("abcdefghij6t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 2, S("abcdefghij67t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 4, S("abcdefghij6789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 5, S("abcdefghij67890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 6, S("abcdefghij67890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 1, S("abcdefghij0t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 2, S("abcdefghij0t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 10, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 10, 1, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 1, S("abcdefghij2t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 9, S("abcdefghij234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 1, S("abcdefghij1t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 5, S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 9, S("abcdefghij123456789t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 1, S("abcdefghij0t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 2, S("abcdefghij0t")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 20, 0, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 20, 1, S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 2, S("abcdefghij23")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 0, S("abcdefghij")); +TEST_CONSTEXPR_CXX20 bool test48() { + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 5, S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 9, S("abcdefghij123456789pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 1, S("abcdefghij0pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 2, S("abcdefghij0pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 20, 0, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 20, 1, S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 1, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 2, S("abcdefghij12t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 4, S("abcdefghij1234t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 6, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 1, S("abcdefghij2t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 2, S("abcdefghij23t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 3, S("abcdefghij234t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 4, S("abcdefghij2345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 5, S("abcdefghij2345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 1, S("abcdefghij3t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 2, S("abcdefghij34t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 3, S("abcdefghij345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 4, S("abcdefghij345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 1, S("abcdefghij5t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 2, S("abcdefghij5t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 5, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 5, 1, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 9, S("abcdefghij123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 11, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 1, S("abcdefghij2t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 4, S("abcdefghij2345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 8, S("abcdefghij23456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 9, S("abcdefghij234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 10, S("abcdefghij234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 1, S("abcdefghij6t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 2, S("abcdefghij67t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 4, S("abcdefghij6789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 5, S("abcdefghij67890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 6, S("abcdefghij67890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 1, S("abcdefghij0t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 2, S("abcdefghij0t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 10, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 10, 1, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 1, S("abcdefghij2t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 9, S("abcdefghij234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 1, S("abcdefghij1t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 5, S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 9, S("abcdefghij123456789t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 1, S("abcdefghij0t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 2, S("abcdefghij0t")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 20, 0, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 20, 1, S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 2, S("abcdefghij23")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 0, S("abcdefghij")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test49() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 1, S("abcdefghij5")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 4, S("abcdefghij6789")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 2, S("abcdefghij12")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 4, S("abcdefghij1234")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 6, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 2, S("abcdefghij23")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 3, S("abcdefghij234")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 5, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 1, S("abcdefghij3")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 2, S("abcdefghij34")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 3, S("abcdefghij345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 4, S("abcdefghij345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 1, S("abcdefghij5")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 2, S("abcdefghij5")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 5, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 5, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 11, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 4, S("abcdefghij2345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 8, S("abcdefghij23456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 10, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 1, S("abcdefghij6")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 2, S("abcdefghij67")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 4, S("abcdefghij6789")); +TEST_CONSTEXPR_CXX20 bool test49() { + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 1, S("abcdefghij5")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 4, S("abcdefghij6789")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 2, S("abcdefghij12")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 4, S("abcdefghij1234")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 6, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 2, S("abcdefghij23")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 3, S("abcdefghij234")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 5, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 1, S("abcdefghij3")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 2, S("abcdefghij34")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 3, S("abcdefghij345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 4, S("abcdefghij345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 1, S("abcdefghij5")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 2, S("abcdefghij5")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 5, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 5, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 11, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 4, S("abcdefghij2345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 8, S("abcdefghij23456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 10, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 1, S("abcdefghij6")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 2, S("abcdefghij67")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 4, S("abcdefghij6789")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test50() -{ - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 5, S("abcdefghij67890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 6, S("abcdefghij67890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 1, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 2, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 10, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 1, S("abcdefghij2")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 1, S("abcdefghij1")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 1, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 2, S("abcdefghij0")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 20, 0, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 20, 1, S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); +TEST_CONSTEXPR_CXX20 bool test50() { + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 5, S("abcdefghij67890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 6, S("abcdefghij67890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 1, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 2, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 10, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 1, S("abcdefghij2")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 1, S("abcdefghij1")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 1, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 2, S("abcdefghij0")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 20, 0, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 20, 1, S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); + test( + S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); + test(S("abcdefghijklmnopqrst"), + 19, + 0, + S("12345678901234567890"), + 0, + 20, + S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), + 19, + 0, + S("12345678901234567890"), + 0, + 21, + S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); + test( + S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); + test( + S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test51() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 2, S("abcdefghijklmnopqrs12")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 2, S("abcdefghijklmnopqrs23")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 3, S("abcdefghijklmnopqrs234")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 1, S("abcdefghijklmnopqrs3")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 2, S("abcdefghijklmnopqrs34")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 3, S("abcdefghijklmnopqrs345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 4, S("abcdefghijklmnopqrs345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 1, S("abcdefghijklmnopqrs5")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 2, S("abcdefghijklmnopqrs5")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 5, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 5, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 2, S("abcdefghijklmnopqrs12")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 2, S("abcdefghijklmnopqrs23")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 3, S("abcdefghijklmnopqrs234")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 1, S("abcdefghijklmnopqrs3")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 2, S("abcdefghijklmnopqrs34")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 3, S("abcdefghijklmnopqrs345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 4, S("abcdefghijklmnopqrs345")); +TEST_CONSTEXPR_CXX20 bool test51() { + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 2, S("abcdefghijklmnopqrs12")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 2, S("abcdefghijklmnopqrs23")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 3, S("abcdefghijklmnopqrs234")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 1, S("abcdefghijklmnopqrs3")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 2, S("abcdefghijklmnopqrs34")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 3, S("abcdefghijklmnopqrs345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 4, S("abcdefghijklmnopqrs345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 1, S("abcdefghijklmnopqrs5")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 2, S("abcdefghijklmnopqrs5")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 5, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 5, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); + test( + S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890")); + test( + S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 2, S("abcdefghijklmnopqrs12")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 2, S("abcdefghijklmnopqrs23")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 3, S("abcdefghijklmnopqrs234")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 1, S("abcdefghijklmnopqrs3")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 2, S("abcdefghijklmnopqrs34")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 3, S("abcdefghijklmnopqrs345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 4, S("abcdefghijklmnopqrs345")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test52() -{ - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 1, S("abcdefghijklmnopqrs5")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 2, S("abcdefghijklmnopqrs5")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 5, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 5, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 2, S("abcdefghijklmnopqrst23")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 3, S("abcdefghijklmnopqrst234")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 1, S("abcdefghijklmnopqrst3")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 2, S("abcdefghijklmnopqrst34")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 3, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 4, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 1, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 2, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); +TEST_CONSTEXPR_CXX20 bool test52() { + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 1, S("abcdefghijklmnopqrs5")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 2, S("abcdefghijklmnopqrs5")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 5, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 5, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); + test( + S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890")); + test( + S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 2, S("abcdefghijklmnopqrst23")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 3, S("abcdefghijklmnopqrst234")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 1, S("abcdefghijklmnopqrst3")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 2, S("abcdefghijklmnopqrst34")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 3, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 4, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 1, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 2, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test53() -{ - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 2, S("abcdefghijklmnopqrst12")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 2, S("abcdefghijklmnopqrst23")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 3, S("abcdefghijklmnopqrst234")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 1, S("abcdefghijklmnopqrst3")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 2, S("abcdefghijklmnopqrst34")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 3, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 4, S("abcdefghijklmnopqrst345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 1, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 2, S("abcdefghijklmnopqrst5")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); +TEST_CONSTEXPR_CXX20 bool test53() { + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test( + S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), + 20, + 0, + S("12345678901234567890"), + 0, + 20, + S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), + 20, + 0, + S("12345678901234567890"), + 0, + 21, + S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); + test( + S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); + test( + S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 2, S("abcdefghijklmnopqrst12")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 2, S("abcdefghijklmnopqrst23")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 3, S("abcdefghijklmnopqrst234")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 1, S("abcdefghijklmnopqrst3")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 2, S("abcdefghijklmnopqrst34")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 3, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 4, S("abcdefghijklmnopqrst345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 1, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 2, S("abcdefghijklmnopqrst5")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); + test( + S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); + test(S("abcdefghijklmnopqrst"), + 20, + 1, + S("12345678901234567890"), + 0, + 20, + S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), + 20, + 1, + S("12345678901234567890"), + 0, + 21, + S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); + test( + S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); + test( + S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test54() -{ - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 21, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 6, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 3, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 3, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 5, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 5, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 6, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 11, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 8, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 4, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 6, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 10, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 10, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 11, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 20, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 21, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 18, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 19, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 20, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 5, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 9, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 10, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 11, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 2, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 20, 0, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 20, 1, S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 21, 0, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test54() { + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 21, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 6, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 3, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 3, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 5, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 5, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 6, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 11, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 8, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 4, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 6, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 10, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 10, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 11, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 20, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 21, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 18, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 19, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 20, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 5, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 9, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 10, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 11, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 2, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 20, 0, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 20, 1, S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 21, 0, S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test55() -{ - test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, S("abcdefghi1234567890")); - test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, S("abcdefghi0")); - test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, S("abcdefghi")); - test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, S("abcdefghi")); - test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 21, S("can't happen")); - test_npos(S("abcdefghij"), 9, 2, S(""), 0, S("abcdefghi")); - test_npos(S("abcdefghij"), 9, 2, S(""), 1, S("can't happen")); - test_npos(S("abcdefghij"), 9, 2, S("12345"), 0, S("abcdefghi12345")); - test_npos(S("abcdefghij"), 9, 2, S("12345"), 1, S("abcdefghi2345")); - test_npos(S("abcdefghij"), 9, 2, S("12345"), 2, S("abcdefghi345")); - test_npos(S("abcdefghij"), 9, 2, S("12345"), 4, S("abcdefghi5")); - test_npos(S("abcdefghij"), 9, 2, S("12345"), 5, S("abcdefghi")); - test_npos(S("abcdefghij"), 9, 2, S("12345"), 6, S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test55() { + test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, S("abcdefghi1234567890")); + test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, S("abcdefghi0")); + test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, S("abcdefghi")); + test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, S("abcdefghi")); + test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 21, S("can't happen")); + test_npos(S("abcdefghij"), 9, 2, S(""), 0, S("abcdefghi")); + test_npos(S("abcdefghij"), 9, 2, S(""), 1, S("can't happen")); + test_npos(S("abcdefghij"), 9, 2, S("12345"), 0, S("abcdefghi12345")); + test_npos(S("abcdefghij"), 9, 2, S("12345"), 1, S("abcdefghi2345")); + test_npos(S("abcdefghij"), 9, 2, S("12345"), 2, S("abcdefghi345")); + test_npos(S("abcdefghij"), 9, 2, S("12345"), 4, S("abcdefghi5")); + test_npos(S("abcdefghij"), 9, 2, S("12345"), 5, S("abcdefghi")); + test_npos(S("abcdefghij"), 9, 2, S("12345"), 6, S("can't happen")); - return true; + return true; } template @@ -6092,8 +6095,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_replace/size_size_string_view.pass.cpp @@ -20,352 +20,342 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s, typename S::size_type pos1, typename S::size_type n1, SV sv, S expected) -{ - const typename S::size_type old_size = s.size(); - S s0 = s; - if (pos1 <= old_size) - { - s.replace(pos1, n1, sv); - LIBCPP_ASSERT(s.__invariants()); - assert(s == expected); - typename S::size_type xlen = std::min(n1, old_size - pos1); - typename S::size_type rlen = sv.size(); - assert(s.size() == old_size - xlen + rlen); - } +TEST_CONSTEXPR_CXX20 void test(S s, typename S::size_type pos1, typename S::size_type n1, SV sv, S expected) { + const typename S::size_type old_size = s.size(); + S s0 = s; + if (pos1 <= old_size) { + s.replace(pos1, n1, sv); + LIBCPP_ASSERT(s.__invariants()); + assert(s == expected); + typename S::size_type xlen = std::min(n1, old_size - pos1); + typename S::size_type rlen = sv.size(); + assert(s.size() == old_size - xlen + rlen); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - s.replace(pos1, n1, sv); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > old_size); - assert(s == s0); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + s.replace(pos1, n1, sv); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > old_size); + assert(s == s0); } + } #endif } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, SV(""), S("")); - test(S(""), 0, 0, SV("12345"), S("12345")); - test(S(""), 0, 0, SV("1234567890"), S("1234567890")); - test(S(""), 0, 0, SV("12345678901234567890"), S("12345678901234567890")); - test(S(""), 0, 1, SV(""), S("")); - test(S(""), 0, 1, SV("12345"), S("12345")); - test(S(""), 0, 1, SV("1234567890"), S("1234567890")); - test(S(""), 0, 1, SV("12345678901234567890"), S("12345678901234567890")); - test(S(""), 1, 0, SV(""), S("can't happen")); - test(S(""), 1, 0, SV("12345"), S("can't happen")); - test(S(""), 1, 0, SV("1234567890"), S("can't happen")); - test(S(""), 1, 0, SV("12345678901234567890"), S("can't happen")); - test(S("abcde"), 0, 0, SV(""), S("abcde")); - test(S("abcde"), 0, 0, SV("12345"), S("12345abcde")); - test(S("abcde"), 0, 0, SV("1234567890"), S("1234567890abcde")); - test(S("abcde"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcde")); - test(S("abcde"), 0, 1, SV(""), S("bcde")); - test(S("abcde"), 0, 1, SV("12345"), S("12345bcde")); - test(S("abcde"), 0, 1, SV("1234567890"), S("1234567890bcde")); - test(S("abcde"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcde")); - test(S("abcde"), 0, 2, SV(""), S("cde")); - test(S("abcde"), 0, 2, SV("12345"), S("12345cde")); - test(S("abcde"), 0, 2, SV("1234567890"), S("1234567890cde")); - test(S("abcde"), 0, 2, SV("12345678901234567890"), S("12345678901234567890cde")); - test(S("abcde"), 0, 4, SV(""), S("e")); - test(S("abcde"), 0, 4, SV("12345"), S("12345e")); - test(S("abcde"), 0, 4, SV("1234567890"), S("1234567890e")); - test(S("abcde"), 0, 4, SV("12345678901234567890"), S("12345678901234567890e")); - test(S("abcde"), 0, 5, SV(""), S("")); - test(S("abcde"), 0, 5, SV("12345"), S("12345")); - test(S("abcde"), 0, 5, SV("1234567890"), S("1234567890")); - test(S("abcde"), 0, 5, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcde"), 0, 6, SV(""), S("")); - test(S("abcde"), 0, 6, SV("12345"), S("12345")); - test(S("abcde"), 0, 6, SV("1234567890"), S("1234567890")); - test(S("abcde"), 0, 6, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcde"), 1, 0, SV(""), S("abcde")); - test(S("abcde"), 1, 0, SV("12345"), S("a12345bcde")); - test(S("abcde"), 1, 0, SV("1234567890"), S("a1234567890bcde")); - test(S("abcde"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcde")); - test(S("abcde"), 1, 1, SV(""), S("acde")); - test(S("abcde"), 1, 1, SV("12345"), S("a12345cde")); - test(S("abcde"), 1, 1, SV("1234567890"), S("a1234567890cde")); - test(S("abcde"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cde")); - test(S("abcde"), 1, 2, SV(""), S("ade")); - test(S("abcde"), 1, 2, SV("12345"), S("a12345de")); - test(S("abcde"), 1, 2, SV("1234567890"), S("a1234567890de")); - test(S("abcde"), 1, 2, SV("12345678901234567890"), S("a12345678901234567890de")); - test(S("abcde"), 1, 3, SV(""), S("ae")); - test(S("abcde"), 1, 3, SV("12345"), S("a12345e")); - test(S("abcde"), 1, 3, SV("1234567890"), S("a1234567890e")); - test(S("abcde"), 1, 3, SV("12345678901234567890"), S("a12345678901234567890e")); - test(S("abcde"), 1, 4, SV(""), S("a")); - test(S("abcde"), 1, 4, SV("12345"), S("a12345")); - test(S("abcde"), 1, 4, SV("1234567890"), S("a1234567890")); - test(S("abcde"), 1, 4, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcde"), 1, 5, SV(""), S("a")); - test(S("abcde"), 1, 5, SV("12345"), S("a12345")); - test(S("abcde"), 1, 5, SV("1234567890"), S("a1234567890")); - test(S("abcde"), 1, 5, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcde"), 2, 0, SV(""), S("abcde")); - test(S("abcde"), 2, 0, SV("12345"), S("ab12345cde")); - test(S("abcde"), 2, 0, SV("1234567890"), S("ab1234567890cde")); - test(S("abcde"), 2, 0, SV("12345678901234567890"), S("ab12345678901234567890cde")); - test(S("abcde"), 2, 1, SV(""), S("abde")); - test(S("abcde"), 2, 1, SV("12345"), S("ab12345de")); - test(S("abcde"), 2, 1, SV("1234567890"), S("ab1234567890de")); - test(S("abcde"), 2, 1, SV("12345678901234567890"), S("ab12345678901234567890de")); - test(S("abcde"), 2, 2, SV(""), S("abe")); - test(S("abcde"), 2, 2, SV("12345"), S("ab12345e")); - test(S("abcde"), 2, 2, SV("1234567890"), S("ab1234567890e")); - test(S("abcde"), 2, 2, SV("12345678901234567890"), S("ab12345678901234567890e")); - test(S("abcde"), 2, 3, SV(""), S("ab")); - test(S("abcde"), 2, 3, SV("12345"), S("ab12345")); - test(S("abcde"), 2, 3, SV("1234567890"), S("ab1234567890")); - test(S("abcde"), 2, 3, SV("12345678901234567890"), S("ab12345678901234567890")); - test(S("abcde"), 2, 4, SV(""), S("ab")); - test(S("abcde"), 2, 4, SV("12345"), S("ab12345")); - test(S("abcde"), 2, 4, SV("1234567890"), S("ab1234567890")); - test(S("abcde"), 2, 4, SV("12345678901234567890"), S("ab12345678901234567890")); - test(S("abcde"), 4, 0, SV(""), S("abcde")); - test(S("abcde"), 4, 0, SV("12345"), S("abcd12345e")); - test(S("abcde"), 4, 0, SV("1234567890"), S("abcd1234567890e")); - test(S("abcde"), 4, 0, SV("12345678901234567890"), S("abcd12345678901234567890e")); - test(S("abcde"), 4, 1, SV(""), S("abcd")); - test(S("abcde"), 4, 1, SV("12345"), S("abcd12345")); - test(S("abcde"), 4, 1, SV("1234567890"), S("abcd1234567890")); - test(S("abcde"), 4, 1, SV("12345678901234567890"), S("abcd12345678901234567890")); - test(S("abcde"), 4, 2, SV(""), S("abcd")); - test(S("abcde"), 4, 2, SV("12345"), S("abcd12345")); - test(S("abcde"), 4, 2, SV("1234567890"), S("abcd1234567890")); - test(S("abcde"), 4, 2, SV("12345678901234567890"), S("abcd12345678901234567890")); - test(S("abcde"), 5, 0, SV(""), S("abcde")); - test(S("abcde"), 5, 0, SV("12345"), S("abcde12345")); - test(S("abcde"), 5, 0, SV("1234567890"), S("abcde1234567890")); - test(S("abcde"), 5, 0, SV("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcde"), 5, 1, SV(""), S("abcde")); - test(S("abcde"), 5, 1, SV("12345"), S("abcde12345")); - test(S("abcde"), 5, 1, SV("1234567890"), S("abcde1234567890")); - test(S("abcde"), 5, 1, SV("12345678901234567890"), S("abcde12345678901234567890")); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, SV(""), S("")); + test(S(""), 0, 0, SV("12345"), S("12345")); + test(S(""), 0, 0, SV("1234567890"), S("1234567890")); + test(S(""), 0, 0, SV("12345678901234567890"), S("12345678901234567890")); + test(S(""), 0, 1, SV(""), S("")); + test(S(""), 0, 1, SV("12345"), S("12345")); + test(S(""), 0, 1, SV("1234567890"), S("1234567890")); + test(S(""), 0, 1, SV("12345678901234567890"), S("12345678901234567890")); + test(S(""), 1, 0, SV(""), S("can't happen")); + test(S(""), 1, 0, SV("12345"), S("can't happen")); + test(S(""), 1, 0, SV("1234567890"), S("can't happen")); + test(S(""), 1, 0, SV("12345678901234567890"), S("can't happen")); + test(S("abcde"), 0, 0, SV(""), S("abcde")); + test(S("abcde"), 0, 0, SV("12345"), S("12345abcde")); + test(S("abcde"), 0, 0, SV("1234567890"), S("1234567890abcde")); + test(S("abcde"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcde")); + test(S("abcde"), 0, 1, SV(""), S("bcde")); + test(S("abcde"), 0, 1, SV("12345"), S("12345bcde")); + test(S("abcde"), 0, 1, SV("1234567890"), S("1234567890bcde")); + test(S("abcde"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcde")); + test(S("abcde"), 0, 2, SV(""), S("cde")); + test(S("abcde"), 0, 2, SV("12345"), S("12345cde")); + test(S("abcde"), 0, 2, SV("1234567890"), S("1234567890cde")); + test(S("abcde"), 0, 2, SV("12345678901234567890"), S("12345678901234567890cde")); + test(S("abcde"), 0, 4, SV(""), S("e")); + test(S("abcde"), 0, 4, SV("12345"), S("12345e")); + test(S("abcde"), 0, 4, SV("1234567890"), S("1234567890e")); + test(S("abcde"), 0, 4, SV("12345678901234567890"), S("12345678901234567890e")); + test(S("abcde"), 0, 5, SV(""), S("")); + test(S("abcde"), 0, 5, SV("12345"), S("12345")); + test(S("abcde"), 0, 5, SV("1234567890"), S("1234567890")); + test(S("abcde"), 0, 5, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcde"), 0, 6, SV(""), S("")); + test(S("abcde"), 0, 6, SV("12345"), S("12345")); + test(S("abcde"), 0, 6, SV("1234567890"), S("1234567890")); + test(S("abcde"), 0, 6, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcde"), 1, 0, SV(""), S("abcde")); + test(S("abcde"), 1, 0, SV("12345"), S("a12345bcde")); + test(S("abcde"), 1, 0, SV("1234567890"), S("a1234567890bcde")); + test(S("abcde"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcde")); + test(S("abcde"), 1, 1, SV(""), S("acde")); + test(S("abcde"), 1, 1, SV("12345"), S("a12345cde")); + test(S("abcde"), 1, 1, SV("1234567890"), S("a1234567890cde")); + test(S("abcde"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cde")); + test(S("abcde"), 1, 2, SV(""), S("ade")); + test(S("abcde"), 1, 2, SV("12345"), S("a12345de")); + test(S("abcde"), 1, 2, SV("1234567890"), S("a1234567890de")); + test(S("abcde"), 1, 2, SV("12345678901234567890"), S("a12345678901234567890de")); + test(S("abcde"), 1, 3, SV(""), S("ae")); + test(S("abcde"), 1, 3, SV("12345"), S("a12345e")); + test(S("abcde"), 1, 3, SV("1234567890"), S("a1234567890e")); + test(S("abcde"), 1, 3, SV("12345678901234567890"), S("a12345678901234567890e")); + test(S("abcde"), 1, 4, SV(""), S("a")); + test(S("abcde"), 1, 4, SV("12345"), S("a12345")); + test(S("abcde"), 1, 4, SV("1234567890"), S("a1234567890")); + test(S("abcde"), 1, 4, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcde"), 1, 5, SV(""), S("a")); + test(S("abcde"), 1, 5, SV("12345"), S("a12345")); + test(S("abcde"), 1, 5, SV("1234567890"), S("a1234567890")); + test(S("abcde"), 1, 5, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcde"), 2, 0, SV(""), S("abcde")); + test(S("abcde"), 2, 0, SV("12345"), S("ab12345cde")); + test(S("abcde"), 2, 0, SV("1234567890"), S("ab1234567890cde")); + test(S("abcde"), 2, 0, SV("12345678901234567890"), S("ab12345678901234567890cde")); + test(S("abcde"), 2, 1, SV(""), S("abde")); + test(S("abcde"), 2, 1, SV("12345"), S("ab12345de")); + test(S("abcde"), 2, 1, SV("1234567890"), S("ab1234567890de")); + test(S("abcde"), 2, 1, SV("12345678901234567890"), S("ab12345678901234567890de")); + test(S("abcde"), 2, 2, SV(""), S("abe")); + test(S("abcde"), 2, 2, SV("12345"), S("ab12345e")); + test(S("abcde"), 2, 2, SV("1234567890"), S("ab1234567890e")); + test(S("abcde"), 2, 2, SV("12345678901234567890"), S("ab12345678901234567890e")); + test(S("abcde"), 2, 3, SV(""), S("ab")); + test(S("abcde"), 2, 3, SV("12345"), S("ab12345")); + test(S("abcde"), 2, 3, SV("1234567890"), S("ab1234567890")); + test(S("abcde"), 2, 3, SV("12345678901234567890"), S("ab12345678901234567890")); + test(S("abcde"), 2, 4, SV(""), S("ab")); + test(S("abcde"), 2, 4, SV("12345"), S("ab12345")); + test(S("abcde"), 2, 4, SV("1234567890"), S("ab1234567890")); + test(S("abcde"), 2, 4, SV("12345678901234567890"), S("ab12345678901234567890")); + test(S("abcde"), 4, 0, SV(""), S("abcde")); + test(S("abcde"), 4, 0, SV("12345"), S("abcd12345e")); + test(S("abcde"), 4, 0, SV("1234567890"), S("abcd1234567890e")); + test(S("abcde"), 4, 0, SV("12345678901234567890"), S("abcd12345678901234567890e")); + test(S("abcde"), 4, 1, SV(""), S("abcd")); + test(S("abcde"), 4, 1, SV("12345"), S("abcd12345")); + test(S("abcde"), 4, 1, SV("1234567890"), S("abcd1234567890")); + test(S("abcde"), 4, 1, SV("12345678901234567890"), S("abcd12345678901234567890")); + test(S("abcde"), 4, 2, SV(""), S("abcd")); + test(S("abcde"), 4, 2, SV("12345"), S("abcd12345")); + test(S("abcde"), 4, 2, SV("1234567890"), S("abcd1234567890")); + test(S("abcde"), 4, 2, SV("12345678901234567890"), S("abcd12345678901234567890")); + test(S("abcde"), 5, 0, SV(""), S("abcde")); + test(S("abcde"), 5, 0, SV("12345"), S("abcde12345")); + test(S("abcde"), 5, 0, SV("1234567890"), S("abcde1234567890")); + test(S("abcde"), 5, 0, SV("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcde"), 5, 1, SV(""), S("abcde")); + test(S("abcde"), 5, 1, SV("12345"), S("abcde12345")); + test(S("abcde"), 5, 1, SV("1234567890"), S("abcde1234567890")); + test(S("abcde"), 5, 1, SV("12345678901234567890"), S("abcde12345678901234567890")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcde"), 6, 0, SV(""), S("can't happen")); - test(S("abcde"), 6, 0, SV("12345"), S("can't happen")); - test(S("abcde"), 6, 0, SV("1234567890"), S("can't happen")); - test(S("abcde"), 6, 0, SV("12345678901234567890"), S("can't happen")); - test(S("abcdefghij"), 0, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345"), S("12345abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("1234567890"), S("1234567890abcdefghij")); - test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcdefghij")); - test(S("abcdefghij"), 0, 1, SV(""), S("bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345"), S("12345bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("1234567890"), S("1234567890bcdefghij")); - test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcdefghij")); - test(S("abcdefghij"), 0, 5, SV(""), S("fghij")); - test(S("abcdefghij"), 0, 5, SV("12345"), S("12345fghij")); - test(S("abcdefghij"), 0, 5, SV("1234567890"), S("1234567890fghij")); - test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), S("12345678901234567890fghij")); - test(S("abcdefghij"), 0, 9, SV(""), S("j")); - test(S("abcdefghij"), 0, 9, SV("12345"), S("12345j")); - test(S("abcdefghij"), 0, 9, SV("1234567890"), S("1234567890j")); - test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), S("12345678901234567890j")); - test(S("abcdefghij"), 0, 10, SV(""), S("")); - test(S("abcdefghij"), 0, 10, SV("12345"), S("12345")); - test(S("abcdefghij"), 0, 10, SV("1234567890"), S("1234567890")); - test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghij"), 0, 11, SV(""), S("")); - test(S("abcdefghij"), 0, 11, SV("12345"), S("12345")); - test(S("abcdefghij"), 0, 11, SV("1234567890"), S("1234567890")); - test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghij"), 1, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345"), S("a12345bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("1234567890"), S("a1234567890bcdefghij")); - test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcdefghij")); - test(S("abcdefghij"), 1, 1, SV(""), S("acdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345"), S("a12345cdefghij")); - test(S("abcdefghij"), 1, 1, SV("1234567890"), S("a1234567890cdefghij")); - test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cdefghij")); - test(S("abcdefghij"), 1, 4, SV(""), S("afghij")); - test(S("abcdefghij"), 1, 4, SV("12345"), S("a12345fghij")); - test(S("abcdefghij"), 1, 4, SV("1234567890"), S("a1234567890fghij")); - test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), S("a12345678901234567890fghij")); - test(S("abcdefghij"), 1, 8, SV(""), S("aj")); - test(S("abcdefghij"), 1, 8, SV("12345"), S("a12345j")); - test(S("abcdefghij"), 1, 8, SV("1234567890"), S("a1234567890j")); - test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), S("a12345678901234567890j")); - test(S("abcdefghij"), 1, 9, SV(""), S("a")); - test(S("abcdefghij"), 1, 9, SV("12345"), S("a12345")); - test(S("abcdefghij"), 1, 9, SV("1234567890"), S("a1234567890")); - test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghij"), 1, 10, SV(""), S("a")); - test(S("abcdefghij"), 1, 10, SV("12345"), S("a12345")); - test(S("abcdefghij"), 1, 10, SV("1234567890"), S("a1234567890")); - test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghij"), 5, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 5, 0, SV("12345"), S("abcde12345fghij")); - test(S("abcdefghij"), 5, 0, SV("1234567890"), S("abcde1234567890fghij")); - test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), S("abcde12345678901234567890fghij")); - test(S("abcdefghij"), 5, 1, SV(""), S("abcdeghij")); - test(S("abcdefghij"), 5, 1, SV("12345"), S("abcde12345ghij")); - test(S("abcdefghij"), 5, 1, SV("1234567890"), S("abcde1234567890ghij")); - test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), S("abcde12345678901234567890ghij")); - test(S("abcdefghij"), 5, 2, SV(""), S("abcdehij")); - test(S("abcdefghij"), 5, 2, SV("12345"), S("abcde12345hij")); - test(S("abcdefghij"), 5, 2, SV("1234567890"), S("abcde1234567890hij")); - test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), S("abcde12345678901234567890hij")); - test(S("abcdefghij"), 5, 4, SV(""), S("abcdej")); - test(S("abcdefghij"), 5, 4, SV("12345"), S("abcde12345j")); - test(S("abcdefghij"), 5, 4, SV("1234567890"), S("abcde1234567890j")); - test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), S("abcde12345678901234567890j")); - test(S("abcdefghij"), 5, 5, SV(""), S("abcde")); - test(S("abcdefghij"), 5, 5, SV("12345"), S("abcde12345")); - test(S("abcdefghij"), 5, 5, SV("1234567890"), S("abcde1234567890")); - test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcdefghij"), 5, 6, SV(""), S("abcde")); - test(S("abcdefghij"), 5, 6, SV("12345"), S("abcde12345")); - test(S("abcdefghij"), 5, 6, SV("1234567890"), S("abcde1234567890")); - test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), S("abcde12345678901234567890")); - test(S("abcdefghij"), 9, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 9, 0, SV("12345"), S("abcdefghi12345j")); - test(S("abcdefghij"), 9, 0, SV("1234567890"), S("abcdefghi1234567890j")); - test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), S("abcdefghi12345678901234567890j")); - test(S("abcdefghij"), 9, 1, SV(""), S("abcdefghi")); - test(S("abcdefghij"), 9, 1, SV("12345"), S("abcdefghi12345")); - test(S("abcdefghij"), 9, 1, SV("1234567890"), S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 9, 2, SV(""), S("abcdefghi")); - test(S("abcdefghij"), 9, 2, SV("12345"), S("abcdefghi12345")); - test(S("abcdefghij"), 9, 2, SV("1234567890"), S("abcdefghi1234567890")); - test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), S("abcdefghi12345678901234567890")); - test(S("abcdefghij"), 10, 0, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 10, 0, SV("12345"), S("abcdefghij12345")); - test(S("abcdefghij"), 10, 0, SV("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 10, 1, SV(""), S("abcdefghij")); - test(S("abcdefghij"), 10, 1, SV("12345"), S("abcdefghij12345")); - test(S("abcdefghij"), 10, 1, SV("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghij"), 11, 0, SV(""), S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345"), S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("1234567890"), S("can't happen")); - test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcde"), 6, 0, SV(""), S("can't happen")); + test(S("abcde"), 6, 0, SV("12345"), S("can't happen")); + test(S("abcde"), 6, 0, SV("1234567890"), S("can't happen")); + test(S("abcde"), 6, 0, SV("12345678901234567890"), S("can't happen")); + test(S("abcdefghij"), 0, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345"), S("12345abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("1234567890"), S("1234567890abcdefghij")); + test(S("abcdefghij"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcdefghij")); + test(S("abcdefghij"), 0, 1, SV(""), S("bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345"), S("12345bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("1234567890"), S("1234567890bcdefghij")); + test(S("abcdefghij"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcdefghij")); + test(S("abcdefghij"), 0, 5, SV(""), S("fghij")); + test(S("abcdefghij"), 0, 5, SV("12345"), S("12345fghij")); + test(S("abcdefghij"), 0, 5, SV("1234567890"), S("1234567890fghij")); + test(S("abcdefghij"), 0, 5, SV("12345678901234567890"), S("12345678901234567890fghij")); + test(S("abcdefghij"), 0, 9, SV(""), S("j")); + test(S("abcdefghij"), 0, 9, SV("12345"), S("12345j")); + test(S("abcdefghij"), 0, 9, SV("1234567890"), S("1234567890j")); + test(S("abcdefghij"), 0, 9, SV("12345678901234567890"), S("12345678901234567890j")); + test(S("abcdefghij"), 0, 10, SV(""), S("")); + test(S("abcdefghij"), 0, 10, SV("12345"), S("12345")); + test(S("abcdefghij"), 0, 10, SV("1234567890"), S("1234567890")); + test(S("abcdefghij"), 0, 10, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghij"), 0, 11, SV(""), S("")); + test(S("abcdefghij"), 0, 11, SV("12345"), S("12345")); + test(S("abcdefghij"), 0, 11, SV("1234567890"), S("1234567890")); + test(S("abcdefghij"), 0, 11, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghij"), 1, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345"), S("a12345bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("1234567890"), S("a1234567890bcdefghij")); + test(S("abcdefghij"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcdefghij")); + test(S("abcdefghij"), 1, 1, SV(""), S("acdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345"), S("a12345cdefghij")); + test(S("abcdefghij"), 1, 1, SV("1234567890"), S("a1234567890cdefghij")); + test(S("abcdefghij"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cdefghij")); + test(S("abcdefghij"), 1, 4, SV(""), S("afghij")); + test(S("abcdefghij"), 1, 4, SV("12345"), S("a12345fghij")); + test(S("abcdefghij"), 1, 4, SV("1234567890"), S("a1234567890fghij")); + test(S("abcdefghij"), 1, 4, SV("12345678901234567890"), S("a12345678901234567890fghij")); + test(S("abcdefghij"), 1, 8, SV(""), S("aj")); + test(S("abcdefghij"), 1, 8, SV("12345"), S("a12345j")); + test(S("abcdefghij"), 1, 8, SV("1234567890"), S("a1234567890j")); + test(S("abcdefghij"), 1, 8, SV("12345678901234567890"), S("a12345678901234567890j")); + test(S("abcdefghij"), 1, 9, SV(""), S("a")); + test(S("abcdefghij"), 1, 9, SV("12345"), S("a12345")); + test(S("abcdefghij"), 1, 9, SV("1234567890"), S("a1234567890")); + test(S("abcdefghij"), 1, 9, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghij"), 1, 10, SV(""), S("a")); + test(S("abcdefghij"), 1, 10, SV("12345"), S("a12345")); + test(S("abcdefghij"), 1, 10, SV("1234567890"), S("a1234567890")); + test(S("abcdefghij"), 1, 10, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghij"), 5, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 5, 0, SV("12345"), S("abcde12345fghij")); + test(S("abcdefghij"), 5, 0, SV("1234567890"), S("abcde1234567890fghij")); + test(S("abcdefghij"), 5, 0, SV("12345678901234567890"), S("abcde12345678901234567890fghij")); + test(S("abcdefghij"), 5, 1, SV(""), S("abcdeghij")); + test(S("abcdefghij"), 5, 1, SV("12345"), S("abcde12345ghij")); + test(S("abcdefghij"), 5, 1, SV("1234567890"), S("abcde1234567890ghij")); + test(S("abcdefghij"), 5, 1, SV("12345678901234567890"), S("abcde12345678901234567890ghij")); + test(S("abcdefghij"), 5, 2, SV(""), S("abcdehij")); + test(S("abcdefghij"), 5, 2, SV("12345"), S("abcde12345hij")); + test(S("abcdefghij"), 5, 2, SV("1234567890"), S("abcde1234567890hij")); + test(S("abcdefghij"), 5, 2, SV("12345678901234567890"), S("abcde12345678901234567890hij")); + test(S("abcdefghij"), 5, 4, SV(""), S("abcdej")); + test(S("abcdefghij"), 5, 4, SV("12345"), S("abcde12345j")); + test(S("abcdefghij"), 5, 4, SV("1234567890"), S("abcde1234567890j")); + test(S("abcdefghij"), 5, 4, SV("12345678901234567890"), S("abcde12345678901234567890j")); + test(S("abcdefghij"), 5, 5, SV(""), S("abcde")); + test(S("abcdefghij"), 5, 5, SV("12345"), S("abcde12345")); + test(S("abcdefghij"), 5, 5, SV("1234567890"), S("abcde1234567890")); + test(S("abcdefghij"), 5, 5, SV("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcdefghij"), 5, 6, SV(""), S("abcde")); + test(S("abcdefghij"), 5, 6, SV("12345"), S("abcde12345")); + test(S("abcdefghij"), 5, 6, SV("1234567890"), S("abcde1234567890")); + test(S("abcdefghij"), 5, 6, SV("12345678901234567890"), S("abcde12345678901234567890")); + test(S("abcdefghij"), 9, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 9, 0, SV("12345"), S("abcdefghi12345j")); + test(S("abcdefghij"), 9, 0, SV("1234567890"), S("abcdefghi1234567890j")); + test(S("abcdefghij"), 9, 0, SV("12345678901234567890"), S("abcdefghi12345678901234567890j")); + test(S("abcdefghij"), 9, 1, SV(""), S("abcdefghi")); + test(S("abcdefghij"), 9, 1, SV("12345"), S("abcdefghi12345")); + test(S("abcdefghij"), 9, 1, SV("1234567890"), S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 1, SV("12345678901234567890"), S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 9, 2, SV(""), S("abcdefghi")); + test(S("abcdefghij"), 9, 2, SV("12345"), S("abcdefghi12345")); + test(S("abcdefghij"), 9, 2, SV("1234567890"), S("abcdefghi1234567890")); + test(S("abcdefghij"), 9, 2, SV("12345678901234567890"), S("abcdefghi12345678901234567890")); + test(S("abcdefghij"), 10, 0, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 10, 0, SV("12345"), S("abcdefghij12345")); + test(S("abcdefghij"), 10, 0, SV("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 0, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 10, 1, SV(""), S("abcdefghij")); + test(S("abcdefghij"), 10, 1, SV("12345"), S("abcdefghij12345")); + test(S("abcdefghij"), 10, 1, SV("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghij"), 10, 1, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghij"), 11, 0, SV(""), S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345"), S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("1234567890"), S("can't happen")); + test(S("abcdefghij"), 11, 0, SV("12345678901234567890"), S("can't happen")); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), S("12345abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), S("1234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), S("bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), S("12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), S("1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), S("klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), S("12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), S("1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), S("12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), S("t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), S("12345t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), S("1234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), S("12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), S("")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), S("")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), S("12345")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), S("1234567890")); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), S("12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), S("a12345bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), S("a1234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), S("acdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), S("a12345cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), S("a1234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), S("aklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), S("a12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), S("a1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), S("a12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), S("at")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), S("a12345t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), S("a1234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), S("a12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), S("a")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), S("a")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), S("a12345")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), S("a1234567890")); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), S("a12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), S("abcdefghij12345klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), S("abcdefghij1234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), S("abcdefghijlmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), S("abcdefghij12345lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), S("abcdefghij1234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), S("abcdefghij12345678901234567890lmnopqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), S("abcdefghijpqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), S("abcdefghij12345pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), S("abcdefghij1234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), S("abcdefghij12345678901234567890pqrst")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), S("abcdefghijt")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), S("abcdefghij12345t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), S("abcdefghij1234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), S("abcdefghij12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), S("abcdefghij")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), S("abcdefghij12345")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), S("abcdefghij1234567890")); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), S("abcdefghijklmnopqrs12345t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), S("abcdefghijklmnopqrs1234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), S("abcdefghijklmnopqrs")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), S("abcdefghijklmnopqrs12345")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), S("abcdefghijklmnopqrs1234567890")); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), S("abcdefghijklmnopqrst")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), S("abcdefghijklmnopqrst12345")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), S("abcdefghijklmnopqrst1234567890")); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), S("can't happen")); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), S("can't happen")); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345"), S("12345abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("1234567890"), S("1234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("12345678901234567890"), S("12345678901234567890abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), S("bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345"), S("12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("1234567890"), S("1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("12345678901234567890"), S("12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), S("klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345"), S("12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("1234567890"), S("1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("12345678901234567890"), S("12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), S("t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345"), S("12345t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("1234567890"), S("1234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("12345678901234567890"), S("12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), S("")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345"), S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("1234567890"), S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), S("")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345"), S("12345")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("1234567890"), S("1234567890")); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("12345678901234567890"), S("12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345"), S("a12345bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("1234567890"), S("a1234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("12345678901234567890"), S("a12345678901234567890bcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), S("acdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345"), S("a12345cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("1234567890"), S("a1234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("12345678901234567890"), S("a12345678901234567890cdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), S("aklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345"), S("a12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("1234567890"), S("a1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("12345678901234567890"), S("a12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), S("at")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345"), S("a12345t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("1234567890"), S("a1234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("12345678901234567890"), S("a12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), S("a")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345"), S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("1234567890"), S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), S("a")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345"), S("a12345")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("1234567890"), S("a1234567890")); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("12345678901234567890"), S("a12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345"), S("abcdefghij12345klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("1234567890"), S("abcdefghij1234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("12345678901234567890"), S("abcdefghij12345678901234567890klmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), S("abcdefghijlmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345"), S("abcdefghij12345lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("1234567890"), S("abcdefghij1234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("12345678901234567890"), S("abcdefghij12345678901234567890lmnopqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), S("abcdefghijpqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345"), S("abcdefghij12345pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("1234567890"), S("abcdefghij1234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("12345678901234567890"), S("abcdefghij12345678901234567890pqrst")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), S("abcdefghijt")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345"), S("abcdefghij12345t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("1234567890"), S("abcdefghij1234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("12345678901234567890"), S("abcdefghij12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345"), S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), S("abcdefghij")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345"), S("abcdefghij12345")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("1234567890"), S("abcdefghij1234567890")); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("12345678901234567890"), S("abcdefghij12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345"), S("abcdefghijklmnopqrs12345t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("1234567890"), S("abcdefghijklmnopqrs1234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890t")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345"), S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("1234567890"), S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), S("abcdefghijklmnopqrs")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345"), S("abcdefghijklmnopqrs12345")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("1234567890"), S("abcdefghijklmnopqrs1234567890")); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("12345678901234567890"), S("abcdefghijklmnopqrs12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345"), S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), S("abcdefghijklmnopqrst")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345"), S("abcdefghijklmnopqrst12345")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345"), S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("1234567890"), S("can't happen")); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("12345678901234567890"), S("can't happen")); - return true; + return true; } template @@ -383,8 +373,7 @@ } } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp b/libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.modifiers/string_swap/swap.pass.cpp @@ -19,16 +19,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s1, S s2) -{ - S s1_ = s1; - S s2_ = s2; - s1.swap(s2); - LIBCPP_ASSERT(s1.__invariants()); - LIBCPP_ASSERT(s2.__invariants()); - assert(s1 == s2_); - assert(s2 == s1_); +TEST_CONSTEXPR_CXX20 void test(S s1, S s2) { + S s1_ = s1; + S s2_ = s2; + s1.swap(s2); + LIBCPP_ASSERT(s1.__invariants()); + LIBCPP_ASSERT(s2.__invariants()); + assert(s1 == s2_); + assert(s2 == s1_); } template @@ -60,8 +58,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line.pass.cpp @@ -20,151 +20,150 @@ #include "min_allocator.h" #include "test_macros.h" -int main(int, char**) -{ - { - std::istringstream in(" abc\n def\n ghij"); - std::string s("initial text"); - std::getline(in, s); - assert(in.good()); - assert(s == " abc"); - std::getline(in, s); - assert(in.good()); - assert(s == " def"); - std::getline(in, s); - assert(in.eof()); - assert(s == " ghij"); - } +int main(int, char**) { + { + std::istringstream in(" abc\n def\n ghij"); + std::string s("initial text"); + std::getline(in, s); + assert(in.good()); + assert(s == " abc"); + std::getline(in, s); + assert(in.good()); + assert(s == " def"); + std::getline(in, s); + assert(in.eof()); + assert(s == " ghij"); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::wistringstream in(L" abc\n def\n ghij"); - std::wstring s(L"initial text"); - std::getline(in, s); - assert(in.good()); - assert(s == L" abc"); - std::getline(in, s); - assert(in.good()); - assert(s == L" def"); - std::getline(in, s); - assert(in.eof()); - assert(s == L" ghij"); - } + { + std::wistringstream in(L" abc\n def\n ghij"); + std::wstring s(L"initial text"); + std::getline(in, s); + assert(in.good()); + assert(s == L" abc"); + std::getline(in, s); + assert(in.good()); + assert(s == L" def"); + std::getline(in, s); + assert(in.eof()); + assert(s == L" ghij"); + } #endif #if TEST_STD_VER >= 11 - { - typedef std::basic_string, min_allocator> S; - std::istringstream in(" abc\n def\n ghij"); - S s("initial text"); - std::getline(in, s); - assert(in.good()); - assert(s == " abc"); - std::getline(in, s); - assert(in.good()); - assert(s == " def"); - std::getline(in, s); - assert(in.eof()); - assert(s == " ghij"); - } -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - typedef std::basic_string, min_allocator> S; - std::wistringstream in(L" abc\n def\n ghij"); - S s(L"initial text"); - std::getline(in, s); - assert(in.good()); - assert(s == L" abc"); - std::getline(in, s); - assert(in.good()); - assert(s == L" def"); - std::getline(in, s); - assert(in.eof()); - assert(s == L" ghij"); - } -#endif // TEST_HAS_NO_WIDE_CHARACTERS -#endif // TEST_STD_VER >= 11 + { + typedef std::basic_string, min_allocator> S; + std::istringstream in(" abc\n def\n ghij"); + S s("initial text"); + std::getline(in, s); + assert(in.good()); + assert(s == " abc"); + std::getline(in, s); + assert(in.good()); + assert(s == " def"); + std::getline(in, s); + assert(in.eof()); + assert(s == " ghij"); + } +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + typedef std::basic_string, min_allocator> S; + std::wistringstream in(L" abc\n def\n ghij"); + S s(L"initial text"); + std::getline(in, s); + assert(in.good()); + assert(s == L" abc"); + std::getline(in, s); + assert(in.good()); + assert(s == L" def"); + std::getline(in, s); + assert(in.eof()); + assert(s == L" ghij"); + } +# endif // TEST_HAS_NO_WIDE_CHARACTERS +#endif // TEST_STD_VER >= 11 #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::basic_stringbuf sb("hello"); - std::basic_istream is(&sb); - is.exceptions(std::ios_base::eofbit); - - std::basic_string s; - bool threw = false; - try { - std::getline(is, s); - } catch (std::ios::failure const&) { - threw = true; - } + { + std::basic_stringbuf sb("hello"); + std::basic_istream is(&sb); + is.exceptions(std::ios_base::eofbit); - assert(!is.bad()); - assert(!is.fail()); - assert( is.eof()); - assert(threw); - assert(s == "hello"); + std::basic_string s; + bool threw = false; + try { + std::getline(is, s); + } catch (std::ios::failure const&) { + threw = true; } -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::basic_stringbuf sb(L"hello"); - std::basic_istream is(&sb); - is.exceptions(std::ios_base::eofbit); - std::basic_string s; - bool threw = false; - try { - std::getline(is, s); - } catch (std::ios::failure const&) { - threw = true; - } + assert(!is.bad()); + assert(!is.fail()); + assert(is.eof()); + assert(threw); + assert(s == "hello"); + } +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + std::basic_stringbuf sb(L"hello"); + std::basic_istream is(&sb); + is.exceptions(std::ios_base::eofbit); - assert(!is.bad()); - assert(!is.fail()); - assert( is.eof()); - assert(threw); - assert(s == L"hello"); + std::basic_string s; + bool threw = false; + try { + std::getline(is, s); + } catch (std::ios::failure const&) { + threw = true; } -#endif - { - std::basic_stringbuf sb; - std::basic_istream is(&sb); - is.exceptions(std::ios_base::failbit); + assert(!is.bad()); + assert(!is.fail()); + assert(is.eof()); + assert(threw); + assert(s == L"hello"); + } +# endif - std::basic_string s; - bool threw = false; - try { - std::getline(is, s); - } catch (std::ios::failure const&) { - threw = true; - } + { + std::basic_stringbuf sb; + std::basic_istream is(&sb); + is.exceptions(std::ios_base::failbit); - assert(!is.bad()); - assert( is.fail()); - assert( is.eof()); - assert(threw); - assert(s == ""); + std::basic_string s; + bool threw = false; + try { + std::getline(is, s); + } catch (std::ios::failure const&) { + threw = true; } -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::basic_stringbuf sb; - std::basic_istream is(&sb); - is.exceptions(std::ios_base::failbit); - std::basic_string s; - bool threw = false; - try { - std::getline(is, s); - } catch (std::ios::failure const&) { - threw = true; - } + assert(!is.bad()); + assert(is.fail()); + assert(is.eof()); + assert(threw); + assert(s == ""); + } +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + std::basic_stringbuf sb; + std::basic_istream is(&sb); + is.exceptions(std::ios_base::failbit); - assert(!is.bad()); - assert( is.fail()); - assert( is.eof()); - assert(threw); - assert(s == L""); + std::basic_string s; + bool threw = false; + try { + std::getline(is, s); + } catch (std::ios::failure const&) { + threw = true; } -#endif + + assert(!is.bad()); + assert(is.fail()); + assert(is.eof()); + assert(threw); + assert(s == L""); + } +# endif #endif // TEST_HAS_NO_EXCEPTIONS - return 0; + return 0; } diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim.pass.cpp @@ -20,162 +20,161 @@ #include "min_allocator.h" #include "test_macros.h" -int main(int, char**) -{ - { - std::istringstream in(" abc* def** ghij"); - std::string s("initial text"); - std::getline(in, s, '*'); - assert(in.good()); - assert(s == " abc"); - std::getline(in, s, '*'); - assert(in.good()); - assert(s == " def"); - std::getline(in, s, '*'); - assert(in.good()); - assert(s == ""); - std::getline(in, s, '*'); - assert(in.eof()); - assert(s == " ghij"); - } +int main(int, char**) { + { + std::istringstream in(" abc* def** ghij"); + std::string s("initial text"); + std::getline(in, s, '*'); + assert(in.good()); + assert(s == " abc"); + std::getline(in, s, '*'); + assert(in.good()); + assert(s == " def"); + std::getline(in, s, '*'); + assert(in.good()); + assert(s == ""); + std::getline(in, s, '*'); + assert(in.eof()); + assert(s == " ghij"); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::wistringstream in(L" abc* def** ghij"); - std::wstring s(L"initial text"); - std::getline(in, s, L'*'); - assert(in.good()); - assert(s == L" abc"); - std::getline(in, s, L'*'); - assert(in.good()); - assert(s == L" def"); - std::getline(in, s, L'*'); - assert(in.good()); - assert(s == L""); - std::getline(in, s, L'*'); - assert(in.eof()); - assert(s == L" ghij"); - } + { + std::wistringstream in(L" abc* def** ghij"); + std::wstring s(L"initial text"); + std::getline(in, s, L'*'); + assert(in.good()); + assert(s == L" abc"); + std::getline(in, s, L'*'); + assert(in.good()); + assert(s == L" def"); + std::getline(in, s, L'*'); + assert(in.good()); + assert(s == L""); + std::getline(in, s, L'*'); + assert(in.eof()); + assert(s == L" ghij"); + } #endif #if TEST_STD_VER >= 11 - { - typedef std::basic_string, min_allocator> S; - std::istringstream in(" abc* def** ghij"); - S s("initial text"); - std::getline(in, s, '*'); - assert(in.good()); - assert(s == " abc"); - std::getline(in, s, '*'); - assert(in.good()); - assert(s == " def"); - std::getline(in, s, '*'); - assert(in.good()); - assert(s == ""); - std::getline(in, s, '*'); - assert(in.eof()); - assert(s == " ghij"); - } -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - typedef std::basic_string, min_allocator> S; - std::wistringstream in(L" abc* def** ghij"); - S s(L"initial text"); - std::getline(in, s, L'*'); - assert(in.good()); - assert(s == L" abc"); - std::getline(in, s, L'*'); - assert(in.good()); - assert(s == L" def"); - std::getline(in, s, L'*'); - assert(in.good()); - assert(s == L""); - std::getline(in, s, L'*'); - assert(in.eof()); - assert(s == L" ghij"); - } -#endif // TEST_HAS_NO_WIDE_CHARACTERS -#endif // TEST_STD_VER >= 11 + { + typedef std::basic_string, min_allocator> S; + std::istringstream in(" abc* def** ghij"); + S s("initial text"); + std::getline(in, s, '*'); + assert(in.good()); + assert(s == " abc"); + std::getline(in, s, '*'); + assert(in.good()); + assert(s == " def"); + std::getline(in, s, '*'); + assert(in.good()); + assert(s == ""); + std::getline(in, s, '*'); + assert(in.eof()); + assert(s == " ghij"); + } +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + typedef std::basic_string, min_allocator> S; + std::wistringstream in(L" abc* def** ghij"); + S s(L"initial text"); + std::getline(in, s, L'*'); + assert(in.good()); + assert(s == L" abc"); + std::getline(in, s, L'*'); + assert(in.good()); + assert(s == L" def"); + std::getline(in, s, L'*'); + assert(in.good()); + assert(s == L""); + std::getline(in, s, L'*'); + assert(in.eof()); + assert(s == L" ghij"); + } +# endif // TEST_HAS_NO_WIDE_CHARACTERS +#endif // TEST_STD_VER >= 11 #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::basic_stringbuf sb("hello"); - std::basic_istream is(&sb); - is.exceptions(std::ios::eofbit); + { + std::basic_stringbuf sb("hello"); + std::basic_istream is(&sb); + is.exceptions(std::ios::eofbit); - std::basic_string s; - bool threw = false; - try { - std::getline(is, s, '\n'); - } catch (std::ios::failure const&) { - threw = true; - } - - assert(!is.bad()); - assert(!is.fail()); - assert( is.eof()); - assert(threw); - assert(s == "hello"); + std::basic_string s; + bool threw = false; + try { + std::getline(is, s, '\n'); + } catch (std::ios::failure const&) { + threw = true; } -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::basic_stringbuf sb(L"hello"); - std::basic_istream is(&sb); - is.exceptions(std::ios::eofbit); - std::basic_string s; - bool threw = false; - try { - std::getline(is, s, L'\n'); - } catch (std::ios::failure const&) { - threw = true; - } + assert(!is.bad()); + assert(!is.fail()); + assert(is.eof()); + assert(threw); + assert(s == "hello"); + } +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + std::basic_stringbuf sb(L"hello"); + std::basic_istream is(&sb); + is.exceptions(std::ios::eofbit); - assert(!is.bad()); - assert(!is.fail()); - assert( is.eof()); - assert(threw); - assert(s == L"hello"); + std::basic_string s; + bool threw = false; + try { + std::getline(is, s, L'\n'); + } catch (std::ios::failure const&) { + threw = true; } -#endif // TEST_HAS_NO_WIDE_CHARACTERS - { - std::basic_stringbuf sb; - std::basic_istream is(&sb); - is.exceptions(std::ios::failbit); - std::basic_string s; - bool threw = false; - try { - std::getline(is, s, '\n'); - } catch (std::ios::failure const&) { - threw = true; - } + assert(!is.bad()); + assert(!is.fail()); + assert(is.eof()); + assert(threw); + assert(s == L"hello"); + } +# endif // TEST_HAS_NO_WIDE_CHARACTERS + { + std::basic_stringbuf sb; + std::basic_istream is(&sb); + is.exceptions(std::ios::failbit); - assert(!is.bad()); - assert( is.fail()); - assert( is.eof()); - assert(threw); - assert(s == ""); + std::basic_string s; + bool threw = false; + try { + std::getline(is, s, '\n'); + } catch (std::ios::failure const&) { + threw = true; } -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::basic_stringbuf sb; - std::basic_istream is(&sb); - is.exceptions(std::ios::failbit); - std::basic_string s; - bool threw = false; - try { - std::getline(is, s, L'\n'); - } catch (std::ios::failure const&) { - threw = true; - } + assert(!is.bad()); + assert(is.fail()); + assert(is.eof()); + assert(threw); + assert(s == ""); + } +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + std::basic_stringbuf sb; + std::basic_istream is(&sb); + is.exceptions(std::ios::failbit); - assert(!is.bad()); - assert( is.fail()); - assert( is.eof()); - assert(threw); - assert(s == L""); + std::basic_string s; + bool threw = false; + try { + std::getline(is, s, L'\n'); + } catch (std::ios::failure const&) { + threw = true; } -#endif // TEST_HAS_NO_WIDE_CHARACTERS -#endif // TEST_HAS_NO_EXCEPTIONS - return 0; + assert(!is.bad()); + assert(is.fail()); + assert(is.eof()); + assert(threw); + assert(s == L""); + } +# endif // TEST_HAS_NO_WIDE_CHARACTERS +#endif // TEST_HAS_NO_EXCEPTIONS + + return 0; } diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_delim_rv.pass.cpp @@ -20,33 +20,32 @@ #include "test_macros.h" #include "min_allocator.h" -int main(int, char**) -{ - { - std::string s("initial text"); - std::getline(std::istringstream(" abc* def* ghij"), s, '*'); - assert(s == " abc"); - } +int main(int, char**) { + { + std::string s("initial text"); + std::getline(std::istringstream(" abc* def* ghij"), s, '*'); + assert(s == " abc"); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::wstring s(L"initial text"); - std::getline(std::wistringstream(L" abc* def* ghij"), s, L'*'); - assert(s == L" abc"); - } + { + std::wstring s(L"initial text"); + std::getline(std::wistringstream(L" abc* def* ghij"), s, L'*'); + assert(s == L" abc"); + } #endif - { - typedef std::basic_string, min_allocator > S; - S s("initial text"); - std::getline(std::istringstream(" abc* def* ghij"), s, '*'); - assert(s == " abc"); - } + { + typedef std::basic_string, min_allocator > S; + S s("initial text"); + std::getline(std::istringstream(" abc* def* ghij"), s, '*'); + assert(s == " abc"); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - typedef std::basic_string, min_allocator > S; - S s(L"initial text"); - std::getline(std::wistringstream(L" abc* def* ghij"), s, L'*'); - assert(s == L" abc"); - } + { + typedef std::basic_string, min_allocator > S; + S s(L"initial text"); + std::getline(std::wistringstream(L" abc* def* ghij"), s, L'*'); + assert(s == L" abc"); + } #endif return 0; diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/get_line_rv.pass.cpp @@ -20,33 +20,32 @@ #include "test_macros.h" #include "min_allocator.h" -int main(int, char**) -{ - { - std::string s("initial text"); - std::getline(std::istringstream(" abc\n def\n ghij"), s); - assert(s == " abc"); - } +int main(int, char**) { + { + std::string s("initial text"); + std::getline(std::istringstream(" abc\n def\n ghij"), s); + assert(s == " abc"); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::wstring s(L"initial text"); - std::getline(std::wistringstream(L" abc\n def\n ghij"), s); - assert(s == L" abc"); - } + { + std::wstring s(L"initial text"); + std::getline(std::wistringstream(L" abc\n def\n ghij"), s); + assert(s == L" abc"); + } #endif - { - typedef std::basic_string, min_allocator > S; - S s("initial text"); - std::getline(std::istringstream(" abc\n def\n ghij"), s); - assert(s == " abc"); - } + { + typedef std::basic_string, min_allocator > S; + S s("initial text"); + std::getline(std::istringstream(" abc\n def\n ghij"), s); + assert(s == " abc"); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - typedef std::basic_string, min_allocator > S; - S s(L"initial text"); - std::getline(std::wistringstream(L" abc\n def\n ghij"), s); - assert(s == L" abc"); - } + { + typedef std::basic_string, min_allocator > S; + S s(L"initial text"); + std::getline(std::wistringstream(L" abc\n def\n ghij"), s); + assert(s == L" abc"); + } #endif return 0; diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/lit.local.cfg b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/lit.local.cfg --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/lit.local.cfg +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/lit.local.cfg @@ -1,3 +1,3 @@ -# These std::string functions require iostreams, which requires localization -if "no-localization" in config.available_features: - config.unsupported = True +#These std::string functions require iostreams, which requires localization +if +"no-localization" in config.available_features : config.unsupported = True diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_extract.pass.cpp @@ -20,142 +20,141 @@ #include "min_allocator.h" #include "test_macros.h" -int main(int, char**) -{ - { - std::istringstream in("a bc defghij"); - std::string s("initial text"); - in >> s; - assert(in.good()); - assert(s == "a"); - assert(in.peek() == ' '); - in >> s; - assert(in.good()); - assert(s == "bc"); - assert(in.peek() == ' '); - in.width(3); - in >> s; - assert(in.good()); - assert(s == "def"); - assert(in.peek() == 'g'); - in >> s; - assert(in.eof()); - assert(s == "ghij"); - in >> s; - assert(in.fail()); - } +int main(int, char**) { + { + std::istringstream in("a bc defghij"); + std::string s("initial text"); + in >> s; + assert(in.good()); + assert(s == "a"); + assert(in.peek() == ' '); + in >> s; + assert(in.good()); + assert(s == "bc"); + assert(in.peek() == ' '); + in.width(3); + in >> s; + assert(in.good()); + assert(s == "def"); + assert(in.peek() == 'g'); + in >> s; + assert(in.eof()); + assert(s == "ghij"); + in >> s; + assert(in.fail()); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::wistringstream in(L"a bc defghij"); - std::wstring s(L"initial text"); - in >> s; - assert(in.good()); - assert(s == L"a"); - assert(in.peek() == L' '); - in >> s; - assert(in.good()); - assert(s == L"bc"); - assert(in.peek() == L' '); - in.width(3); - in >> s; - assert(in.good()); - assert(s == L"def"); - assert(in.peek() == L'g'); - in >> s; - assert(in.eof()); - assert(s == L"ghij"); - in >> s; - assert(in.fail()); - } + { + std::wistringstream in(L"a bc defghij"); + std::wstring s(L"initial text"); + in >> s; + assert(in.good()); + assert(s == L"a"); + assert(in.peek() == L' '); + in >> s; + assert(in.good()); + assert(s == L"bc"); + assert(in.peek() == L' '); + in.width(3); + in >> s; + assert(in.good()); + assert(s == L"def"); + assert(in.peek() == L'g'); + in >> s; + assert(in.eof()); + assert(s == L"ghij"); + in >> s; + assert(in.fail()); + } #endif #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::stringbuf sb; - std::istream is(&sb); - is.exceptions(std::ios::failbit); + { + std::stringbuf sb; + std::istream is(&sb); + is.exceptions(std::ios::failbit); - bool threw = false; - try { - std::string s; - is >> s; - } catch (std::ios::failure const&) { - threw = true; - } - - assert(!is.bad()); - assert(is.fail()); - assert(is.eof()); - assert(threw); + bool threw = false; + try { + std::string s; + is >> s; + } catch (std::ios::failure const&) { + threw = true; } - { - std::stringbuf sb; - std::istream is(&sb); - is.exceptions(std::ios::eofbit); - bool threw = false; - try { - std::string s; - is >> s; - } catch (std::ios::failure const&) { - threw = true; - } + assert(!is.bad()); + assert(is.fail()); + assert(is.eof()); + assert(threw); + } + { + std::stringbuf sb; + std::istream is(&sb); + is.exceptions(std::ios::eofbit); - assert(!is.bad()); - assert(is.fail()); - assert(is.eof()); - assert(threw); + bool threw = false; + try { + std::string s; + is >> s; + } catch (std::ios::failure const&) { + threw = true; } + + assert(!is.bad()); + assert(is.fail()); + assert(is.eof()); + assert(threw); + } #endif // TEST_HAS_NO_EXCEPTIONS #if TEST_STD_VER >= 11 - { - typedef std::basic_string, min_allocator> S; - std::istringstream in("a bc defghij"); - S s("initial text"); - in >> s; - assert(in.good()); - assert(s == "a"); - assert(in.peek() == ' '); - in >> s; - assert(in.good()); - assert(s == "bc"); - assert(in.peek() == ' '); - in.width(3); - in >> s; - assert(in.good()); - assert(s == "def"); - assert(in.peek() == 'g'); - in >> s; - assert(in.eof()); - assert(s == "ghij"); - in >> s; - assert(in.fail()); - } -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - typedef std::basic_string, min_allocator> S; - std::wistringstream in(L"a bc defghij"); - S s(L"initial text"); - in >> s; - assert(in.good()); - assert(s == L"a"); - assert(in.peek() == L' '); - in >> s; - assert(in.good()); - assert(s == L"bc"); - assert(in.peek() == L' '); - in.width(3); - in >> s; - assert(in.good()); - assert(s == L"def"); - assert(in.peek() == L'g'); - in >> s; - assert(in.eof()); - assert(s == L"ghij"); - in >> s; - assert(in.fail()); - } -#endif // TEST_HAS_NO_WIDE_CHARACTERS -#endif // TEST_STD_VER >= 11 + { + typedef std::basic_string, min_allocator> S; + std::istringstream in("a bc defghij"); + S s("initial text"); + in >> s; + assert(in.good()); + assert(s == "a"); + assert(in.peek() == ' '); + in >> s; + assert(in.good()); + assert(s == "bc"); + assert(in.peek() == ' '); + in.width(3); + in >> s; + assert(in.good()); + assert(s == "def"); + assert(in.peek() == 'g'); + in >> s; + assert(in.eof()); + assert(s == "ghij"); + in >> s; + assert(in.fail()); + } +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + typedef std::basic_string, min_allocator> S; + std::wistringstream in(L"a bc defghij"); + S s(L"initial text"); + in >> s; + assert(in.good()); + assert(s == L"a"); + assert(in.peek() == L' '); + in >> s; + assert(in.good()); + assert(s == L"bc"); + assert(in.peek() == L' '); + in.width(3); + in >> s; + assert(in.good()); + assert(s == L"def"); + assert(in.peek() == L'g'); + in >> s; + assert(in.eof()); + assert(s == L"ghij"); + in >> s; + assert(in.fail()); + } +# endif // TEST_HAS_NO_WIDE_CHARACTERS +#endif // TEST_STD_VER >= 11 return 0; } diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.io/stream_insert.pass.cpp @@ -20,78 +20,77 @@ #include "test_macros.h" #include "min_allocator.h" -int main(int, char**) -{ - { - std::ostringstream out; - std::string s("some text"); - out << s; - assert(out.good()); - assert(s == out.str()); - } - { - std::ostringstream out; - std::string s("some text"); - out.width(12); - out << s; - assert(out.good()); - assert(" " + s == out.str()); - } +int main(int, char**) { + { + std::ostringstream out; + std::string s("some text"); + out << s; + assert(out.good()); + assert(s == out.str()); + } + { + std::ostringstream out; + std::string s("some text"); + out.width(12); + out << s; + assert(out.good()); + assert(" " + s == out.str()); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::wostringstream out; - std::wstring s(L"some text"); - out << s; - assert(out.good()); - assert(s == out.str()); - } - { - std::wostringstream out; - std::wstring s(L"some text"); - out.width(12); - out << s; - assert(out.good()); - assert(L" " + s == out.str()); - } + { + std::wostringstream out; + std::wstring s(L"some text"); + out << s; + assert(out.good()); + assert(s == out.str()); + } + { + std::wostringstream out; + std::wstring s(L"some text"); + out.width(12); + out << s; + assert(out.good()); + assert(L" " + s == out.str()); + } #endif #if TEST_STD_VER >= 11 - { - typedef std::basic_string, min_allocator> S; - std::basic_ostringstream out; - S s("some text"); - out << s; - assert(out.good()); - assert(s == out.str()); - } - { - typedef std::basic_string, min_allocator> S; - std::basic_ostringstream out; - S s("some text"); - out.width(12); - out << s; - assert(out.good()); - assert(" " + s == out.str()); - } -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - typedef std::basic_string, min_allocator> S; - std::basic_ostringstream out; - S s(L"some text"); - out << s; - assert(out.good()); - assert(s == out.str()); - } - { - typedef std::basic_string, min_allocator> S; - std::basic_ostringstream out; - S s(L"some text"); - out.width(12); - out << s; - assert(out.good()); - assert(L" " + s == out.str()); - } -#endif // TEST_HAS_NO_WIDE_CHARACTERS -#endif // TEST_STD_VER >= 11 + { + typedef std::basic_string, min_allocator> S; + std::basic_ostringstream out; + S s("some text"); + out << s; + assert(out.good()); + assert(s == out.str()); + } + { + typedef std::basic_string, min_allocator> S; + std::basic_ostringstream out; + S s("some text"); + out.width(12); + out << s; + assert(out.good()); + assert(" " + s == out.str()); + } +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + typedef std::basic_string, min_allocator> S; + std::basic_ostringstream out; + S s(L"some text"); + out << s; + assert(out.good()); + assert(s == out.str()); + } + { + typedef std::basic_string, min_allocator> S; + std::basic_ostringstream out; + S s(L"some text"); + out.width(12); + out << s; + assert(out.good()); + assert(L" " + s == out.str()); + } +# endif // TEST_HAS_NO_WIDE_CHARACTERS +#endif // TEST_STD_VER >= 11 return 0; } diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap.pass.cpp @@ -21,16 +21,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(S s1, S s2) -{ - S s1_ = s1; - S s2_ = s2; - swap(s1, s2); - LIBCPP_ASSERT(s1.__invariants()); - LIBCPP_ASSERT(s2.__invariants()); - assert(s1 == s2_); - assert(s2 == s1_); +TEST_CONSTEXPR_CXX20 void test(S s1, S s2) { + S s1_ = s1; + S s2_ = s2; + swap(s1, s2); + LIBCPP_ASSERT(s1.__invariants()); + LIBCPP_ASSERT(s2.__invariants()); + assert(s1 == s2_); + assert(s2 == s1_); } TEST_CONSTEXPR_CXX20 bool test() { @@ -78,8 +76,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string.special/swap_noexcept.pass.cpp @@ -28,58 +28,55 @@ #include "test_allocator.h" template -struct some_alloc -{ - typedef T value_type; +struct some_alloc { + typedef T value_type; - some_alloc() {} - some_alloc(const some_alloc&); - T *allocate(std::size_t); - void deallocate(void*, unsigned) {} - typedef std::true_type propagate_on_container_swap; + some_alloc() {} + some_alloc(const some_alloc&); + T* allocate(std::size_t); + void deallocate(void*, unsigned) {} + typedef std::true_type propagate_on_container_swap; }; template -struct some_alloc2 -{ - typedef T value_type; +struct some_alloc2 { + typedef T value_type; - some_alloc2() {} - some_alloc2(const some_alloc2&); - T *allocate(std::size_t); - void deallocate(void*, unsigned) {} + some_alloc2() {} + some_alloc2(const some_alloc2&); + T* allocate(std::size_t); + void deallocate(void*, unsigned) {} - typedef std::false_type propagate_on_container_swap; - typedef std::true_type is_always_equal; + typedef std::false_type propagate_on_container_swap; + typedef std::true_type is_always_equal; }; -int main(int, char**) -{ - { - typedef std::string C; - static_assert(noexcept(swap(std::declval(), std::declval())), ""); - } +int main(int, char**) { + { + typedef std::string C; + static_assert(noexcept(swap(std::declval(), std::declval())), ""); + } #if defined(_LIBCPP_VERSION) - { - typedef std::basic_string, test_allocator> C; - static_assert(noexcept(swap(std::declval(), std::declval())), ""); - } + { + typedef std::basic_string, test_allocator> C; + static_assert(noexcept(swap(std::declval(), std::declval())), ""); + } #endif // _LIBCPP_VERSION - { - typedef std::basic_string, some_alloc> C; + { + typedef std::basic_string, some_alloc> C; #if TEST_STD_VER >= 14 // In C++14, if POCS is set, swapping the allocator is required not to throw - static_assert( noexcept(swap(std::declval(), std::declval())), ""); + static_assert(noexcept(swap(std::declval(), std::declval())), ""); #else - static_assert(!noexcept(swap(std::declval(), std::declval())), ""); + static_assert(!noexcept(swap(std::declval(), std::declval())), ""); #endif - } + } #if TEST_STD_VER >= 14 - { - typedef std::basic_string, some_alloc2> C; + { + typedef std::basic_string, some_alloc2> C; // if the allocators are always equal, then the swap can be noexcept - static_assert( noexcept(swap(std::declval(), std::declval())), ""); - } + static_assert(noexcept(swap(std::declval(), std::declval())), ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/pointer_string.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const typename S::value_type* lhs, const S& rhs, bool x) -{ - assert((lhs != rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const typename S::value_type* lhs, const S& rhs, bool x) { + assert((lhs != rhs) == x); } template @@ -53,8 +51,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_pointer.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const typename S::value_type* rhs, bool x) -{ - assert((lhs != rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const typename S::value_type* rhs, bool x) { + assert((lhs != rhs) == x); } template @@ -53,8 +51,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string.pass.cpp @@ -19,10 +19,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const S& rhs, bool x) -{ - assert((lhs != rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const S& rhs, bool x) { + assert((lhs != rhs) == x); } template @@ -54,8 +52,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_string_view.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, SV rhs, bool x) -{ - assert((lhs != rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, SV rhs, bool x) { + assert((lhs != rhs) == x); } template @@ -53,8 +51,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_view_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_view_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op!=/string_view_string.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(SV lhs, const S& rhs, bool x) -{ - assert((lhs != rhs) == x); +TEST_CONSTEXPR_CXX20 void test(SV lhs, const S& rhs, bool x) { + assert((lhs != rhs) == x); } template @@ -53,8 +51,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/allocator_propagation.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/allocator_propagation.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/allocator_propagation.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/allocator_propagation.pass.cpp @@ -196,9 +196,9 @@ #endif #if TEST_STD_VER > 17 static_assert(test()); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS +# ifndef TEST_HAS_NO_WIDE_CHARACTERS static_assert(test()); -#endif +# endif #endif return 0; diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/char_string.pass.cpp @@ -52,9 +52,7 @@ test1('a', S("12345678901234567890"), S("a12345678901234567890")); } { - typedef std::basic_string, - min_allocator > - S; + typedef std::basic_string, min_allocator > S; test0('a', S(""), S("a")); test0('a', S("12345"), S("a12345")); test0('a', S("1234567890"), S("a1234567890")); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/pointer_string.pass.cpp @@ -49,14 +49,11 @@ test0("abcdefghij", S(""), S("abcdefghij")); test0("abcdefghij", S("12345"), S("abcdefghij12345")); test0("abcdefghij", S("1234567890"), S("abcdefghij1234567890")); - test0("abcdefghij", S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test0("abcdefghij", S("12345678901234567890"), S("abcdefghij12345678901234567890")); test0("abcdefghijklmnopqrst", S(""), S("abcdefghijklmnopqrst")); test0("abcdefghijklmnopqrst", S("12345"), S("abcdefghijklmnopqrst12345")); - test0("abcdefghijklmnopqrst", S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test0("abcdefghijklmnopqrst", S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test0("abcdefghijklmnopqrst", S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test0("abcdefghijklmnopqrst", S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); } #if TEST_STD_VER >= 11 @@ -73,19 +70,14 @@ test1("abcdefghij", S(""), S("abcdefghij")); test1("abcdefghij", S("12345"), S("abcdefghij12345")); test1("abcdefghij", S("1234567890"), S("abcdefghij1234567890")); - test1("abcdefghij", S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test1("abcdefghij", S("12345678901234567890"), S("abcdefghij12345678901234567890")); test1("abcdefghijklmnopqrst", S(""), S("abcdefghijklmnopqrst")); test1("abcdefghijklmnopqrst", S("12345"), S("abcdefghijklmnopqrst12345")); - test1("abcdefghijklmnopqrst", S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test1("abcdefghijklmnopqrst", S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test1("abcdefghijklmnopqrst", S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test1("abcdefghijklmnopqrst", S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); } { - typedef std::basic_string, - min_allocator > - S; + typedef std::basic_string, min_allocator > S; test0("", S(""), S("")); test0("", S("12345"), S("12345")); test0("", S("1234567890"), S("1234567890")); @@ -97,14 +89,11 @@ test0("abcdefghij", S(""), S("abcdefghij")); test0("abcdefghij", S("12345"), S("abcdefghij12345")); test0("abcdefghij", S("1234567890"), S("abcdefghij1234567890")); - test0("abcdefghij", S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test0("abcdefghij", S("12345678901234567890"), S("abcdefghij12345678901234567890")); test0("abcdefghijklmnopqrst", S(""), S("abcdefghijklmnopqrst")); test0("abcdefghijklmnopqrst", S("12345"), S("abcdefghijklmnopqrst12345")); - test0("abcdefghijklmnopqrst", S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test0("abcdefghijklmnopqrst", S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test0("abcdefghijklmnopqrst", S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test0("abcdefghijklmnopqrst", S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); test1("", S(""), S("")); test1("", S("12345"), S("12345")); @@ -117,14 +106,11 @@ test1("abcdefghij", S(""), S("abcdefghij")); test1("abcdefghij", S("12345"), S("abcdefghij12345")); test1("abcdefghij", S("1234567890"), S("abcdefghij1234567890")); - test1("abcdefghij", S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test1("abcdefghij", S("12345678901234567890"), S("abcdefghij12345678901234567890")); test1("abcdefghijklmnopqrst", S(""), S("abcdefghijklmnopqrst")); test1("abcdefghijklmnopqrst", S("12345"), S("abcdefghijklmnopqrst12345")); - test1("abcdefghijklmnopqrst", S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test1("abcdefghijklmnopqrst", S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test1("abcdefghijklmnopqrst", S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test1("abcdefghijklmnopqrst", S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); } #endif diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_char.pass.cpp @@ -52,9 +52,7 @@ test1(S("abcdefghijklmnopqrst"), '1', S("abcdefghijklmnopqrst1")); } { - typedef std::basic_string, - min_allocator > - S; + typedef std::basic_string, min_allocator > S; test0(S(""), '1', S("1")); test0(S("abcde"), '1', S("abcde1")); test0(S("abcdefghij"), '1', S("abcdefghij1")); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_pointer.pass.cpp @@ -49,14 +49,11 @@ test0(S("abcdefghij"), "", S("abcdefghij")); test0(S("abcdefghij"), "12345", S("abcdefghij12345")); test0(S("abcdefghij"), "1234567890", S("abcdefghij1234567890")); - test0(S("abcdefghij"), "12345678901234567890", - S("abcdefghij12345678901234567890")); + test0(S("abcdefghij"), "12345678901234567890", S("abcdefghij12345678901234567890")); test0(S("abcdefghijklmnopqrst"), "", S("abcdefghijklmnopqrst")); test0(S("abcdefghijklmnopqrst"), "12345", S("abcdefghijklmnopqrst12345")); - test0(S("abcdefghijklmnopqrst"), "1234567890", - S("abcdefghijklmnopqrst1234567890")); - test0(S("abcdefghijklmnopqrst"), "12345678901234567890", - S("abcdefghijklmnopqrst12345678901234567890")); + test0(S("abcdefghijklmnopqrst"), "1234567890", S("abcdefghijklmnopqrst1234567890")); + test0(S("abcdefghijklmnopqrst"), "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); } #if TEST_STD_VER >= 11 { @@ -72,19 +69,14 @@ test1(S("abcdefghij"), "", S("abcdefghij")); test1(S("abcdefghij"), "12345", S("abcdefghij12345")); test1(S("abcdefghij"), "1234567890", S("abcdefghij1234567890")); - test1(S("abcdefghij"), "12345678901234567890", - S("abcdefghij12345678901234567890")); + test1(S("abcdefghij"), "12345678901234567890", S("abcdefghij12345678901234567890")); test1(S("abcdefghijklmnopqrst"), "", S("abcdefghijklmnopqrst")); test1(S("abcdefghijklmnopqrst"), "12345", S("abcdefghijklmnopqrst12345")); - test1(S("abcdefghijklmnopqrst"), "1234567890", - S("abcdefghijklmnopqrst1234567890")); - test1(S("abcdefghijklmnopqrst"), "12345678901234567890", - S("abcdefghijklmnopqrst12345678901234567890")); + test1(S("abcdefghijklmnopqrst"), "1234567890", S("abcdefghijklmnopqrst1234567890")); + test1(S("abcdefghijklmnopqrst"), "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); } { - typedef std::basic_string, - min_allocator > - S; + typedef std::basic_string, min_allocator > S; test0(S(""), "", S("")); test0(S(""), "12345", S("12345")); test0(S(""), "1234567890", S("1234567890")); @@ -96,14 +88,11 @@ test0(S("abcdefghij"), "", S("abcdefghij")); test0(S("abcdefghij"), "12345", S("abcdefghij12345")); test0(S("abcdefghij"), "1234567890", S("abcdefghij1234567890")); - test0(S("abcdefghij"), "12345678901234567890", - S("abcdefghij12345678901234567890")); + test0(S("abcdefghij"), "12345678901234567890", S("abcdefghij12345678901234567890")); test0(S("abcdefghijklmnopqrst"), "", S("abcdefghijklmnopqrst")); test0(S("abcdefghijklmnopqrst"), "12345", S("abcdefghijklmnopqrst12345")); - test0(S("abcdefghijklmnopqrst"), "1234567890", - S("abcdefghijklmnopqrst1234567890")); - test0(S("abcdefghijklmnopqrst"), "12345678901234567890", - S("abcdefghijklmnopqrst12345678901234567890")); + test0(S("abcdefghijklmnopqrst"), "1234567890", S("abcdefghijklmnopqrst1234567890")); + test0(S("abcdefghijklmnopqrst"), "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); test1(S(""), "", S("")); test1(S(""), "12345", S("12345")); @@ -116,14 +105,11 @@ test1(S("abcdefghij"), "", S("abcdefghij")); test1(S("abcdefghij"), "12345", S("abcdefghij12345")); test1(S("abcdefghij"), "1234567890", S("abcdefghij1234567890")); - test1(S("abcdefghij"), "12345678901234567890", - S("abcdefghij12345678901234567890")); + test1(S("abcdefghij"), "12345678901234567890", S("abcdefghij12345678901234567890")); test1(S("abcdefghijklmnopqrst"), "", S("abcdefghijklmnopqrst")); test1(S("abcdefghijklmnopqrst"), "12345", S("abcdefghijklmnopqrst12345")); - test1(S("abcdefghijklmnopqrst"), "1234567890", - S("abcdefghijklmnopqrst1234567890")); - test1(S("abcdefghijklmnopqrst"), "12345678901234567890", - S("abcdefghijklmnopqrst12345678901234567890")); + test1(S("abcdefghijklmnopqrst"), "1234567890", S("abcdefghijklmnopqrst1234567890")); + test1(S("abcdefghijklmnopqrst"), "12345678901234567890", S("abcdefghijklmnopqrst12345678901234567890")); } #endif diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_op+/string_string.pass.cpp @@ -67,20 +67,15 @@ test0(S("abcde"), S(""), S("abcde")); test0(S("abcde"), S("12345"), S("abcde12345")); test0(S("abcde"), S("1234567890"), S("abcde1234567890")); - test0(S("abcde"), S("12345678901234567890"), - S("abcde12345678901234567890")); + test0(S("abcde"), S("12345678901234567890"), S("abcde12345678901234567890")); test0(S("abcdefghij"), S(""), S("abcdefghij")); test0(S("abcdefghij"), S("12345"), S("abcdefghij12345")); test0(S("abcdefghij"), S("1234567890"), S("abcdefghij1234567890")); - test0(S("abcdefghij"), S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test0(S("abcdefghij"), S("12345678901234567890"), S("abcdefghij12345678901234567890")); test0(S("abcdefghijklmnopqrst"), S(""), S("abcdefghijklmnopqrst")); - test0(S("abcdefghijklmnopqrst"), S("12345"), - S("abcdefghijklmnopqrst12345")); - test0(S("abcdefghijklmnopqrst"), S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test0(S("abcdefghijklmnopqrst"), S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test0(S("abcdefghijklmnopqrst"), S("12345"), S("abcdefghijklmnopqrst12345")); + test0(S("abcdefghijklmnopqrst"), S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test0(S("abcdefghijklmnopqrst"), S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); } #if TEST_STD_VER >= 11 { @@ -92,20 +87,15 @@ test1(S("abcde"), S(""), S("abcde")); test1(S("abcde"), S("12345"), S("abcde12345")); test1(S("abcde"), S("1234567890"), S("abcde1234567890")); - test1(S("abcde"), S("12345678901234567890"), - S("abcde12345678901234567890")); + test1(S("abcde"), S("12345678901234567890"), S("abcde12345678901234567890")); test1(S("abcdefghij"), S(""), S("abcdefghij")); test1(S("abcdefghij"), S("12345"), S("abcdefghij12345")); test1(S("abcdefghij"), S("1234567890"), S("abcdefghij1234567890")); - test1(S("abcdefghij"), S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test1(S("abcdefghij"), S("12345678901234567890"), S("abcdefghij12345678901234567890")); test1(S("abcdefghijklmnopqrst"), S(""), S("abcdefghijklmnopqrst")); - test1(S("abcdefghijklmnopqrst"), S("12345"), - S("abcdefghijklmnopqrst12345")); - test1(S("abcdefghijklmnopqrst"), S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test1(S("abcdefghijklmnopqrst"), S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test1(S("abcdefghijklmnopqrst"), S("12345"), S("abcdefghijklmnopqrst12345")); + test1(S("abcdefghijklmnopqrst"), S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test1(S("abcdefghijklmnopqrst"), S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); test2(S(""), S(""), S("")); test2(S(""), S("12345"), S("12345")); @@ -114,20 +104,15 @@ test2(S("abcde"), S(""), S("abcde")); test2(S("abcde"), S("12345"), S("abcde12345")); test2(S("abcde"), S("1234567890"), S("abcde1234567890")); - test2(S("abcde"), S("12345678901234567890"), - S("abcde12345678901234567890")); + test2(S("abcde"), S("12345678901234567890"), S("abcde12345678901234567890")); test2(S("abcdefghij"), S(""), S("abcdefghij")); test2(S("abcdefghij"), S("12345"), S("abcdefghij12345")); test2(S("abcdefghij"), S("1234567890"), S("abcdefghij1234567890")); - test2(S("abcdefghij"), S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test2(S("abcdefghij"), S("12345678901234567890"), S("abcdefghij12345678901234567890")); test2(S("abcdefghijklmnopqrst"), S(""), S("abcdefghijklmnopqrst")); - test2(S("abcdefghijklmnopqrst"), S("12345"), - S("abcdefghijklmnopqrst12345")); - test2(S("abcdefghijklmnopqrst"), S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test2(S("abcdefghijklmnopqrst"), S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test2(S("abcdefghijklmnopqrst"), S("12345"), S("abcdefghijklmnopqrst12345")); + test2(S("abcdefghijklmnopqrst"), S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test2(S("abcdefghijklmnopqrst"), S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); test3(S(""), S(""), S("")); test3(S(""), S("12345"), S("12345")); @@ -136,25 +121,18 @@ test3(S("abcde"), S(""), S("abcde")); test3(S("abcde"), S("12345"), S("abcde12345")); test3(S("abcde"), S("1234567890"), S("abcde1234567890")); - test3(S("abcde"), S("12345678901234567890"), - S("abcde12345678901234567890")); + test3(S("abcde"), S("12345678901234567890"), S("abcde12345678901234567890")); test3(S("abcdefghij"), S(""), S("abcdefghij")); test3(S("abcdefghij"), S("12345"), S("abcdefghij12345")); test3(S("abcdefghij"), S("1234567890"), S("abcdefghij1234567890")); - test3(S("abcdefghij"), S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test3(S("abcdefghij"), S("12345678901234567890"), S("abcdefghij12345678901234567890")); test3(S("abcdefghijklmnopqrst"), S(""), S("abcdefghijklmnopqrst")); - test3(S("abcdefghijklmnopqrst"), S("12345"), - S("abcdefghijklmnopqrst12345")); - test3(S("abcdefghijklmnopqrst"), S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test3(S("abcdefghijklmnopqrst"), S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test3(S("abcdefghijklmnopqrst"), S("12345"), S("abcdefghijklmnopqrst12345")); + test3(S("abcdefghijklmnopqrst"), S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test3(S("abcdefghijklmnopqrst"), S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); } { - typedef std::basic_string, - min_allocator > - S; + typedef std::basic_string, min_allocator > S; test0(S(""), S(""), S("")); test0(S(""), S("12345"), S("12345")); test0(S(""), S("1234567890"), S("1234567890")); @@ -162,20 +140,15 @@ test0(S("abcde"), S(""), S("abcde")); test0(S("abcde"), S("12345"), S("abcde12345")); test0(S("abcde"), S("1234567890"), S("abcde1234567890")); - test0(S("abcde"), S("12345678901234567890"), - S("abcde12345678901234567890")); + test0(S("abcde"), S("12345678901234567890"), S("abcde12345678901234567890")); test0(S("abcdefghij"), S(""), S("abcdefghij")); test0(S("abcdefghij"), S("12345"), S("abcdefghij12345")); test0(S("abcdefghij"), S("1234567890"), S("abcdefghij1234567890")); - test0(S("abcdefghij"), S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test0(S("abcdefghij"), S("12345678901234567890"), S("abcdefghij12345678901234567890")); test0(S("abcdefghijklmnopqrst"), S(""), S("abcdefghijklmnopqrst")); - test0(S("abcdefghijklmnopqrst"), S("12345"), - S("abcdefghijklmnopqrst12345")); - test0(S("abcdefghijklmnopqrst"), S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test0(S("abcdefghijklmnopqrst"), S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test0(S("abcdefghijklmnopqrst"), S("12345"), S("abcdefghijklmnopqrst12345")); + test0(S("abcdefghijklmnopqrst"), S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test0(S("abcdefghijklmnopqrst"), S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); test1(S(""), S(""), S("")); test1(S(""), S("12345"), S("12345")); @@ -184,20 +157,15 @@ test1(S("abcde"), S(""), S("abcde")); test1(S("abcde"), S("12345"), S("abcde12345")); test1(S("abcde"), S("1234567890"), S("abcde1234567890")); - test1(S("abcde"), S("12345678901234567890"), - S("abcde12345678901234567890")); + test1(S("abcde"), S("12345678901234567890"), S("abcde12345678901234567890")); test1(S("abcdefghij"), S(""), S("abcdefghij")); test1(S("abcdefghij"), S("12345"), S("abcdefghij12345")); test1(S("abcdefghij"), S("1234567890"), S("abcdefghij1234567890")); - test1(S("abcdefghij"), S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test1(S("abcdefghij"), S("12345678901234567890"), S("abcdefghij12345678901234567890")); test1(S("abcdefghijklmnopqrst"), S(""), S("abcdefghijklmnopqrst")); - test1(S("abcdefghijklmnopqrst"), S("12345"), - S("abcdefghijklmnopqrst12345")); - test1(S("abcdefghijklmnopqrst"), S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test1(S("abcdefghijklmnopqrst"), S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test1(S("abcdefghijklmnopqrst"), S("12345"), S("abcdefghijklmnopqrst12345")); + test1(S("abcdefghijklmnopqrst"), S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test1(S("abcdefghijklmnopqrst"), S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); test2(S(""), S(""), S("")); test2(S(""), S("12345"), S("12345")); @@ -206,20 +174,15 @@ test2(S("abcde"), S(""), S("abcde")); test2(S("abcde"), S("12345"), S("abcde12345")); test2(S("abcde"), S("1234567890"), S("abcde1234567890")); - test2(S("abcde"), S("12345678901234567890"), - S("abcde12345678901234567890")); + test2(S("abcde"), S("12345678901234567890"), S("abcde12345678901234567890")); test2(S("abcdefghij"), S(""), S("abcdefghij")); test2(S("abcdefghij"), S("12345"), S("abcdefghij12345")); test2(S("abcdefghij"), S("1234567890"), S("abcdefghij1234567890")); - test2(S("abcdefghij"), S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test2(S("abcdefghij"), S("12345678901234567890"), S("abcdefghij12345678901234567890")); test2(S("abcdefghijklmnopqrst"), S(""), S("abcdefghijklmnopqrst")); - test2(S("abcdefghijklmnopqrst"), S("12345"), - S("abcdefghijklmnopqrst12345")); - test2(S("abcdefghijklmnopqrst"), S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test2(S("abcdefghijklmnopqrst"), S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test2(S("abcdefghijklmnopqrst"), S("12345"), S("abcdefghijklmnopqrst12345")); + test2(S("abcdefghijklmnopqrst"), S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test2(S("abcdefghijklmnopqrst"), S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); test3(S(""), S(""), S("")); test3(S(""), S("12345"), S("12345")); @@ -228,20 +191,15 @@ test3(S("abcde"), S(""), S("abcde")); test3(S("abcde"), S("12345"), S("abcde12345")); test3(S("abcde"), S("1234567890"), S("abcde1234567890")); - test3(S("abcde"), S("12345678901234567890"), - S("abcde12345678901234567890")); + test3(S("abcde"), S("12345678901234567890"), S("abcde12345678901234567890")); test3(S("abcdefghij"), S(""), S("abcdefghij")); test3(S("abcdefghij"), S("12345"), S("abcdefghij12345")); test3(S("abcdefghij"), S("1234567890"), S("abcdefghij1234567890")); - test3(S("abcdefghij"), S("12345678901234567890"), - S("abcdefghij12345678901234567890")); + test3(S("abcdefghij"), S("12345678901234567890"), S("abcdefghij12345678901234567890")); test3(S("abcdefghijklmnopqrst"), S(""), S("abcdefghijklmnopqrst")); - test3(S("abcdefghijklmnopqrst"), S("12345"), - S("abcdefghijklmnopqrst12345")); - test3(S("abcdefghijklmnopqrst"), S("1234567890"), - S("abcdefghijklmnopqrst1234567890")); - test3(S("abcdefghijklmnopqrst"), S("12345678901234567890"), - S("abcdefghijklmnopqrst12345678901234567890")); + test3(S("abcdefghijklmnopqrst"), S("12345"), S("abcdefghijklmnopqrst12345")); + test3(S("abcdefghijklmnopqrst"), S("1234567890"), S("abcdefghijklmnopqrst1234567890")); + test3(S("abcdefghijklmnopqrst"), S("12345678901234567890"), S("abcdefghijklmnopqrst12345678901234567890")); } #endif // TEST_STD_VER >= 11 diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/pointer_string.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const typename S::value_type* lhs, const S& rhs, bool x) -{ - assert((lhs == rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const typename S::value_type* lhs, const S& rhs, bool x) { + assert((lhs == rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_pointer.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const typename S::value_type* rhs, bool x) -{ - assert((lhs == rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const typename S::value_type* rhs, bool x) { + assert((lhs == rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string.pass.cpp @@ -19,10 +19,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const S& rhs, bool x) -{ - assert((lhs == rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const S& rhs, bool x) { + assert((lhs == rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_string_view.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, SV rhs, bool x) -{ - assert((lhs == rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, SV rhs, bool x) { + assert((lhs == rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -46,7 +44,7 @@ } #if TEST_STD_VER >= 11 { - typedef std::basic_string , min_allocator> S; + typedef std::basic_string, min_allocator> S; typedef std::basic_string_view> SV; test(S(""), SV(""), true); test(S(""), SV("abcde"), false); @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_operator==/string_view_string.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(SV lhs, const S& rhs, bool x) -{ - assert((lhs == rhs) == x); +TEST_CONSTEXPR_CXX20 void test(SV lhs, const S& rhs, bool x) { + assert((lhs == rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/pointer_string.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const typename S::value_type* lhs, const S& rhs, bool x) -{ - assert((lhs > rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const typename S::value_type* lhs, const S& rhs, bool x) { + assert((lhs > rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_pointer.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const typename S::value_type* rhs, bool x) -{ - assert((lhs > rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const typename S::value_type* rhs, bool x) { + assert((lhs > rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string.pass.cpp @@ -19,10 +19,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const S& rhs, bool x) -{ - assert((lhs > rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const S& rhs, bool x) { + assert((lhs > rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_string_view.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, SV rhs, bool x) -{ - assert((lhs > rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, SV rhs, bool x) { + assert((lhs > rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -46,7 +44,7 @@ } #if TEST_STD_VER >= 11 { - typedef std::basic_string , min_allocator> S; + typedef std::basic_string, min_allocator> S; typedef std::basic_string_view> SV; test(S(""), SV(""), false); test(S(""), SV("abcde"), false); @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt/string_view_string.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(SV lhs, const S& rhs, bool x) -{ - assert((lhs > rhs) == x); +TEST_CONSTEXPR_CXX20 void test(SV lhs, const S& rhs, bool x) { + assert((lhs > rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -46,7 +44,7 @@ } #if TEST_STD_VER >= 11 { - typedef std::basic_string , min_allocator> S; + typedef std::basic_string, min_allocator> S; typedef std::basic_string_view> SV; test(SV(""), S(""), false); test(SV(""), S("abcde"), false); @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/pointer_string.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const typename S::value_type* lhs, const S& rhs, bool x) -{ - assert((lhs >= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const typename S::value_type* lhs, const S& rhs, bool x) { + assert((lhs >= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_pointer.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const typename S::value_type* rhs, bool x) -{ - assert((lhs >= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const typename S::value_type* rhs, bool x) { + assert((lhs >= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string.pass.cpp @@ -19,10 +19,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const S& rhs, bool x) -{ - assert((lhs >= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const S& rhs, bool x) { + assert((lhs >= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_string_view.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, SV rhs, bool x) -{ - assert((lhs >= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, SV rhs, bool x) { + assert((lhs >= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_opgt=/string_view_string.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(SV lhs, const S& rhs, bool x) -{ - assert((lhs >= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(SV lhs, const S& rhs, bool x) { + assert((lhs >= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/pointer_string.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const typename S::value_type* lhs, const S& rhs, bool x) -{ - assert((lhs < rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const typename S::value_type* lhs, const S& rhs, bool x) { + assert((lhs < rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_pointer.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const typename S::value_type* rhs, bool x) -{ - assert((lhs < rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const typename S::value_type* rhs, bool x) { + assert((lhs < rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string.pass.cpp @@ -19,10 +19,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const S& rhs, bool x) -{ - assert((lhs < rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const S& rhs, bool x) { + assert((lhs < rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_string_view.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, SV rhs, bool x) -{ - assert((lhs < rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, SV rhs, bool x) { + assert((lhs < rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt/string_view_string.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(SV lhs, const S& rhs, bool x) -{ - assert((lhs < rhs) == x); +TEST_CONSTEXPR_CXX20 void test(SV lhs, const S& rhs, bool x) { + assert((lhs < rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/pointer_string.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const typename S::value_type* lhs, const S& rhs, bool x) -{ - assert((lhs <= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const typename S::value_type* lhs, const S& rhs, bool x) { + assert((lhs <= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_pointer.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const typename S::value_type* rhs, bool x) -{ - assert((lhs <= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const typename S::value_type* rhs, bool x) { + assert((lhs <= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -69,8 +67,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string.pass.cpp @@ -19,10 +19,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, const S& rhs, bool x) -{ - assert((lhs <= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, const S& rhs, bool x) { + assert((lhs <= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_string_view.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& lhs, SV rhs, bool x) -{ - assert((lhs <= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(const S& lhs, SV rhs, bool x) { + assert((lhs <= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.nonmembers/string_oplt=/string_view_string.pass.cpp @@ -17,10 +17,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(SV lhs, const S& rhs, bool x) -{ - assert((lhs <= rhs) == x); +TEST_CONSTEXPR_CXX20 void test(SV lhs, const S& rhs, bool x) { + assert((lhs <= rhs) == x); } TEST_CONSTEXPR_CXX20 bool test() { @@ -70,8 +68,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/c_str.pass.cpp @@ -17,18 +17,14 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s) -{ - typedef typename S::traits_type T; - const typename S::value_type* str = s.c_str(); - if (s.size() > 0) - { - assert(T::compare(str, &s[0], s.size()) == 0); - assert(T::eq(str[s.size()], typename S::value_type())); - } - else - assert(T::eq(str[0], typename S::value_type())); +TEST_CONSTEXPR_CXX20 void test(const S& s) { + typedef typename S::traits_type T; + const typename S::value_type* str = s.c_str(); + if (s.size() > 0) { + assert(T::compare(str, &s[0], s.size()) == 0); + assert(T::eq(str[s.size()], typename S::value_type())); + } else + assert(T::eq(str[0], typename S::value_type())); } TEST_CONSTEXPR_CXX20 bool test() { @@ -52,8 +48,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/data.pass.cpp @@ -18,33 +18,25 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test_const(const S& s) -{ - typedef typename S::traits_type T; - const typename S::value_type* str = s.data(); - if (s.size() > 0) - { - assert(T::compare(str, &s[0], s.size()) == 0); - assert(T::eq(str[s.size()], typename S::value_type())); - } - else - assert(T::eq(str[0], typename S::value_type())); +TEST_CONSTEXPR_CXX20 void test_const(const S& s) { + typedef typename S::traits_type T; + const typename S::value_type* str = s.data(); + if (s.size() > 0) { + assert(T::compare(str, &s[0], s.size()) == 0); + assert(T::eq(str[s.size()], typename S::value_type())); + } else + assert(T::eq(str[0], typename S::value_type())); } template -TEST_CONSTEXPR_CXX20 void -test_nonconst(S& s) -{ - typedef typename S::traits_type T; - typename S::value_type* str = s.data(); - if (s.size() > 0) - { - assert(T::compare(str, &s[0], s.size()) == 0); - assert(T::eq(str[s.size()], typename S::value_type())); - } - else - assert(T::eq(str[0], typename S::value_type())); +TEST_CONSTEXPR_CXX20 void test_nonconst(S& s) { + typedef typename S::traits_type T; + typename S::value_type* str = s.data(); + if (s.size() > 0) { + assert(T::compare(str, &s[0], s.size()) == 0); + assert(T::eq(str[s.size()], typename S::value_type())); + } else + assert(T::eq(str[0], typename S::value_type())); } TEST_CONSTEXPR_CXX20 bool test() { @@ -67,18 +59,21 @@ #if TEST_STD_VER > 14 { typedef std::string S; - S s1(""); test_nonconst(s1); - S s2("abcde"); test_nonconst(s2); - S s3("abcdefghij"); test_nonconst(s3); - S s4("abcdefghijklmnopqrst"); test_nonconst(s4); + S s1(""); + test_nonconst(s1); + S s2("abcde"); + test_nonconst(s2); + S s3("abcdefghij"); + test_nonconst(s3); + S s4("abcdefghijklmnopqrst"); + test_nonconst(s4); } #endif return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string.accessors/get_allocator.pass.cpp @@ -18,10 +18,8 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::allocator_type& a) -{ - assert(s.get_allocator() == a); +TEST_CONSTEXPR_CXX20 void test(const S& s, const typename S::allocator_type& a) { + assert(s.get_allocator() == a); } TEST_CONSTEXPR_CXX20 bool test() { @@ -47,8 +45,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/pointer.pass.cpp @@ -16,21 +16,18 @@ #include "test_macros.h" #include "min_allocator.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, int x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.compare(str)); - assert(sign(s.compare(str)) == sign(x)); +TEST_CONSTEXPR_CXX20 void test(const S& s, const typename S::value_type* str, int x) { + LIBCPP_ASSERT_NOEXCEPT(s.compare(str)); + assert(sign(s.compare(str)) == sign(x)); } TEST_CONSTEXPR_CXX20 bool test() { @@ -78,8 +75,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_T_size_size.pass.cpp @@ -22,5958 +22,5895 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - SV sv, typename S::size_type pos2, typename S::size_type n2, int x) -{ - static_assert((!std::is_same::value), ""); - if (pos1 <= s.size() && pos2 <= sv.size()) - assert(sign(s.compare(pos1, n1, sv, pos2, n2)) == sign(x)); +test(const S& s, + typename S::size_type pos1, + typename S::size_type n1, + SV sv, + typename S::size_type pos2, + typename S::size_type n2, + int x) { + static_assert((!std::is_same::value), ""); + if (pos1 <= s.size() && pos2 <= sv.size()) + assert(sign(s.compare(pos1, n1, sv, pos2, n2)) == sign(x)); #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv, pos2, n2); - assert(false); - } - catch (const std::out_of_range&) - { - assert(pos1 > s.size() || pos2 > sv.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv, pos2, n2); + assert(false); + } catch (const std::out_of_range&) { + assert(pos1 > s.size() || pos2 > sv.size()); } + } #endif } template TEST_CONSTEXPR_CXX20 void -test_npos(const S& s, typename S::size_type pos1, typename S::size_type n1, - SV sv, typename S::size_type pos2, int x) -{ - static_assert((!std::is_same::value), ""); - if (pos1 <= s.size() && pos2 <= sv.size()) - assert(sign(s.compare(pos1, n1, sv, pos2)) == sign(x)); +test_npos(const S& s, typename S::size_type pos1, typename S::size_type n1, SV sv, typename S::size_type pos2, int x) { + static_assert((!std::is_same::value), ""); + if (pos1 <= s.size() && pos2 <= sv.size()) + assert(sign(s.compare(pos1, n1, sv, pos2)) == sign(x)); #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv, pos2); - assert(false); - } - catch (const std::out_of_range&) - { - assert(pos1 > s.size() || pos2 > sv.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv, pos2); + assert(false); + } catch (const std::out_of_range&) { + assert(pos1 > s.size() || pos2 > sv.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, SV(""), 0, 0, 0); - test(S(""), 0, 0, SV(""), 0, 1, 0); - test(S(""), 0, 0, SV(""), 1, 0, 0); - test(S(""), 0, 0, SV("abcde"), 0, 0, 0); - test(S(""), 0, 0, SV("abcde"), 0, 1, -1); - test(S(""), 0, 0, SV("abcde"), 0, 2, -2); - test(S(""), 0, 0, SV("abcde"), 0, 4, -4); - test(S(""), 0, 0, SV("abcde"), 0, 5, -5); - test(S(""), 0, 0, SV("abcde"), 0, 6, -5); - test(S(""), 0, 0, SV("abcde"), 1, 0, 0); - test(S(""), 0, 0, SV("abcde"), 1, 1, -1); - test(S(""), 0, 0, SV("abcde"), 1, 2, -2); - test(S(""), 0, 0, SV("abcde"), 1, 3, -3); - test(S(""), 0, 0, SV("abcde"), 1, 4, -4); - test(S(""), 0, 0, SV("abcde"), 1, 5, -4); - test(S(""), 0, 0, SV("abcde"), 2, 0, 0); - test(S(""), 0, 0, SV("abcde"), 2, 1, -1); - test(S(""), 0, 0, SV("abcde"), 2, 2, -2); - test(S(""), 0, 0, SV("abcde"), 2, 3, -3); - test(S(""), 0, 0, SV("abcde"), 2, 4, -3); - test(S(""), 0, 0, SV("abcde"), 4, 0, 0); - test(S(""), 0, 0, SV("abcde"), 4, 1, -1); - test(S(""), 0, 0, SV("abcde"), 4, 2, -1); - test(S(""), 0, 0, SV("abcde"), 5, 0, 0); - test(S(""), 0, 0, SV("abcde"), 5, 1, 0); - test(S(""), 0, 0, SV("abcde"), 6, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 0, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 0, 1, -1); - test(S(""), 0, 0, SV("abcdefghij"), 0, 5, -5); - test(S(""), 0, 0, SV("abcdefghij"), 0, 9, -9); - test(S(""), 0, 0, SV("abcdefghij"), 0, 10, -10); - test(S(""), 0, 0, SV("abcdefghij"), 0, 11, -10); - test(S(""), 0, 0, SV("abcdefghij"), 1, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 1, 1, -1); - test(S(""), 0, 0, SV("abcdefghij"), 1, 4, -4); - test(S(""), 0, 0, SV("abcdefghij"), 1, 8, -8); - test(S(""), 0, 0, SV("abcdefghij"), 1, 9, -9); - test(S(""), 0, 0, SV("abcdefghij"), 1, 10, -9); - test(S(""), 0, 0, SV("abcdefghij"), 5, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 5, 1, -1); - test(S(""), 0, 0, SV("abcdefghij"), 5, 2, -2); - test(S(""), 0, 0, SV("abcdefghij"), 5, 4, -4); - test(S(""), 0, 0, SV("abcdefghij"), 5, 5, -5); - test(S(""), 0, 0, SV("abcdefghij"), 5, 6, -5); - test(S(""), 0, 0, SV("abcdefghij"), 9, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 9, 1, -1); - test(S(""), 0, 0, SV("abcdefghij"), 9, 2, -1); - test(S(""), 0, 0, SV("abcdefghij"), 10, 0, 0); - test(S(""), 0, 0, SV("abcdefghij"), 10, 1, 0); - test(S(""), 0, 0, SV("abcdefghij"), 11, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S(""), 0, 1, SV(""), 0, 0, 0); - test(S(""), 0, 1, SV(""), 0, 1, 0); - test(S(""), 0, 1, SV(""), 1, 0, 0); - test(S(""), 0, 1, SV("abcde"), 0, 0, 0); - test(S(""), 0, 1, SV("abcde"), 0, 1, -1); - test(S(""), 0, 1, SV("abcde"), 0, 2, -2); - test(S(""), 0, 1, SV("abcde"), 0, 4, -4); - test(S(""), 0, 1, SV("abcde"), 0, 5, -5); - test(S(""), 0, 1, SV("abcde"), 0, 6, -5); - test(S(""), 0, 1, SV("abcde"), 1, 0, 0); - test(S(""), 0, 1, SV("abcde"), 1, 1, -1); - test(S(""), 0, 1, SV("abcde"), 1, 2, -2); - test(S(""), 0, 1, SV("abcde"), 1, 3, -3); - test(S(""), 0, 1, SV("abcde"), 1, 4, -4); - test(S(""), 0, 1, SV("abcde"), 1, 5, -4); - test(S(""), 0, 1, SV("abcde"), 2, 0, 0); - test(S(""), 0, 1, SV("abcde"), 2, 1, -1); - test(S(""), 0, 1, SV("abcde"), 2, 2, -2); - test(S(""), 0, 1, SV("abcde"), 2, 3, -3); - test(S(""), 0, 1, SV("abcde"), 2, 4, -3); - test(S(""), 0, 1, SV("abcde"), 4, 0, 0); - test(S(""), 0, 1, SV("abcde"), 4, 1, -1); - test(S(""), 0, 1, SV("abcde"), 4, 2, -1); - test(S(""), 0, 1, SV("abcde"), 5, 0, 0); - test(S(""), 0, 1, SV("abcde"), 5, 1, 0); - test(S(""), 0, 1, SV("abcde"), 6, 0, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, SV(""), 0, 0, 0); + test(S(""), 0, 0, SV(""), 0, 1, 0); + test(S(""), 0, 0, SV(""), 1, 0, 0); + test(S(""), 0, 0, SV("abcde"), 0, 0, 0); + test(S(""), 0, 0, SV("abcde"), 0, 1, -1); + test(S(""), 0, 0, SV("abcde"), 0, 2, -2); + test(S(""), 0, 0, SV("abcde"), 0, 4, -4); + test(S(""), 0, 0, SV("abcde"), 0, 5, -5); + test(S(""), 0, 0, SV("abcde"), 0, 6, -5); + test(S(""), 0, 0, SV("abcde"), 1, 0, 0); + test(S(""), 0, 0, SV("abcde"), 1, 1, -1); + test(S(""), 0, 0, SV("abcde"), 1, 2, -2); + test(S(""), 0, 0, SV("abcde"), 1, 3, -3); + test(S(""), 0, 0, SV("abcde"), 1, 4, -4); + test(S(""), 0, 0, SV("abcde"), 1, 5, -4); + test(S(""), 0, 0, SV("abcde"), 2, 0, 0); + test(S(""), 0, 0, SV("abcde"), 2, 1, -1); + test(S(""), 0, 0, SV("abcde"), 2, 2, -2); + test(S(""), 0, 0, SV("abcde"), 2, 3, -3); + test(S(""), 0, 0, SV("abcde"), 2, 4, -3); + test(S(""), 0, 0, SV("abcde"), 4, 0, 0); + test(S(""), 0, 0, SV("abcde"), 4, 1, -1); + test(S(""), 0, 0, SV("abcde"), 4, 2, -1); + test(S(""), 0, 0, SV("abcde"), 5, 0, 0); + test(S(""), 0, 0, SV("abcde"), 5, 1, 0); + test(S(""), 0, 0, SV("abcde"), 6, 0, 0); + test(S(""), 0, 0, SV("abcdefghij"), 0, 0, 0); + test(S(""), 0, 0, SV("abcdefghij"), 0, 1, -1); + test(S(""), 0, 0, SV("abcdefghij"), 0, 5, -5); + test(S(""), 0, 0, SV("abcdefghij"), 0, 9, -9); + test(S(""), 0, 0, SV("abcdefghij"), 0, 10, -10); + test(S(""), 0, 0, SV("abcdefghij"), 0, 11, -10); + test(S(""), 0, 0, SV("abcdefghij"), 1, 0, 0); + test(S(""), 0, 0, SV("abcdefghij"), 1, 1, -1); + test(S(""), 0, 0, SV("abcdefghij"), 1, 4, -4); + test(S(""), 0, 0, SV("abcdefghij"), 1, 8, -8); + test(S(""), 0, 0, SV("abcdefghij"), 1, 9, -9); + test(S(""), 0, 0, SV("abcdefghij"), 1, 10, -9); + test(S(""), 0, 0, SV("abcdefghij"), 5, 0, 0); + test(S(""), 0, 0, SV("abcdefghij"), 5, 1, -1); + test(S(""), 0, 0, SV("abcdefghij"), 5, 2, -2); + test(S(""), 0, 0, SV("abcdefghij"), 5, 4, -4); + test(S(""), 0, 0, SV("abcdefghij"), 5, 5, -5); + test(S(""), 0, 0, SV("abcdefghij"), 5, 6, -5); + test(S(""), 0, 0, SV("abcdefghij"), 9, 0, 0); + test(S(""), 0, 0, SV("abcdefghij"), 9, 1, -1); + test(S(""), 0, 0, SV("abcdefghij"), 9, 2, -1); + test(S(""), 0, 0, SV("abcdefghij"), 10, 0, 0); + test(S(""), 0, 0, SV("abcdefghij"), 10, 1, 0); + test(S(""), 0, 0, SV("abcdefghij"), 11, 0, 0); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S(""), 0, 1, SV(""), 0, 0, 0); + test(S(""), 0, 1, SV(""), 0, 1, 0); + test(S(""), 0, 1, SV(""), 1, 0, 0); + test(S(""), 0, 1, SV("abcde"), 0, 0, 0); + test(S(""), 0, 1, SV("abcde"), 0, 1, -1); + test(S(""), 0, 1, SV("abcde"), 0, 2, -2); + test(S(""), 0, 1, SV("abcde"), 0, 4, -4); + test(S(""), 0, 1, SV("abcde"), 0, 5, -5); + test(S(""), 0, 1, SV("abcde"), 0, 6, -5); + test(S(""), 0, 1, SV("abcde"), 1, 0, 0); + test(S(""), 0, 1, SV("abcde"), 1, 1, -1); + test(S(""), 0, 1, SV("abcde"), 1, 2, -2); + test(S(""), 0, 1, SV("abcde"), 1, 3, -3); + test(S(""), 0, 1, SV("abcde"), 1, 4, -4); + test(S(""), 0, 1, SV("abcde"), 1, 5, -4); + test(S(""), 0, 1, SV("abcde"), 2, 0, 0); + test(S(""), 0, 1, SV("abcde"), 2, 1, -1); + test(S(""), 0, 1, SV("abcde"), 2, 2, -2); + test(S(""), 0, 1, SV("abcde"), 2, 3, -3); + test(S(""), 0, 1, SV("abcde"), 2, 4, -3); + test(S(""), 0, 1, SV("abcde"), 4, 0, 0); + test(S(""), 0, 1, SV("abcde"), 4, 1, -1); + test(S(""), 0, 1, SV("abcde"), 4, 2, -1); + test(S(""), 0, 1, SV("abcde"), 5, 0, 0); + test(S(""), 0, 1, SV("abcde"), 5, 1, 0); + test(S(""), 0, 1, SV("abcde"), 6, 0, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S(""), 0, 1, SV("abcdefghij"), 0, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 0, 1, -1); - test(S(""), 0, 1, SV("abcdefghij"), 0, 5, -5); - test(S(""), 0, 1, SV("abcdefghij"), 0, 9, -9); - test(S(""), 0, 1, SV("abcdefghij"), 0, 10, -10); - test(S(""), 0, 1, SV("abcdefghij"), 0, 11, -10); - test(S(""), 0, 1, SV("abcdefghij"), 1, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 1, 1, -1); - test(S(""), 0, 1, SV("abcdefghij"), 1, 4, -4); - test(S(""), 0, 1, SV("abcdefghij"), 1, 8, -8); - test(S(""), 0, 1, SV("abcdefghij"), 1, 9, -9); - test(S(""), 0, 1, SV("abcdefghij"), 1, 10, -9); - test(S(""), 0, 1, SV("abcdefghij"), 5, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 5, 1, -1); - test(S(""), 0, 1, SV("abcdefghij"), 5, 2, -2); - test(S(""), 0, 1, SV("abcdefghij"), 5, 4, -4); - test(S(""), 0, 1, SV("abcdefghij"), 5, 5, -5); - test(S(""), 0, 1, SV("abcdefghij"), 5, 6, -5); - test(S(""), 0, 1, SV("abcdefghij"), 9, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 9, 1, -1); - test(S(""), 0, 1, SV("abcdefghij"), 9, 2, -1); - test(S(""), 0, 1, SV("abcdefghij"), 10, 0, 0); - test(S(""), 0, 1, SV("abcdefghij"), 10, 1, 0); - test(S(""), 0, 1, SV("abcdefghij"), 11, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S(""), 1, 0, SV(""), 0, 0, 0); - test(S(""), 1, 0, SV(""), 0, 1, 0); - test(S(""), 1, 0, SV(""), 1, 0, 0); - test(S(""), 1, 0, SV("abcde"), 0, 0, 0); - test(S(""), 1, 0, SV("abcde"), 0, 1, 0); - test(S(""), 1, 0, SV("abcde"), 0, 2, 0); - test(S(""), 1, 0, SV("abcde"), 0, 4, 0); - test(S(""), 1, 0, SV("abcde"), 0, 5, 0); - test(S(""), 1, 0, SV("abcde"), 0, 6, 0); - test(S(""), 1, 0, SV("abcde"), 1, 0, 0); - test(S(""), 1, 0, SV("abcde"), 1, 1, 0); - test(S(""), 1, 0, SV("abcde"), 1, 2, 0); - test(S(""), 1, 0, SV("abcde"), 1, 3, 0); - test(S(""), 1, 0, SV("abcde"), 1, 4, 0); - test(S(""), 1, 0, SV("abcde"), 1, 5, 0); - test(S(""), 1, 0, SV("abcde"), 2, 0, 0); - test(S(""), 1, 0, SV("abcde"), 2, 1, 0); - test(S(""), 1, 0, SV("abcde"), 2, 2, 0); - test(S(""), 1, 0, SV("abcde"), 2, 3, 0); - test(S(""), 1, 0, SV("abcde"), 2, 4, 0); - test(S(""), 1, 0, SV("abcde"), 4, 0, 0); - test(S(""), 1, 0, SV("abcde"), 4, 1, 0); - test(S(""), 1, 0, SV("abcde"), 4, 2, 0); - test(S(""), 1, 0, SV("abcde"), 5, 0, 0); - test(S(""), 1, 0, SV("abcde"), 5, 1, 0); - test(S(""), 1, 0, SV("abcde"), 6, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 5, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 9, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 10, 0); - test(S(""), 1, 0, SV("abcdefghij"), 0, 11, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 4, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 8, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 9, 0); - test(S(""), 1, 0, SV("abcdefghij"), 1, 10, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 2, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 4, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 5, 0); - test(S(""), 1, 0, SV("abcdefghij"), 5, 6, 0); - test(S(""), 1, 0, SV("abcdefghij"), 9, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 9, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 9, 2, 0); - test(S(""), 1, 0, SV("abcdefghij"), 10, 0, 0); - test(S(""), 1, 0, SV("abcdefghij"), 10, 1, 0); - test(S(""), 1, 0, SV("abcdefghij"), 11, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test1() { + test(S(""), 0, 1, SV("abcdefghij"), 0, 0, 0); + test(S(""), 0, 1, SV("abcdefghij"), 0, 1, -1); + test(S(""), 0, 1, SV("abcdefghij"), 0, 5, -5); + test(S(""), 0, 1, SV("abcdefghij"), 0, 9, -9); + test(S(""), 0, 1, SV("abcdefghij"), 0, 10, -10); + test(S(""), 0, 1, SV("abcdefghij"), 0, 11, -10); + test(S(""), 0, 1, SV("abcdefghij"), 1, 0, 0); + test(S(""), 0, 1, SV("abcdefghij"), 1, 1, -1); + test(S(""), 0, 1, SV("abcdefghij"), 1, 4, -4); + test(S(""), 0, 1, SV("abcdefghij"), 1, 8, -8); + test(S(""), 0, 1, SV("abcdefghij"), 1, 9, -9); + test(S(""), 0, 1, SV("abcdefghij"), 1, 10, -9); + test(S(""), 0, 1, SV("abcdefghij"), 5, 0, 0); + test(S(""), 0, 1, SV("abcdefghij"), 5, 1, -1); + test(S(""), 0, 1, SV("abcdefghij"), 5, 2, -2); + test(S(""), 0, 1, SV("abcdefghij"), 5, 4, -4); + test(S(""), 0, 1, SV("abcdefghij"), 5, 5, -5); + test(S(""), 0, 1, SV("abcdefghij"), 5, 6, -5); + test(S(""), 0, 1, SV("abcdefghij"), 9, 0, 0); + test(S(""), 0, 1, SV("abcdefghij"), 9, 1, -1); + test(S(""), 0, 1, SV("abcdefghij"), 9, 2, -1); + test(S(""), 0, 1, SV("abcdefghij"), 10, 0, 0); + test(S(""), 0, 1, SV("abcdefghij"), 10, 1, 0); + test(S(""), 0, 1, SV("abcdefghij"), 11, 0, 0); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S(""), 1, 0, SV(""), 0, 0, 0); + test(S(""), 1, 0, SV(""), 0, 1, 0); + test(S(""), 1, 0, SV(""), 1, 0, 0); + test(S(""), 1, 0, SV("abcde"), 0, 0, 0); + test(S(""), 1, 0, SV("abcde"), 0, 1, 0); + test(S(""), 1, 0, SV("abcde"), 0, 2, 0); + test(S(""), 1, 0, SV("abcde"), 0, 4, 0); + test(S(""), 1, 0, SV("abcde"), 0, 5, 0); + test(S(""), 1, 0, SV("abcde"), 0, 6, 0); + test(S(""), 1, 0, SV("abcde"), 1, 0, 0); + test(S(""), 1, 0, SV("abcde"), 1, 1, 0); + test(S(""), 1, 0, SV("abcde"), 1, 2, 0); + test(S(""), 1, 0, SV("abcde"), 1, 3, 0); + test(S(""), 1, 0, SV("abcde"), 1, 4, 0); + test(S(""), 1, 0, SV("abcde"), 1, 5, 0); + test(S(""), 1, 0, SV("abcde"), 2, 0, 0); + test(S(""), 1, 0, SV("abcde"), 2, 1, 0); + test(S(""), 1, 0, SV("abcde"), 2, 2, 0); + test(S(""), 1, 0, SV("abcde"), 2, 3, 0); + test(S(""), 1, 0, SV("abcde"), 2, 4, 0); + test(S(""), 1, 0, SV("abcde"), 4, 0, 0); + test(S(""), 1, 0, SV("abcde"), 4, 1, 0); + test(S(""), 1, 0, SV("abcde"), 4, 2, 0); + test(S(""), 1, 0, SV("abcde"), 5, 0, 0); + test(S(""), 1, 0, SV("abcde"), 5, 1, 0); + test(S(""), 1, 0, SV("abcde"), 6, 0, 0); + test(S(""), 1, 0, SV("abcdefghij"), 0, 0, 0); + test(S(""), 1, 0, SV("abcdefghij"), 0, 1, 0); + test(S(""), 1, 0, SV("abcdefghij"), 0, 5, 0); + test(S(""), 1, 0, SV("abcdefghij"), 0, 9, 0); + test(S(""), 1, 0, SV("abcdefghij"), 0, 10, 0); + test(S(""), 1, 0, SV("abcdefghij"), 0, 11, 0); + test(S(""), 1, 0, SV("abcdefghij"), 1, 0, 0); + test(S(""), 1, 0, SV("abcdefghij"), 1, 1, 0); + test(S(""), 1, 0, SV("abcdefghij"), 1, 4, 0); + test(S(""), 1, 0, SV("abcdefghij"), 1, 8, 0); + test(S(""), 1, 0, SV("abcdefghij"), 1, 9, 0); + test(S(""), 1, 0, SV("abcdefghij"), 1, 10, 0); + test(S(""), 1, 0, SV("abcdefghij"), 5, 0, 0); + test(S(""), 1, 0, SV("abcdefghij"), 5, 1, 0); + test(S(""), 1, 0, SV("abcdefghij"), 5, 2, 0); + test(S(""), 1, 0, SV("abcdefghij"), 5, 4, 0); + test(S(""), 1, 0, SV("abcdefghij"), 5, 5, 0); + test(S(""), 1, 0, SV("abcdefghij"), 5, 6, 0); + test(S(""), 1, 0, SV("abcdefghij"), 9, 0, 0); + test(S(""), 1, 0, SV("abcdefghij"), 9, 1, 0); + test(S(""), 1, 0, SV("abcdefghij"), 9, 2, 0); + test(S(""), 1, 0, SV("abcdefghij"), 10, 0, 0); + test(S(""), 1, 0, SV("abcdefghij"), 10, 1, 0); + test(S(""), 1, 0, SV("abcdefghij"), 11, 0, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 0, SV(""), 0, 0, 0); - test(S("abcde"), 0, 0, SV(""), 0, 1, 0); - test(S("abcde"), 0, 0, SV(""), 1, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 0, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 0, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 0, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 0, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 0, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 0, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 0, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 0, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 0, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 0, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 0, 0, SV("abcde"), 2, 4, -3); - test(S("abcde"), 0, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 0, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 0, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 0, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 0, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 0, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 0, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 1, SV(""), 0, 0, 1); - test(S("abcde"), 0, 1, SV(""), 0, 1, 1); - test(S("abcde"), 0, 1, SV(""), 1, 0, 0); - test(S("abcde"), 0, 1, SV("abcde"), 0, 0, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test2() { + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 0, SV(""), 0, 0, 0); + test(S("abcde"), 0, 0, SV(""), 0, 1, 0); + test(S("abcde"), 0, 0, SV(""), 1, 0, 0); + test(S("abcde"), 0, 0, SV("abcde"), 0, 0, 0); + test(S("abcde"), 0, 0, SV("abcde"), 0, 1, -1); + test(S("abcde"), 0, 0, SV("abcde"), 0, 2, -2); + test(S("abcde"), 0, 0, SV("abcde"), 0, 4, -4); + test(S("abcde"), 0, 0, SV("abcde"), 0, 5, -5); + test(S("abcde"), 0, 0, SV("abcde"), 0, 6, -5); + test(S("abcde"), 0, 0, SV("abcde"), 1, 0, 0); + test(S("abcde"), 0, 0, SV("abcde"), 1, 1, -1); + test(S("abcde"), 0, 0, SV("abcde"), 1, 2, -2); + test(S("abcde"), 0, 0, SV("abcde"), 1, 3, -3); + test(S("abcde"), 0, 0, SV("abcde"), 1, 4, -4); + test(S("abcde"), 0, 0, SV("abcde"), 1, 5, -4); + test(S("abcde"), 0, 0, SV("abcde"), 2, 0, 0); + test(S("abcde"), 0, 0, SV("abcde"), 2, 1, -1); + test(S("abcde"), 0, 0, SV("abcde"), 2, 2, -2); + test(S("abcde"), 0, 0, SV("abcde"), 2, 3, -3); + test(S("abcde"), 0, 0, SV("abcde"), 2, 4, -3); + test(S("abcde"), 0, 0, SV("abcde"), 4, 0, 0); + test(S("abcde"), 0, 0, SV("abcde"), 4, 1, -1); + test(S("abcde"), 0, 0, SV("abcde"), 4, 2, -1); + test(S("abcde"), 0, 0, SV("abcde"), 5, 0, 0); + test(S("abcde"), 0, 0, SV("abcde"), 5, 1, 0); + test(S("abcde"), 0, 0, SV("abcde"), 6, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcde"), 0, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcde"), 0, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcde"), 0, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcde"), 0, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcde"), 0, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 1, SV(""), 0, 0, 1); + test(S("abcde"), 0, 1, SV(""), 0, 1, 1); + test(S("abcde"), 0, 1, SV(""), 1, 0, 0); + test(S("abcde"), 0, 1, SV("abcde"), 0, 0, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcde"), 0, 1, SV("abcde"), 0, 1, 0); - test(S("abcde"), 0, 1, SV("abcde"), 0, 2, -1); - test(S("abcde"), 0, 1, SV("abcde"), 0, 4, -3); - test(S("abcde"), 0, 1, SV("abcde"), 0, 5, -4); - test(S("abcde"), 0, 1, SV("abcde"), 0, 6, -4); - test(S("abcde"), 0, 1, SV("abcde"), 1, 0, 1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 1, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 1, SV("abcde"), 2, 0, 1); - test(S("abcde"), 0, 1, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 1, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 1, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 1, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 1, SV("abcde"), 4, 0, 1); - test(S("abcde"), 0, 1, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 1, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 1, SV("abcde"), 5, 0, 1); - test(S("abcde"), 0, 1, SV("abcde"), 5, 1, 1); - test(S("abcde"), 0, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 1, 0); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 5, -4); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 9, -8); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 10, -9); - test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 11, -9); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 0, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 2, SV(""), 0, 0, 2); - test(S("abcde"), 0, 2, SV(""), 0, 1, 2); - test(S("abcde"), 0, 2, SV(""), 1, 0, 0); - test(S("abcde"), 0, 2, SV("abcde"), 0, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 0, 1, 1); - test(S("abcde"), 0, 2, SV("abcde"), 0, 2, 0); - test(S("abcde"), 0, 2, SV("abcde"), 0, 4, -2); - test(S("abcde"), 0, 2, SV("abcde"), 0, 5, -3); - test(S("abcde"), 0, 2, SV("abcde"), 0, 6, -3); - test(S("abcde"), 0, 2, SV("abcde"), 1, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 2, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 2, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 2, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 2, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 2, SV("abcde"), 2, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 2, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 2, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 2, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 2, SV("abcde"), 4, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 2, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 2, SV("abcde"), 5, 0, 2); - test(S("abcde"), 0, 2, SV("abcde"), 5, 1, 2); - test(S("abcde"), 0, 2, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 5, -3); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 9, -7); - - return true; +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcde"), 0, 1, SV("abcde"), 0, 1, 0); + test(S("abcde"), 0, 1, SV("abcde"), 0, 2, -1); + test(S("abcde"), 0, 1, SV("abcde"), 0, 4, -3); + test(S("abcde"), 0, 1, SV("abcde"), 0, 5, -4); + test(S("abcde"), 0, 1, SV("abcde"), 0, 6, -4); + test(S("abcde"), 0, 1, SV("abcde"), 1, 0, 1); + test(S("abcde"), 0, 1, SV("abcde"), 1, 1, -1); + test(S("abcde"), 0, 1, SV("abcde"), 1, 2, -1); + test(S("abcde"), 0, 1, SV("abcde"), 1, 3, -1); + test(S("abcde"), 0, 1, SV("abcde"), 1, 4, -1); + test(S("abcde"), 0, 1, SV("abcde"), 1, 5, -1); + test(S("abcde"), 0, 1, SV("abcde"), 2, 0, 1); + test(S("abcde"), 0, 1, SV("abcde"), 2, 1, -2); + test(S("abcde"), 0, 1, SV("abcde"), 2, 2, -2); + test(S("abcde"), 0, 1, SV("abcde"), 2, 3, -2); + test(S("abcde"), 0, 1, SV("abcde"), 2, 4, -2); + test(S("abcde"), 0, 1, SV("abcde"), 4, 0, 1); + test(S("abcde"), 0, 1, SV("abcde"), 4, 1, -4); + test(S("abcde"), 0, 1, SV("abcde"), 4, 2, -4); + test(S("abcde"), 0, 1, SV("abcde"), 5, 0, 1); + test(S("abcde"), 0, 1, SV("abcde"), 5, 1, 1); + test(S("abcde"), 0, 1, SV("abcde"), 6, 0, 0); + test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 1, 0); + test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 5, -4); + test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 9, -8); + test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 10, -9); + test(S("abcde"), 0, 1, SV("abcdefghij"), 0, 11, -9); + test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 1, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 1, SV("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcde"), 0, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 2, SV(""), 0, 0, 2); + test(S("abcde"), 0, 2, SV(""), 0, 1, 2); + test(S("abcde"), 0, 2, SV(""), 1, 0, 0); + test(S("abcde"), 0, 2, SV("abcde"), 0, 0, 2); + test(S("abcde"), 0, 2, SV("abcde"), 0, 1, 1); + test(S("abcde"), 0, 2, SV("abcde"), 0, 2, 0); + test(S("abcde"), 0, 2, SV("abcde"), 0, 4, -2); + test(S("abcde"), 0, 2, SV("abcde"), 0, 5, -3); + test(S("abcde"), 0, 2, SV("abcde"), 0, 6, -3); + test(S("abcde"), 0, 2, SV("abcde"), 1, 0, 2); + test(S("abcde"), 0, 2, SV("abcde"), 1, 1, -1); + test(S("abcde"), 0, 2, SV("abcde"), 1, 2, -1); + test(S("abcde"), 0, 2, SV("abcde"), 1, 3, -1); + test(S("abcde"), 0, 2, SV("abcde"), 1, 4, -1); + test(S("abcde"), 0, 2, SV("abcde"), 1, 5, -1); + test(S("abcde"), 0, 2, SV("abcde"), 2, 0, 2); + test(S("abcde"), 0, 2, SV("abcde"), 2, 1, -2); + test(S("abcde"), 0, 2, SV("abcde"), 2, 2, -2); + test(S("abcde"), 0, 2, SV("abcde"), 2, 3, -2); + test(S("abcde"), 0, 2, SV("abcde"), 2, 4, -2); + test(S("abcde"), 0, 2, SV("abcde"), 4, 0, 2); + test(S("abcde"), 0, 2, SV("abcde"), 4, 1, -4); + test(S("abcde"), 0, 2, SV("abcde"), 4, 2, -4); + test(S("abcde"), 0, 2, SV("abcde"), 5, 0, 2); + test(S("abcde"), 0, 2, SV("abcde"), 5, 1, 2); + test(S("abcde"), 0, 2, SV("abcde"), 6, 0, 0); + test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 1, 1); + test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 5, -3); + test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 9, -7); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 10, -8); - test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 11, -8); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 2, SV("abcdefghij"), 10, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 10, 1, 2); - test(S("abcde"), 0, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 10, -8); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 19, -17); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 20, -18); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 21, -18); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 4, SV(""), 0, 0, 4); - test(S("abcde"), 0, 4, SV(""), 0, 1, 4); - test(S("abcde"), 0, 4, SV(""), 1, 0, 0); - test(S("abcde"), 0, 4, SV("abcde"), 0, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 0, 1, 3); - test(S("abcde"), 0, 4, SV("abcde"), 0, 2, 2); - test(S("abcde"), 0, 4, SV("abcde"), 0, 4, 0); - test(S("abcde"), 0, 4, SV("abcde"), 0, 5, -1); - test(S("abcde"), 0, 4, SV("abcde"), 0, 6, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 4, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 4, SV("abcde"), 2, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 4, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 4, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 4, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 4, SV("abcde"), 4, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 4, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 4, SV("abcde"), 5, 0, 4); - test(S("abcde"), 0, 4, SV("abcde"), 5, 1, 4); - test(S("abcde"), 0, 4, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 1, 3); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 5, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 9, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 10, -6); - test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 11, -6); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 4, SV("abcdefghij"), 10, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 10, 1, 4); - test(S("abcde"), 0, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 1, 3); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 10, -6); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 19, -15); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 20, -16); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 21, -16); - - return true; +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 10, -8); + test(S("abcde"), 0, 2, SV("abcdefghij"), 0, 11, -8); + test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 2, SV("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 2, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 2, SV("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 2, SV("abcdefghij"), 10, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghij"), 10, 1, 2); + test(S("abcde"), 0, 2, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 10, -8); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 19, -17); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 20, -18); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 0, 21, -18); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 4, SV(""), 0, 0, 4); + test(S("abcde"), 0, 4, SV(""), 0, 1, 4); + test(S("abcde"), 0, 4, SV(""), 1, 0, 0); + test(S("abcde"), 0, 4, SV("abcde"), 0, 0, 4); + test(S("abcde"), 0, 4, SV("abcde"), 0, 1, 3); + test(S("abcde"), 0, 4, SV("abcde"), 0, 2, 2); + test(S("abcde"), 0, 4, SV("abcde"), 0, 4, 0); + test(S("abcde"), 0, 4, SV("abcde"), 0, 5, -1); + test(S("abcde"), 0, 4, SV("abcde"), 0, 6, -1); + test(S("abcde"), 0, 4, SV("abcde"), 1, 0, 4); + test(S("abcde"), 0, 4, SV("abcde"), 1, 1, -1); + test(S("abcde"), 0, 4, SV("abcde"), 1, 2, -1); + test(S("abcde"), 0, 4, SV("abcde"), 1, 3, -1); + test(S("abcde"), 0, 4, SV("abcde"), 1, 4, -1); + test(S("abcde"), 0, 4, SV("abcde"), 1, 5, -1); + test(S("abcde"), 0, 4, SV("abcde"), 2, 0, 4); + test(S("abcde"), 0, 4, SV("abcde"), 2, 1, -2); + test(S("abcde"), 0, 4, SV("abcde"), 2, 2, -2); + test(S("abcde"), 0, 4, SV("abcde"), 2, 3, -2); + test(S("abcde"), 0, 4, SV("abcde"), 2, 4, -2); + test(S("abcde"), 0, 4, SV("abcde"), 4, 0, 4); + test(S("abcde"), 0, 4, SV("abcde"), 4, 1, -4); + test(S("abcde"), 0, 4, SV("abcde"), 4, 2, -4); + test(S("abcde"), 0, 4, SV("abcde"), 5, 0, 4); + test(S("abcde"), 0, 4, SV("abcde"), 5, 1, 4); + test(S("abcde"), 0, 4, SV("abcde"), 6, 0, 0); + test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 1, 3); + test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 5, -1); + test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 9, -5); + test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 10, -6); + test(S("abcde"), 0, 4, SV("abcdefghij"), 0, 11, -6); + test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 4, SV("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 4, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 4, SV("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 4, SV("abcdefghij"), 10, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghij"), 10, 1, 4); + test(S("abcde"), 0, 4, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 1, 3); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 10, -6); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 19, -15); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 20, -16); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 0, 21, -16); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 5, SV(""), 0, 0, 5); - test(S("abcde"), 0, 5, SV(""), 0, 1, 5); - test(S("abcde"), 0, 5, SV(""), 1, 0, 0); - test(S("abcde"), 0, 5, SV("abcde"), 0, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 0, 1, 4); - test(S("abcde"), 0, 5, SV("abcde"), 0, 2, 3); - test(S("abcde"), 0, 5, SV("abcde"), 0, 4, 1); - test(S("abcde"), 0, 5, SV("abcde"), 0, 5, 0); - test(S("abcde"), 0, 5, SV("abcde"), 0, 6, 0); - test(S("abcde"), 0, 5, SV("abcde"), 1, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 5, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 5, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 5, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 5, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 5, SV("abcde"), 2, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 5, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 5, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 5, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 5, SV("abcde"), 4, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 5, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 5, SV("abcde"), 5, 0, 5); - test(S("abcde"), 0, 5, SV("abcde"), 5, 1, 5); - test(S("abcde"), 0, 5, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 1, 4); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 5, 0); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 9, -4); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 10, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 11, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 5, SV("abcdefghij"), 10, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 10, 1, 5); - test(S("abcde"), 0, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 6, SV(""), 0, 0, 5); - test(S("abcde"), 0, 6, SV(""), 0, 1, 5); - test(S("abcde"), 0, 6, SV(""), 1, 0, 0); - test(S("abcde"), 0, 6, SV("abcde"), 0, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 0, 1, 4); - test(S("abcde"), 0, 6, SV("abcde"), 0, 2, 3); - test(S("abcde"), 0, 6, SV("abcde"), 0, 4, 1); - test(S("abcde"), 0, 6, SV("abcde"), 0, 5, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 5, SV(""), 0, 0, 5); + test(S("abcde"), 0, 5, SV(""), 0, 1, 5); + test(S("abcde"), 0, 5, SV(""), 1, 0, 0); + test(S("abcde"), 0, 5, SV("abcde"), 0, 0, 5); + test(S("abcde"), 0, 5, SV("abcde"), 0, 1, 4); + test(S("abcde"), 0, 5, SV("abcde"), 0, 2, 3); + test(S("abcde"), 0, 5, SV("abcde"), 0, 4, 1); + test(S("abcde"), 0, 5, SV("abcde"), 0, 5, 0); + test(S("abcde"), 0, 5, SV("abcde"), 0, 6, 0); + test(S("abcde"), 0, 5, SV("abcde"), 1, 0, 5); + test(S("abcde"), 0, 5, SV("abcde"), 1, 1, -1); + test(S("abcde"), 0, 5, SV("abcde"), 1, 2, -1); + test(S("abcde"), 0, 5, SV("abcde"), 1, 3, -1); + test(S("abcde"), 0, 5, SV("abcde"), 1, 4, -1); + test(S("abcde"), 0, 5, SV("abcde"), 1, 5, -1); + test(S("abcde"), 0, 5, SV("abcde"), 2, 0, 5); + test(S("abcde"), 0, 5, SV("abcde"), 2, 1, -2); + test(S("abcde"), 0, 5, SV("abcde"), 2, 2, -2); + test(S("abcde"), 0, 5, SV("abcde"), 2, 3, -2); + test(S("abcde"), 0, 5, SV("abcde"), 2, 4, -2); + test(S("abcde"), 0, 5, SV("abcde"), 4, 0, 5); + test(S("abcde"), 0, 5, SV("abcde"), 4, 1, -4); + test(S("abcde"), 0, 5, SV("abcde"), 4, 2, -4); + test(S("abcde"), 0, 5, SV("abcde"), 5, 0, 5); + test(S("abcde"), 0, 5, SV("abcde"), 5, 1, 5); + test(S("abcde"), 0, 5, SV("abcde"), 6, 0, 0); + test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 1, 4); + test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 5, 0); + test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 9, -4); + test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 10, -5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 0, 11, -5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 5, SV("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 5, SV("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 5, SV("abcdefghij"), 10, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 10, 1, 5); + test(S("abcde"), 0, 5, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 10, -5); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 19, -14); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 20, -15); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 21, -15); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 6, SV(""), 0, 0, 5); + test(S("abcde"), 0, 6, SV(""), 0, 1, 5); + test(S("abcde"), 0, 6, SV(""), 1, 0, 0); + test(S("abcde"), 0, 6, SV("abcde"), 0, 0, 5); + test(S("abcde"), 0, 6, SV("abcde"), 0, 1, 4); + test(S("abcde"), 0, 6, SV("abcde"), 0, 2, 3); + test(S("abcde"), 0, 6, SV("abcde"), 0, 4, 1); + test(S("abcde"), 0, 6, SV("abcde"), 0, 5, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcde"), 0, 6, SV("abcde"), 0, 6, 0); - test(S("abcde"), 0, 6, SV("abcde"), 1, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 1, 1, -1); - test(S("abcde"), 0, 6, SV("abcde"), 1, 2, -1); - test(S("abcde"), 0, 6, SV("abcde"), 1, 3, -1); - test(S("abcde"), 0, 6, SV("abcde"), 1, 4, -1); - test(S("abcde"), 0, 6, SV("abcde"), 1, 5, -1); - test(S("abcde"), 0, 6, SV("abcde"), 2, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 2, 1, -2); - test(S("abcde"), 0, 6, SV("abcde"), 2, 2, -2); - test(S("abcde"), 0, 6, SV("abcde"), 2, 3, -2); - test(S("abcde"), 0, 6, SV("abcde"), 2, 4, -2); - test(S("abcde"), 0, 6, SV("abcde"), 4, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 4, 1, -4); - test(S("abcde"), 0, 6, SV("abcde"), 4, 2, -4); - test(S("abcde"), 0, 6, SV("abcde"), 5, 0, 5); - test(S("abcde"), 0, 6, SV("abcde"), 5, 1, 5); - test(S("abcde"), 0, 6, SV("abcde"), 6, 0, 0); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 1, 4); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 5, 0); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 9, -4); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 10, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 11, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 6, SV("abcdefghij"), 10, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 10, 1, 5); - test(S("abcde"), 0, 6, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 0, SV(""), 0, 0, 0); - test(S("abcde"), 1, 0, SV(""), 0, 1, 0); - test(S("abcde"), 1, 0, SV(""), 1, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 1, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 1, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 1, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 1, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 1, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 1, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 1, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 1, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 1, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 1, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 1, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 1, 0, SV("abcde"), 2, 4, -3); - test(S("abcde"), 1, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 1, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 1, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 1, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 1, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 1, -1); - - return true; +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcde"), 0, 6, SV("abcde"), 0, 6, 0); + test(S("abcde"), 0, 6, SV("abcde"), 1, 0, 5); + test(S("abcde"), 0, 6, SV("abcde"), 1, 1, -1); + test(S("abcde"), 0, 6, SV("abcde"), 1, 2, -1); + test(S("abcde"), 0, 6, SV("abcde"), 1, 3, -1); + test(S("abcde"), 0, 6, SV("abcde"), 1, 4, -1); + test(S("abcde"), 0, 6, SV("abcde"), 1, 5, -1); + test(S("abcde"), 0, 6, SV("abcde"), 2, 0, 5); + test(S("abcde"), 0, 6, SV("abcde"), 2, 1, -2); + test(S("abcde"), 0, 6, SV("abcde"), 2, 2, -2); + test(S("abcde"), 0, 6, SV("abcde"), 2, 3, -2); + test(S("abcde"), 0, 6, SV("abcde"), 2, 4, -2); + test(S("abcde"), 0, 6, SV("abcde"), 4, 0, 5); + test(S("abcde"), 0, 6, SV("abcde"), 4, 1, -4); + test(S("abcde"), 0, 6, SV("abcde"), 4, 2, -4); + test(S("abcde"), 0, 6, SV("abcde"), 5, 0, 5); + test(S("abcde"), 0, 6, SV("abcde"), 5, 1, 5); + test(S("abcde"), 0, 6, SV("abcde"), 6, 0, 0); + test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 1, 4); + test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 5, 0); + test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 9, -4); + test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 10, -5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 0, 11, -5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 6, SV("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 6, SV("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 6, SV("abcdefghij"), 10, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 10, 1, 5); + test(S("abcde"), 0, 6, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 10, -5); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 19, -14); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 20, -15); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 0, 21, -15); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 0, SV(""), 0, 0, 0); + test(S("abcde"), 1, 0, SV(""), 0, 1, 0); + test(S("abcde"), 1, 0, SV(""), 1, 0, 0); + test(S("abcde"), 1, 0, SV("abcde"), 0, 0, 0); + test(S("abcde"), 1, 0, SV("abcde"), 0, 1, -1); + test(S("abcde"), 1, 0, SV("abcde"), 0, 2, -2); + test(S("abcde"), 1, 0, SV("abcde"), 0, 4, -4); + test(S("abcde"), 1, 0, SV("abcde"), 0, 5, -5); + test(S("abcde"), 1, 0, SV("abcde"), 0, 6, -5); + test(S("abcde"), 1, 0, SV("abcde"), 1, 0, 0); + test(S("abcde"), 1, 0, SV("abcde"), 1, 1, -1); + test(S("abcde"), 1, 0, SV("abcde"), 1, 2, -2); + test(S("abcde"), 1, 0, SV("abcde"), 1, 3, -3); + test(S("abcde"), 1, 0, SV("abcde"), 1, 4, -4); + test(S("abcde"), 1, 0, SV("abcde"), 1, 5, -4); + test(S("abcde"), 1, 0, SV("abcde"), 2, 0, 0); + test(S("abcde"), 1, 0, SV("abcde"), 2, 1, -1); + test(S("abcde"), 1, 0, SV("abcde"), 2, 2, -2); + test(S("abcde"), 1, 0, SV("abcde"), 2, 3, -3); + test(S("abcde"), 1, 0, SV("abcde"), 2, 4, -3); + test(S("abcde"), 1, 0, SV("abcde"), 4, 0, 0); + test(S("abcde"), 1, 0, SV("abcde"), 4, 1, -1); + test(S("abcde"), 1, 0, SV("abcde"), 4, 2, -1); + test(S("abcde"), 1, 0, SV("abcde"), 5, 0, 0); + test(S("abcde"), 1, 0, SV("abcde"), 5, 1, 0); + test(S("abcde"), 1, 0, SV("abcde"), 6, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcde"), 1, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 1, -1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 1, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 1, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 1, SV(""), 0, 0, 1); - test(S("abcde"), 1, 1, SV(""), 0, 1, 1); - test(S("abcde"), 1, 1, SV(""), 1, 0, 0); - test(S("abcde"), 1, 1, SV("abcde"), 0, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 1, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 1, SV("abcde"), 1, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 1, 1, 0); - test(S("abcde"), 1, 1, SV("abcde"), 1, 2, -1); - test(S("abcde"), 1, 1, SV("abcde"), 1, 3, -2); - test(S("abcde"), 1, 1, SV("abcde"), 1, 4, -3); - test(S("abcde"), 1, 1, SV("abcde"), 1, 5, -3); - test(S("abcde"), 1, 1, SV("abcde"), 2, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 1, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 1, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 1, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 1, SV("abcde"), 4, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 1, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 1, SV("abcde"), 5, 0, 1); - test(S("abcde"), 1, 1, SV("abcde"), 5, 1, 1); - test(S("abcde"), 1, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 1, 0); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 4, -3); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 8, -7); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 9, -8); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 10, -8); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); - - return true; +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcde"), 1, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 1, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcde"), 1, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcde"), 1, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcde"), 1, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 1, SV(""), 0, 0, 1); + test(S("abcde"), 1, 1, SV(""), 0, 1, 1); + test(S("abcde"), 1, 1, SV(""), 1, 0, 0); + test(S("abcde"), 1, 1, SV("abcde"), 0, 0, 1); + test(S("abcde"), 1, 1, SV("abcde"), 0, 1, 1); + test(S("abcde"), 1, 1, SV("abcde"), 0, 2, 1); + test(S("abcde"), 1, 1, SV("abcde"), 0, 4, 1); + test(S("abcde"), 1, 1, SV("abcde"), 0, 5, 1); + test(S("abcde"), 1, 1, SV("abcde"), 0, 6, 1); + test(S("abcde"), 1, 1, SV("abcde"), 1, 0, 1); + test(S("abcde"), 1, 1, SV("abcde"), 1, 1, 0); + test(S("abcde"), 1, 1, SV("abcde"), 1, 2, -1); + test(S("abcde"), 1, 1, SV("abcde"), 1, 3, -2); + test(S("abcde"), 1, 1, SV("abcde"), 1, 4, -3); + test(S("abcde"), 1, 1, SV("abcde"), 1, 5, -3); + test(S("abcde"), 1, 1, SV("abcde"), 2, 0, 1); + test(S("abcde"), 1, 1, SV("abcde"), 2, 1, -1); + test(S("abcde"), 1, 1, SV("abcde"), 2, 2, -1); + test(S("abcde"), 1, 1, SV("abcde"), 2, 3, -1); + test(S("abcde"), 1, 1, SV("abcde"), 2, 4, -1); + test(S("abcde"), 1, 1, SV("abcde"), 4, 0, 1); + test(S("abcde"), 1, 1, SV("abcde"), 4, 1, -3); + test(S("abcde"), 1, 1, SV("abcde"), 4, 2, -3); + test(S("abcde"), 1, 1, SV("abcde"), 5, 0, 1); + test(S("abcde"), 1, 1, SV("abcde"), 5, 1, 1); + test(S("abcde"), 1, 1, SV("abcde"), 6, 0, 0); + test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 1, 0); + test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 4, -3); + test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 8, -7); + test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 9, -8); + test(S("abcde"), 1, 1, SV("abcdefghij"), 1, 10, -8); + test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 1, SV("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 1, SV("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 2, SV(""), 0, 0, 2); - test(S("abcde"), 1, 2, SV(""), 0, 1, 2); - test(S("abcde"), 1, 2, SV(""), 1, 0, 0); - test(S("abcde"), 1, 2, SV("abcde"), 0, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 2, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 2, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 2, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 2, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 2, SV("abcde"), 1, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 1, 1, 1); - test(S("abcde"), 1, 2, SV("abcde"), 1, 2, 0); - test(S("abcde"), 1, 2, SV("abcde"), 1, 3, -1); - test(S("abcde"), 1, 2, SV("abcde"), 1, 4, -2); - test(S("abcde"), 1, 2, SV("abcde"), 1, 5, -2); - test(S("abcde"), 1, 2, SV("abcde"), 2, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 2, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 2, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 2, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 2, SV("abcde"), 4, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 2, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 2, SV("abcde"), 5, 0, 2); - test(S("abcde"), 1, 2, SV("abcde"), 5, 1, 2); - test(S("abcde"), 1, 2, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 4, -2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 8, -6); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 9, -7); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 10, -7); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 2, SV("abcdefghij"), 10, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 10, 1, 2); - test(S("abcde"), 1, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 9, -7); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 18, -16); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 19, -17); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 20, -17); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 3, SV(""), 0, 0, 3); - test(S("abcde"), 1, 3, SV(""), 0, 1, 3); - test(S("abcde"), 1, 3, SV(""), 1, 0, 0); - test(S("abcde"), 1, 3, SV("abcde"), 0, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 3, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 3, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 3, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 3, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 3, SV("abcde"), 1, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 1, 1, 2); - test(S("abcde"), 1, 3, SV("abcde"), 1, 2, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 2, SV(""), 0, 0, 2); + test(S("abcde"), 1, 2, SV(""), 0, 1, 2); + test(S("abcde"), 1, 2, SV(""), 1, 0, 0); + test(S("abcde"), 1, 2, SV("abcde"), 0, 0, 2); + test(S("abcde"), 1, 2, SV("abcde"), 0, 1, 1); + test(S("abcde"), 1, 2, SV("abcde"), 0, 2, 1); + test(S("abcde"), 1, 2, SV("abcde"), 0, 4, 1); + test(S("abcde"), 1, 2, SV("abcde"), 0, 5, 1); + test(S("abcde"), 1, 2, SV("abcde"), 0, 6, 1); + test(S("abcde"), 1, 2, SV("abcde"), 1, 0, 2); + test(S("abcde"), 1, 2, SV("abcde"), 1, 1, 1); + test(S("abcde"), 1, 2, SV("abcde"), 1, 2, 0); + test(S("abcde"), 1, 2, SV("abcde"), 1, 3, -1); + test(S("abcde"), 1, 2, SV("abcde"), 1, 4, -2); + test(S("abcde"), 1, 2, SV("abcde"), 1, 5, -2); + test(S("abcde"), 1, 2, SV("abcde"), 2, 0, 2); + test(S("abcde"), 1, 2, SV("abcde"), 2, 1, -1); + test(S("abcde"), 1, 2, SV("abcde"), 2, 2, -1); + test(S("abcde"), 1, 2, SV("abcde"), 2, 3, -1); + test(S("abcde"), 1, 2, SV("abcde"), 2, 4, -1); + test(S("abcde"), 1, 2, SV("abcde"), 4, 0, 2); + test(S("abcde"), 1, 2, SV("abcde"), 4, 1, -3); + test(S("abcde"), 1, 2, SV("abcde"), 4, 2, -3); + test(S("abcde"), 1, 2, SV("abcde"), 5, 0, 2); + test(S("abcde"), 1, 2, SV("abcde"), 5, 1, 2); + test(S("abcde"), 1, 2, SV("abcde"), 6, 0, 0); + test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 2, SV("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 1, 1); + test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 4, -2); + test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 8, -6); + test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 9, -7); + test(S("abcde"), 1, 2, SV("abcdefghij"), 1, 10, -7); + test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 2, SV("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 2, SV("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 2, SV("abcdefghij"), 10, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghij"), 10, 1, 2); + test(S("abcde"), 1, 2, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 9, -7); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 18, -16); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 19, -17); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1, 20, -17); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 3, SV(""), 0, 0, 3); + test(S("abcde"), 1, 3, SV(""), 0, 1, 3); + test(S("abcde"), 1, 3, SV(""), 1, 0, 0); + test(S("abcde"), 1, 3, SV("abcde"), 0, 0, 3); + test(S("abcde"), 1, 3, SV("abcde"), 0, 1, 1); + test(S("abcde"), 1, 3, SV("abcde"), 0, 2, 1); + test(S("abcde"), 1, 3, SV("abcde"), 0, 4, 1); + test(S("abcde"), 1, 3, SV("abcde"), 0, 5, 1); + test(S("abcde"), 1, 3, SV("abcde"), 0, 6, 1); + test(S("abcde"), 1, 3, SV("abcde"), 1, 0, 3); + test(S("abcde"), 1, 3, SV("abcde"), 1, 1, 2); + test(S("abcde"), 1, 3, SV("abcde"), 1, 2, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test9() -{ - test(S("abcde"), 1, 3, SV("abcde"), 1, 3, 0); - test(S("abcde"), 1, 3, SV("abcde"), 1, 4, -1); - test(S("abcde"), 1, 3, SV("abcde"), 1, 5, -1); - test(S("abcde"), 1, 3, SV("abcde"), 2, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 3, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 3, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 3, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 3, SV("abcde"), 4, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 3, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 3, SV("abcde"), 5, 0, 3); - test(S("abcde"), 1, 3, SV("abcde"), 5, 1, 3); - test(S("abcde"), 1, 3, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 1, 2); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 4, -1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 8, -5); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 9, -6); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 10, -6); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 3, SV("abcdefghij"), 10, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 10, 1, 3); - test(S("abcde"), 1, 3, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 1, 2); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 9, -6); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 18, -15); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 19, -16); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 20, -16); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 4, SV(""), 0, 0, 4); - test(S("abcde"), 1, 4, SV(""), 0, 1, 4); - test(S("abcde"), 1, 4, SV(""), 1, 0, 0); - test(S("abcde"), 1, 4, SV("abcde"), 0, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 4, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 4, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 4, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 4, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 4, SV("abcde"), 1, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 1, 1, 3); - test(S("abcde"), 1, 4, SV("abcde"), 1, 2, 2); - test(S("abcde"), 1, 4, SV("abcde"), 1, 3, 1); - test(S("abcde"), 1, 4, SV("abcde"), 1, 4, 0); - test(S("abcde"), 1, 4, SV("abcde"), 1, 5, 0); - test(S("abcde"), 1, 4, SV("abcde"), 2, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 4, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 4, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 4, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 4, SV("abcde"), 4, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 4, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 4, SV("abcde"), 5, 0, 4); - test(S("abcde"), 1, 4, SV("abcde"), 5, 1, 4); - test(S("abcde"), 1, 4, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 1, 3); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 4, 0); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 8, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 9, -5); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 10, -5); - - return true; +TEST_CONSTEXPR_CXX20 bool test9() { + test(S("abcde"), 1, 3, SV("abcde"), 1, 3, 0); + test(S("abcde"), 1, 3, SV("abcde"), 1, 4, -1); + test(S("abcde"), 1, 3, SV("abcde"), 1, 5, -1); + test(S("abcde"), 1, 3, SV("abcde"), 2, 0, 3); + test(S("abcde"), 1, 3, SV("abcde"), 2, 1, -1); + test(S("abcde"), 1, 3, SV("abcde"), 2, 2, -1); + test(S("abcde"), 1, 3, SV("abcde"), 2, 3, -1); + test(S("abcde"), 1, 3, SV("abcde"), 2, 4, -1); + test(S("abcde"), 1, 3, SV("abcde"), 4, 0, 3); + test(S("abcde"), 1, 3, SV("abcde"), 4, 1, -3); + test(S("abcde"), 1, 3, SV("abcde"), 4, 2, -3); + test(S("abcde"), 1, 3, SV("abcde"), 5, 0, 3); + test(S("abcde"), 1, 3, SV("abcde"), 5, 1, 3); + test(S("abcde"), 1, 3, SV("abcde"), 6, 0, 0); + test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 3, SV("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 1, 2); + test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 4, -1); + test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 8, -5); + test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 9, -6); + test(S("abcde"), 1, 3, SV("abcdefghij"), 1, 10, -6); + test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 3, SV("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 3, SV("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 3, SV("abcdefghij"), 10, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghij"), 10, 1, 3); + test(S("abcde"), 1, 3, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 1, 2); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 9, -6); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 18, -15); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 19, -16); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1, 20, -16); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 20, 0, 3); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 20, 1, 3); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 4, SV(""), 0, 0, 4); + test(S("abcde"), 1, 4, SV(""), 0, 1, 4); + test(S("abcde"), 1, 4, SV(""), 1, 0, 0); + test(S("abcde"), 1, 4, SV("abcde"), 0, 0, 4); + test(S("abcde"), 1, 4, SV("abcde"), 0, 1, 1); + test(S("abcde"), 1, 4, SV("abcde"), 0, 2, 1); + test(S("abcde"), 1, 4, SV("abcde"), 0, 4, 1); + test(S("abcde"), 1, 4, SV("abcde"), 0, 5, 1); + test(S("abcde"), 1, 4, SV("abcde"), 0, 6, 1); + test(S("abcde"), 1, 4, SV("abcde"), 1, 0, 4); + test(S("abcde"), 1, 4, SV("abcde"), 1, 1, 3); + test(S("abcde"), 1, 4, SV("abcde"), 1, 2, 2); + test(S("abcde"), 1, 4, SV("abcde"), 1, 3, 1); + test(S("abcde"), 1, 4, SV("abcde"), 1, 4, 0); + test(S("abcde"), 1, 4, SV("abcde"), 1, 5, 0); + test(S("abcde"), 1, 4, SV("abcde"), 2, 0, 4); + test(S("abcde"), 1, 4, SV("abcde"), 2, 1, -1); + test(S("abcde"), 1, 4, SV("abcde"), 2, 2, -1); + test(S("abcde"), 1, 4, SV("abcde"), 2, 3, -1); + test(S("abcde"), 1, 4, SV("abcde"), 2, 4, -1); + test(S("abcde"), 1, 4, SV("abcde"), 4, 0, 4); + test(S("abcde"), 1, 4, SV("abcde"), 4, 1, -3); + test(S("abcde"), 1, 4, SV("abcde"), 4, 2, -3); + test(S("abcde"), 1, 4, SV("abcde"), 5, 0, 4); + test(S("abcde"), 1, 4, SV("abcde"), 5, 1, 4); + test(S("abcde"), 1, 4, SV("abcde"), 6, 0, 0); + test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 4, SV("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 1, 3); + test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 4, 0); + test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 8, -4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 9, -5); + test(S("abcde"), 1, 4, SV("abcdefghij"), 1, 10, -5); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test10() -{ - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 4, SV("abcdefghij"), 10, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 10, 1, 4); - test(S("abcde"), 1, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 5, SV(""), 0, 0, 4); - test(S("abcde"), 1, 5, SV(""), 0, 1, 4); - test(S("abcde"), 1, 5, SV(""), 1, 0, 0); - test(S("abcde"), 1, 5, SV("abcde"), 0, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 0, 1, 1); - test(S("abcde"), 1, 5, SV("abcde"), 0, 2, 1); - test(S("abcde"), 1, 5, SV("abcde"), 0, 4, 1); - test(S("abcde"), 1, 5, SV("abcde"), 0, 5, 1); - test(S("abcde"), 1, 5, SV("abcde"), 0, 6, 1); - test(S("abcde"), 1, 5, SV("abcde"), 1, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 1, 1, 3); - test(S("abcde"), 1, 5, SV("abcde"), 1, 2, 2); - test(S("abcde"), 1, 5, SV("abcde"), 1, 3, 1); - test(S("abcde"), 1, 5, SV("abcde"), 1, 4, 0); - test(S("abcde"), 1, 5, SV("abcde"), 1, 5, 0); - test(S("abcde"), 1, 5, SV("abcde"), 2, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 2, 1, -1); - test(S("abcde"), 1, 5, SV("abcde"), 2, 2, -1); - test(S("abcde"), 1, 5, SV("abcde"), 2, 3, -1); - test(S("abcde"), 1, 5, SV("abcde"), 2, 4, -1); - test(S("abcde"), 1, 5, SV("abcde"), 4, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 4, 1, -3); - test(S("abcde"), 1, 5, SV("abcde"), 4, 2, -3); - test(S("abcde"), 1, 5, SV("abcde"), 5, 0, 4); - test(S("abcde"), 1, 5, SV("abcde"), 5, 1, 4); - test(S("abcde"), 1, 5, SV("abcde"), 6, 0, 0); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 1, 3); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 4, 0); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 8, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 9, -5); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 10, -5); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 5, SV("abcdefghij"), 10, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 10, 1, 4); - test(S("abcde"), 1, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 1, -9); - - return true; +TEST_CONSTEXPR_CXX20 bool test10() { + test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 4, SV("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 4, SV("abcdefghij"), 10, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 10, 1, 4); + test(S("abcde"), 1, 4, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 9, -5); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 18, -14); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 19, -15); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 20, -15); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 5, SV(""), 0, 0, 4); + test(S("abcde"), 1, 5, SV(""), 0, 1, 4); + test(S("abcde"), 1, 5, SV(""), 1, 0, 0); + test(S("abcde"), 1, 5, SV("abcde"), 0, 0, 4); + test(S("abcde"), 1, 5, SV("abcde"), 0, 1, 1); + test(S("abcde"), 1, 5, SV("abcde"), 0, 2, 1); + test(S("abcde"), 1, 5, SV("abcde"), 0, 4, 1); + test(S("abcde"), 1, 5, SV("abcde"), 0, 5, 1); + test(S("abcde"), 1, 5, SV("abcde"), 0, 6, 1); + test(S("abcde"), 1, 5, SV("abcde"), 1, 0, 4); + test(S("abcde"), 1, 5, SV("abcde"), 1, 1, 3); + test(S("abcde"), 1, 5, SV("abcde"), 1, 2, 2); + test(S("abcde"), 1, 5, SV("abcde"), 1, 3, 1); + test(S("abcde"), 1, 5, SV("abcde"), 1, 4, 0); + test(S("abcde"), 1, 5, SV("abcde"), 1, 5, 0); + test(S("abcde"), 1, 5, SV("abcde"), 2, 0, 4); + test(S("abcde"), 1, 5, SV("abcde"), 2, 1, -1); + test(S("abcde"), 1, 5, SV("abcde"), 2, 2, -1); + test(S("abcde"), 1, 5, SV("abcde"), 2, 3, -1); + test(S("abcde"), 1, 5, SV("abcde"), 2, 4, -1); + test(S("abcde"), 1, 5, SV("abcde"), 4, 0, 4); + test(S("abcde"), 1, 5, SV("abcde"), 4, 1, -3); + test(S("abcde"), 1, 5, SV("abcde"), 4, 2, -3); + test(S("abcde"), 1, 5, SV("abcde"), 5, 0, 4); + test(S("abcde"), 1, 5, SV("abcde"), 5, 1, 4); + test(S("abcde"), 1, 5, SV("abcde"), 6, 0, 0); + test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 5, SV("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 1, 3); + test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 4, 0); + test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 8, -4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 9, -5); + test(S("abcde"), 1, 5, SV("abcdefghij"), 1, 10, -5); + test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 5, SV("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 5, SV("abcdefghij"), 10, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 10, 1, 4); + test(S("abcde"), 1, 5, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 9, -5); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 18, -14); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 19, -15); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1, 20, -15); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 1, -9); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test11() -{ - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 0, SV(""), 0, 0, 0); - test(S("abcde"), 2, 0, SV(""), 0, 1, 0); - test(S("abcde"), 2, 0, SV(""), 1, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 2, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 2, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 2, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 2, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 2, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 2, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 2, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 2, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 2, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 2, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 2, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 2, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 2, 0, SV("abcde"), 2, 4, -3); - test(S("abcde"), 2, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 2, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 2, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 2, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 2, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 2, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 2, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 1, SV(""), 0, 0, 1); - test(S("abcde"), 2, 1, SV(""), 0, 1, 1); - test(S("abcde"), 2, 1, SV(""), 1, 0, 0); - test(S("abcde"), 2, 1, SV("abcde"), 0, 0, 1); - test(S("abcde"), 2, 1, SV("abcde"), 0, 1, 2); - test(S("abcde"), 2, 1, SV("abcde"), 0, 2, 2); - test(S("abcde"), 2, 1, SV("abcde"), 0, 4, 2); - test(S("abcde"), 2, 1, SV("abcde"), 0, 5, 2); - test(S("abcde"), 2, 1, SV("abcde"), 0, 6, 2); - test(S("abcde"), 2, 1, SV("abcde"), 1, 0, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 1, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 2, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 3, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 4, 1); - test(S("abcde"), 2, 1, SV("abcde"), 1, 5, 1); - test(S("abcde"), 2, 1, SV("abcde"), 2, 0, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test11() { + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 0, SV(""), 0, 0, 0); + test(S("abcde"), 2, 0, SV(""), 0, 1, 0); + test(S("abcde"), 2, 0, SV(""), 1, 0, 0); + test(S("abcde"), 2, 0, SV("abcde"), 0, 0, 0); + test(S("abcde"), 2, 0, SV("abcde"), 0, 1, -1); + test(S("abcde"), 2, 0, SV("abcde"), 0, 2, -2); + test(S("abcde"), 2, 0, SV("abcde"), 0, 4, -4); + test(S("abcde"), 2, 0, SV("abcde"), 0, 5, -5); + test(S("abcde"), 2, 0, SV("abcde"), 0, 6, -5); + test(S("abcde"), 2, 0, SV("abcde"), 1, 0, 0); + test(S("abcde"), 2, 0, SV("abcde"), 1, 1, -1); + test(S("abcde"), 2, 0, SV("abcde"), 1, 2, -2); + test(S("abcde"), 2, 0, SV("abcde"), 1, 3, -3); + test(S("abcde"), 2, 0, SV("abcde"), 1, 4, -4); + test(S("abcde"), 2, 0, SV("abcde"), 1, 5, -4); + test(S("abcde"), 2, 0, SV("abcde"), 2, 0, 0); + test(S("abcde"), 2, 0, SV("abcde"), 2, 1, -1); + test(S("abcde"), 2, 0, SV("abcde"), 2, 2, -2); + test(S("abcde"), 2, 0, SV("abcde"), 2, 3, -3); + test(S("abcde"), 2, 0, SV("abcde"), 2, 4, -3); + test(S("abcde"), 2, 0, SV("abcde"), 4, 0, 0); + test(S("abcde"), 2, 0, SV("abcde"), 4, 1, -1); + test(S("abcde"), 2, 0, SV("abcde"), 4, 2, -1); + test(S("abcde"), 2, 0, SV("abcde"), 5, 0, 0); + test(S("abcde"), 2, 0, SV("abcde"), 5, 1, 0); + test(S("abcde"), 2, 0, SV("abcde"), 6, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcde"), 2, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcde"), 2, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 2, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcde"), 2, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcde"), 2, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcde"), 2, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 1, SV(""), 0, 0, 1); + test(S("abcde"), 2, 1, SV(""), 0, 1, 1); + test(S("abcde"), 2, 1, SV(""), 1, 0, 0); + test(S("abcde"), 2, 1, SV("abcde"), 0, 0, 1); + test(S("abcde"), 2, 1, SV("abcde"), 0, 1, 2); + test(S("abcde"), 2, 1, SV("abcde"), 0, 2, 2); + test(S("abcde"), 2, 1, SV("abcde"), 0, 4, 2); + test(S("abcde"), 2, 1, SV("abcde"), 0, 5, 2); + test(S("abcde"), 2, 1, SV("abcde"), 0, 6, 2); + test(S("abcde"), 2, 1, SV("abcde"), 1, 0, 1); + test(S("abcde"), 2, 1, SV("abcde"), 1, 1, 1); + test(S("abcde"), 2, 1, SV("abcde"), 1, 2, 1); + test(S("abcde"), 2, 1, SV("abcde"), 1, 3, 1); + test(S("abcde"), 2, 1, SV("abcde"), 1, 4, 1); + test(S("abcde"), 2, 1, SV("abcde"), 1, 5, 1); + test(S("abcde"), 2, 1, SV("abcde"), 2, 0, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test12() -{ - test(S("abcde"), 2, 1, SV("abcde"), 2, 1, 0); - test(S("abcde"), 2, 1, SV("abcde"), 2, 2, -1); - test(S("abcde"), 2, 1, SV("abcde"), 2, 3, -2); - test(S("abcde"), 2, 1, SV("abcde"), 2, 4, -2); - test(S("abcde"), 2, 1, SV("abcde"), 4, 0, 1); - test(S("abcde"), 2, 1, SV("abcde"), 4, 1, -2); - test(S("abcde"), 2, 1, SV("abcde"), 4, 2, -2); - test(S("abcde"), 2, 1, SV("abcde"), 5, 0, 1); - test(S("abcde"), 2, 1, SV("abcde"), 5, 1, 1); - test(S("abcde"), 2, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 2, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 2, SV(""), 0, 0, 2); - test(S("abcde"), 2, 2, SV(""), 0, 1, 2); - test(S("abcde"), 2, 2, SV(""), 1, 0, 0); - test(S("abcde"), 2, 2, SV("abcde"), 0, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 1, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 2, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 4, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 5, 2); - test(S("abcde"), 2, 2, SV("abcde"), 0, 6, 2); - test(S("abcde"), 2, 2, SV("abcde"), 1, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 1, 1, 1); - test(S("abcde"), 2, 2, SV("abcde"), 1, 2, 1); - test(S("abcde"), 2, 2, SV("abcde"), 1, 3, 1); - test(S("abcde"), 2, 2, SV("abcde"), 1, 4, 1); - test(S("abcde"), 2, 2, SV("abcde"), 1, 5, 1); - test(S("abcde"), 2, 2, SV("abcde"), 2, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 2, 1, 1); - test(S("abcde"), 2, 2, SV("abcde"), 2, 2, 0); - test(S("abcde"), 2, 2, SV("abcde"), 2, 3, -1); - test(S("abcde"), 2, 2, SV("abcde"), 2, 4, -1); - test(S("abcde"), 2, 2, SV("abcde"), 4, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 4, 1, -2); - test(S("abcde"), 2, 2, SV("abcde"), 4, 2, -2); - test(S("abcde"), 2, 2, SV("abcde"), 5, 0, 2); - test(S("abcde"), 2, 2, SV("abcde"), 5, 1, 2); - test(S("abcde"), 2, 2, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 4, -3); - - return true; +TEST_CONSTEXPR_CXX20 bool test12() { + test(S("abcde"), 2, 1, SV("abcde"), 2, 1, 0); + test(S("abcde"), 2, 1, SV("abcde"), 2, 2, -1); + test(S("abcde"), 2, 1, SV("abcde"), 2, 3, -2); + test(S("abcde"), 2, 1, SV("abcde"), 2, 4, -2); + test(S("abcde"), 2, 1, SV("abcde"), 4, 0, 1); + test(S("abcde"), 2, 1, SV("abcde"), 4, 1, -2); + test(S("abcde"), 2, 1, SV("abcde"), 4, 2, -2); + test(S("abcde"), 2, 1, SV("abcde"), 5, 0, 1); + test(S("abcde"), 2, 1, SV("abcde"), 5, 1, 1); + test(S("abcde"), 2, 1, SV("abcde"), 6, 0, 0); + test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 1, 2); + test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 5, 2); + test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 9, 2); + test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 10, 2); + test(S("abcde"), 2, 1, SV("abcdefghij"), 0, 11, 2); + test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 1, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 4, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 8, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 9, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 1, 10, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 1, -3); + test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 2, -3); + test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 4, -3); + test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 5, -3); + test(S("abcde"), 2, 1, SV("abcdefghij"), 5, 6, -3); + test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 1, -7); + test(S("abcde"), 2, 1, SV("abcdefghij"), 9, 2, -7); + test(S("abcde"), 2, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcde"), 2, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 1, 2); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 10, 2); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 19, 2); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 20, 2); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 0, 21, 2); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 9, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 19, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 1, 20, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 1, -8); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 5, -8); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 10, -8); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 10, 11, -8); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 1, -17); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 19, 2, -17); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 2, SV(""), 0, 0, 2); + test(S("abcde"), 2, 2, SV(""), 0, 1, 2); + test(S("abcde"), 2, 2, SV(""), 1, 0, 0); + test(S("abcde"), 2, 2, SV("abcde"), 0, 0, 2); + test(S("abcde"), 2, 2, SV("abcde"), 0, 1, 2); + test(S("abcde"), 2, 2, SV("abcde"), 0, 2, 2); + test(S("abcde"), 2, 2, SV("abcde"), 0, 4, 2); + test(S("abcde"), 2, 2, SV("abcde"), 0, 5, 2); + test(S("abcde"), 2, 2, SV("abcde"), 0, 6, 2); + test(S("abcde"), 2, 2, SV("abcde"), 1, 0, 2); + test(S("abcde"), 2, 2, SV("abcde"), 1, 1, 1); + test(S("abcde"), 2, 2, SV("abcde"), 1, 2, 1); + test(S("abcde"), 2, 2, SV("abcde"), 1, 3, 1); + test(S("abcde"), 2, 2, SV("abcde"), 1, 4, 1); + test(S("abcde"), 2, 2, SV("abcde"), 1, 5, 1); + test(S("abcde"), 2, 2, SV("abcde"), 2, 0, 2); + test(S("abcde"), 2, 2, SV("abcde"), 2, 1, 1); + test(S("abcde"), 2, 2, SV("abcde"), 2, 2, 0); + test(S("abcde"), 2, 2, SV("abcde"), 2, 3, -1); + test(S("abcde"), 2, 2, SV("abcde"), 2, 4, -1); + test(S("abcde"), 2, 2, SV("abcde"), 4, 0, 2); + test(S("abcde"), 2, 2, SV("abcde"), 4, 1, -2); + test(S("abcde"), 2, 2, SV("abcde"), 4, 2, -2); + test(S("abcde"), 2, 2, SV("abcde"), 5, 0, 2); + test(S("abcde"), 2, 2, SV("abcde"), 5, 1, 2); + test(S("abcde"), 2, 2, SV("abcde"), 6, 0, 0); + test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 1, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 5, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 9, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 10, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 0, 11, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 1, 1); + test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 4, 1); + test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 8, 1); + test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 9, 1); + test(S("abcde"), 2, 2, SV("abcdefghij"), 1, 10, 1); + test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 1, -3); + test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 2, -3); + test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 4, -3); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test13() -{ - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 2, SV("abcdefghij"), 10, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 10, 1, 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 3, SV(""), 0, 0, 3); - test(S("abcde"), 2, 3, SV(""), 0, 1, 3); - test(S("abcde"), 2, 3, SV(""), 1, 0, 0); - test(S("abcde"), 2, 3, SV("abcde"), 0, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 0, 1, 2); - test(S("abcde"), 2, 3, SV("abcde"), 0, 2, 2); - test(S("abcde"), 2, 3, SV("abcde"), 0, 4, 2); - test(S("abcde"), 2, 3, SV("abcde"), 0, 5, 2); - test(S("abcde"), 2, 3, SV("abcde"), 0, 6, 2); - test(S("abcde"), 2, 3, SV("abcde"), 1, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 1, 1, 1); - test(S("abcde"), 2, 3, SV("abcde"), 1, 2, 1); - test(S("abcde"), 2, 3, SV("abcde"), 1, 3, 1); - test(S("abcde"), 2, 3, SV("abcde"), 1, 4, 1); - test(S("abcde"), 2, 3, SV("abcde"), 1, 5, 1); - test(S("abcde"), 2, 3, SV("abcde"), 2, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 2, 1, 2); - test(S("abcde"), 2, 3, SV("abcde"), 2, 2, 1); - test(S("abcde"), 2, 3, SV("abcde"), 2, 3, 0); - test(S("abcde"), 2, 3, SV("abcde"), 2, 4, 0); - test(S("abcde"), 2, 3, SV("abcde"), 4, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 4, 1, -2); - test(S("abcde"), 2, 3, SV("abcde"), 4, 2, -2); - test(S("abcde"), 2, 3, SV("abcde"), 5, 0, 3); - test(S("abcde"), 2, 3, SV("abcde"), 5, 1, 3); - test(S("abcde"), 2, 3, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 3, SV("abcdefghij"), 10, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 10, 1, 3); - test(S("abcde"), 2, 3, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 11, -8); - - return true; +TEST_CONSTEXPR_CXX20 bool test13() { + test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 5, -3); + test(S("abcde"), 2, 2, SV("abcdefghij"), 5, 6, -3); + test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 1, -7); + test(S("abcde"), 2, 2, SV("abcdefghij"), 9, 2, -7); + test(S("abcde"), 2, 2, SV("abcdefghij"), 10, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 10, 1, 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 1, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 10, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 19, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 20, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 0, 21, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 9, 1); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 19, 1); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 1, 20, 1); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 1, -8); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 5, -8); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 10, -8); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 10, 11, -8); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 1, -17); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 19, 2, -17); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 3, SV(""), 0, 0, 3); + test(S("abcde"), 2, 3, SV(""), 0, 1, 3); + test(S("abcde"), 2, 3, SV(""), 1, 0, 0); + test(S("abcde"), 2, 3, SV("abcde"), 0, 0, 3); + test(S("abcde"), 2, 3, SV("abcde"), 0, 1, 2); + test(S("abcde"), 2, 3, SV("abcde"), 0, 2, 2); + test(S("abcde"), 2, 3, SV("abcde"), 0, 4, 2); + test(S("abcde"), 2, 3, SV("abcde"), 0, 5, 2); + test(S("abcde"), 2, 3, SV("abcde"), 0, 6, 2); + test(S("abcde"), 2, 3, SV("abcde"), 1, 0, 3); + test(S("abcde"), 2, 3, SV("abcde"), 1, 1, 1); + test(S("abcde"), 2, 3, SV("abcde"), 1, 2, 1); + test(S("abcde"), 2, 3, SV("abcde"), 1, 3, 1); + test(S("abcde"), 2, 3, SV("abcde"), 1, 4, 1); + test(S("abcde"), 2, 3, SV("abcde"), 1, 5, 1); + test(S("abcde"), 2, 3, SV("abcde"), 2, 0, 3); + test(S("abcde"), 2, 3, SV("abcde"), 2, 1, 2); + test(S("abcde"), 2, 3, SV("abcde"), 2, 2, 1); + test(S("abcde"), 2, 3, SV("abcde"), 2, 3, 0); + test(S("abcde"), 2, 3, SV("abcde"), 2, 4, 0); + test(S("abcde"), 2, 3, SV("abcde"), 4, 0, 3); + test(S("abcde"), 2, 3, SV("abcde"), 4, 1, -2); + test(S("abcde"), 2, 3, SV("abcde"), 4, 2, -2); + test(S("abcde"), 2, 3, SV("abcde"), 5, 0, 3); + test(S("abcde"), 2, 3, SV("abcde"), 5, 1, 3); + test(S("abcde"), 2, 3, SV("abcde"), 6, 0, 0); + test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 1, 2); + test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 5, 2); + test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 9, 2); + test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 10, 2); + test(S("abcde"), 2, 3, SV("abcdefghij"), 0, 11, 2); + test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 1, 1); + test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 4, 1); + test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 8, 1); + test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 9, 1); + test(S("abcde"), 2, 3, SV("abcdefghij"), 1, 10, 1); + test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 1, -3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 2, -3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 4, -3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 5, -3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 5, 6, -3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 1, -7); + test(S("abcde"), 2, 3, SV("abcdefghij"), 9, 2, -7); + test(S("abcde"), 2, 3, SV("abcdefghij"), 10, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 10, 1, 3); + test(S("abcde"), 2, 3, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 1, 2); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 10, 2); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 19, 2); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 20, 2); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 0, 21, 2); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 9, 1); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 19, 1); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 1, 20, 1); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 1, -8); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 5, -8); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 10, -8); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 10, 11, -8); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test14() -{ - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 4, SV(""), 0, 0, 3); - test(S("abcde"), 2, 4, SV(""), 0, 1, 3); - test(S("abcde"), 2, 4, SV(""), 1, 0, 0); - test(S("abcde"), 2, 4, SV("abcde"), 0, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 0, 1, 2); - test(S("abcde"), 2, 4, SV("abcde"), 0, 2, 2); - test(S("abcde"), 2, 4, SV("abcde"), 0, 4, 2); - test(S("abcde"), 2, 4, SV("abcde"), 0, 5, 2); - test(S("abcde"), 2, 4, SV("abcde"), 0, 6, 2); - test(S("abcde"), 2, 4, SV("abcde"), 1, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 1, 1, 1); - test(S("abcde"), 2, 4, SV("abcde"), 1, 2, 1); - test(S("abcde"), 2, 4, SV("abcde"), 1, 3, 1); - test(S("abcde"), 2, 4, SV("abcde"), 1, 4, 1); - test(S("abcde"), 2, 4, SV("abcde"), 1, 5, 1); - test(S("abcde"), 2, 4, SV("abcde"), 2, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 2, 1, 2); - test(S("abcde"), 2, 4, SV("abcde"), 2, 2, 1); - test(S("abcde"), 2, 4, SV("abcde"), 2, 3, 0); - test(S("abcde"), 2, 4, SV("abcde"), 2, 4, 0); - test(S("abcde"), 2, 4, SV("abcde"), 4, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 4, 1, -2); - test(S("abcde"), 2, 4, SV("abcde"), 4, 2, -2); - test(S("abcde"), 2, 4, SV("abcde"), 5, 0, 3); - test(S("abcde"), 2, 4, SV("abcde"), 5, 1, 3); - test(S("abcde"), 2, 4, SV("abcde"), 6, 0, 0); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 4, SV("abcdefghij"), 10, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 10, 1, 3); - test(S("abcde"), 2, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 0, SV(""), 0, 0, 0); - test(S("abcde"), 4, 0, SV(""), 0, 1, 0); - test(S("abcde"), 4, 0, SV(""), 1, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 4, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 4, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 4, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 4, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 4, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 4, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 4, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 4, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 4, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 4, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 4, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 4, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 4, 0, SV("abcde"), 2, 4, -3); - - return true; +TEST_CONSTEXPR_CXX20 bool test14() { + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 1, -17); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 19, 2, -17); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 20, 0, 3); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 20, 1, 3); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 4, SV(""), 0, 0, 3); + test(S("abcde"), 2, 4, SV(""), 0, 1, 3); + test(S("abcde"), 2, 4, SV(""), 1, 0, 0); + test(S("abcde"), 2, 4, SV("abcde"), 0, 0, 3); + test(S("abcde"), 2, 4, SV("abcde"), 0, 1, 2); + test(S("abcde"), 2, 4, SV("abcde"), 0, 2, 2); + test(S("abcde"), 2, 4, SV("abcde"), 0, 4, 2); + test(S("abcde"), 2, 4, SV("abcde"), 0, 5, 2); + test(S("abcde"), 2, 4, SV("abcde"), 0, 6, 2); + test(S("abcde"), 2, 4, SV("abcde"), 1, 0, 3); + test(S("abcde"), 2, 4, SV("abcde"), 1, 1, 1); + test(S("abcde"), 2, 4, SV("abcde"), 1, 2, 1); + test(S("abcde"), 2, 4, SV("abcde"), 1, 3, 1); + test(S("abcde"), 2, 4, SV("abcde"), 1, 4, 1); + test(S("abcde"), 2, 4, SV("abcde"), 1, 5, 1); + test(S("abcde"), 2, 4, SV("abcde"), 2, 0, 3); + test(S("abcde"), 2, 4, SV("abcde"), 2, 1, 2); + test(S("abcde"), 2, 4, SV("abcde"), 2, 2, 1); + test(S("abcde"), 2, 4, SV("abcde"), 2, 3, 0); + test(S("abcde"), 2, 4, SV("abcde"), 2, 4, 0); + test(S("abcde"), 2, 4, SV("abcde"), 4, 0, 3); + test(S("abcde"), 2, 4, SV("abcde"), 4, 1, -2); + test(S("abcde"), 2, 4, SV("abcde"), 4, 2, -2); + test(S("abcde"), 2, 4, SV("abcde"), 5, 0, 3); + test(S("abcde"), 2, 4, SV("abcde"), 5, 1, 3); + test(S("abcde"), 2, 4, SV("abcde"), 6, 0, 0); + test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 1, 2); + test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 5, 2); + test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 9, 2); + test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 10, 2); + test(S("abcde"), 2, 4, SV("abcdefghij"), 0, 11, 2); + test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 1, 1); + test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 4, 1); + test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 8, 1); + test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 9, 1); + test(S("abcde"), 2, 4, SV("abcdefghij"), 1, 10, 1); + test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 1, -3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 2, -3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 4, -3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 5, -3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 5, 6, -3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 1, -7); + test(S("abcde"), 2, 4, SV("abcdefghij"), 9, 2, -7); + test(S("abcde"), 2, 4, SV("abcdefghij"), 10, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 10, 1, 3); + test(S("abcde"), 2, 4, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 1, 2); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 10, 2); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 19, 2); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 20, 2); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 0, 21, 2); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 9, 1); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 19, 1); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 1, 20, 1); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 1, -8); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 5, -8); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 10, -8); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 10, 11, -8); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 1, -17); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 19, 2, -17); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 20, 0, 3); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 20, 1, 3); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 4, 0, SV(""), 0, 0, 0); + test(S("abcde"), 4, 0, SV(""), 0, 1, 0); + test(S("abcde"), 4, 0, SV(""), 1, 0, 0); + test(S("abcde"), 4, 0, SV("abcde"), 0, 0, 0); + test(S("abcde"), 4, 0, SV("abcde"), 0, 1, -1); + test(S("abcde"), 4, 0, SV("abcde"), 0, 2, -2); + test(S("abcde"), 4, 0, SV("abcde"), 0, 4, -4); + test(S("abcde"), 4, 0, SV("abcde"), 0, 5, -5); + test(S("abcde"), 4, 0, SV("abcde"), 0, 6, -5); + test(S("abcde"), 4, 0, SV("abcde"), 1, 0, 0); + test(S("abcde"), 4, 0, SV("abcde"), 1, 1, -1); + test(S("abcde"), 4, 0, SV("abcde"), 1, 2, -2); + test(S("abcde"), 4, 0, SV("abcde"), 1, 3, -3); + test(S("abcde"), 4, 0, SV("abcde"), 1, 4, -4); + test(S("abcde"), 4, 0, SV("abcde"), 1, 5, -4); + test(S("abcde"), 4, 0, SV("abcde"), 2, 0, 0); + test(S("abcde"), 4, 0, SV("abcde"), 2, 1, -1); + test(S("abcde"), 4, 0, SV("abcde"), 2, 2, -2); + test(S("abcde"), 4, 0, SV("abcde"), 2, 3, -3); + test(S("abcde"), 4, 0, SV("abcde"), 2, 4, -3); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test15() -{ - test(S("abcde"), 4, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 4, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 4, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 4, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 4, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 4, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 4, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 1, SV(""), 0, 0, 1); - test(S("abcde"), 4, 1, SV(""), 0, 1, 1); - test(S("abcde"), 4, 1, SV(""), 1, 0, 0); - test(S("abcde"), 4, 1, SV("abcde"), 0, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 0, 1, 4); - test(S("abcde"), 4, 1, SV("abcde"), 0, 2, 4); - test(S("abcde"), 4, 1, SV("abcde"), 0, 4, 4); - test(S("abcde"), 4, 1, SV("abcde"), 0, 5, 4); - test(S("abcde"), 4, 1, SV("abcde"), 0, 6, 4); - test(S("abcde"), 4, 1, SV("abcde"), 1, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 1, 1, 3); - test(S("abcde"), 4, 1, SV("abcde"), 1, 2, 3); - test(S("abcde"), 4, 1, SV("abcde"), 1, 3, 3); - test(S("abcde"), 4, 1, SV("abcde"), 1, 4, 3); - test(S("abcde"), 4, 1, SV("abcde"), 1, 5, 3); - test(S("abcde"), 4, 1, SV("abcde"), 2, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 2, 1, 2); - test(S("abcde"), 4, 1, SV("abcde"), 2, 2, 2); - test(S("abcde"), 4, 1, SV("abcde"), 2, 3, 2); - test(S("abcde"), 4, 1, SV("abcde"), 2, 4, 2); - test(S("abcde"), 4, 1, SV("abcde"), 4, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 4, 1, 0); - test(S("abcde"), 4, 1, SV("abcde"), 4, 2, 0); - test(S("abcde"), 4, 1, SV("abcde"), 5, 0, 1); - test(S("abcde"), 4, 1, SV("abcde"), 5, 1, 1); - test(S("abcde"), 4, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 1, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 5, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 9, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 10, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 11, 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 1, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 4, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 8, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 9, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 10, 3); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 2, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 4, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 5, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 6, -1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 1, -5); - - return true; +TEST_CONSTEXPR_CXX20 bool test15() { + test(S("abcde"), 4, 0, SV("abcde"), 4, 0, 0); + test(S("abcde"), 4, 0, SV("abcde"), 4, 1, -1); + test(S("abcde"), 4, 0, SV("abcde"), 4, 2, -1); + test(S("abcde"), 4, 0, SV("abcde"), 5, 0, 0); + test(S("abcde"), 4, 0, SV("abcde"), 5, 1, 0); + test(S("abcde"), 4, 0, SV("abcde"), 6, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcde"), 4, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcde"), 4, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 4, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcde"), 4, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcde"), 4, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcde"), 4, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 4, 1, SV(""), 0, 0, 1); + test(S("abcde"), 4, 1, SV(""), 0, 1, 1); + test(S("abcde"), 4, 1, SV(""), 1, 0, 0); + test(S("abcde"), 4, 1, SV("abcde"), 0, 0, 1); + test(S("abcde"), 4, 1, SV("abcde"), 0, 1, 4); + test(S("abcde"), 4, 1, SV("abcde"), 0, 2, 4); + test(S("abcde"), 4, 1, SV("abcde"), 0, 4, 4); + test(S("abcde"), 4, 1, SV("abcde"), 0, 5, 4); + test(S("abcde"), 4, 1, SV("abcde"), 0, 6, 4); + test(S("abcde"), 4, 1, SV("abcde"), 1, 0, 1); + test(S("abcde"), 4, 1, SV("abcde"), 1, 1, 3); + test(S("abcde"), 4, 1, SV("abcde"), 1, 2, 3); + test(S("abcde"), 4, 1, SV("abcde"), 1, 3, 3); + test(S("abcde"), 4, 1, SV("abcde"), 1, 4, 3); + test(S("abcde"), 4, 1, SV("abcde"), 1, 5, 3); + test(S("abcde"), 4, 1, SV("abcde"), 2, 0, 1); + test(S("abcde"), 4, 1, SV("abcde"), 2, 1, 2); + test(S("abcde"), 4, 1, SV("abcde"), 2, 2, 2); + test(S("abcde"), 4, 1, SV("abcde"), 2, 3, 2); + test(S("abcde"), 4, 1, SV("abcde"), 2, 4, 2); + test(S("abcde"), 4, 1, SV("abcde"), 4, 0, 1); + test(S("abcde"), 4, 1, SV("abcde"), 4, 1, 0); + test(S("abcde"), 4, 1, SV("abcde"), 4, 2, 0); + test(S("abcde"), 4, 1, SV("abcde"), 5, 0, 1); + test(S("abcde"), 4, 1, SV("abcde"), 5, 1, 1); + test(S("abcde"), 4, 1, SV("abcde"), 6, 0, 0); + test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 1, 4); + test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 5, 4); + test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 9, 4); + test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 10, 4); + test(S("abcde"), 4, 1, SV("abcdefghij"), 0, 11, 4); + test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 1, 3); + test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 4, 3); + test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 8, 3); + test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 9, 3); + test(S("abcde"), 4, 1, SV("abcdefghij"), 1, 10, 3); + test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 1, -1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 2, -1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 4, -1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 5, -1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 5, 6, -1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 1, -5); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test16() -{ - test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 2, -5); - test(S("abcde"), 4, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 4, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 10, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 19, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 20, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 21, 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 9, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 18, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 19, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 20, 3); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 1, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 5, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 9, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 10, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 11, -6); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 1, -15); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 2, -15); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 2, SV(""), 0, 0, 1); - test(S("abcde"), 4, 2, SV(""), 0, 1, 1); - test(S("abcde"), 4, 2, SV(""), 1, 0, 0); - test(S("abcde"), 4, 2, SV("abcde"), 0, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 0, 1, 4); - test(S("abcde"), 4, 2, SV("abcde"), 0, 2, 4); - test(S("abcde"), 4, 2, SV("abcde"), 0, 4, 4); - test(S("abcde"), 4, 2, SV("abcde"), 0, 5, 4); - test(S("abcde"), 4, 2, SV("abcde"), 0, 6, 4); - test(S("abcde"), 4, 2, SV("abcde"), 1, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 1, 1, 3); - test(S("abcde"), 4, 2, SV("abcde"), 1, 2, 3); - test(S("abcde"), 4, 2, SV("abcde"), 1, 3, 3); - test(S("abcde"), 4, 2, SV("abcde"), 1, 4, 3); - test(S("abcde"), 4, 2, SV("abcde"), 1, 5, 3); - test(S("abcde"), 4, 2, SV("abcde"), 2, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 2, 1, 2); - test(S("abcde"), 4, 2, SV("abcde"), 2, 2, 2); - test(S("abcde"), 4, 2, SV("abcde"), 2, 3, 2); - test(S("abcde"), 4, 2, SV("abcde"), 2, 4, 2); - test(S("abcde"), 4, 2, SV("abcde"), 4, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 4, 1, 0); - test(S("abcde"), 4, 2, SV("abcde"), 4, 2, 0); - test(S("abcde"), 4, 2, SV("abcde"), 5, 0, 1); - test(S("abcde"), 4, 2, SV("abcde"), 5, 1, 1); - test(S("abcde"), 4, 2, SV("abcde"), 6, 0, 0); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 1, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 5, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 9, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 10, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 11, 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 1, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 4, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 8, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 9, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 10, 3); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 2, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 4, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 5, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 6, -1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 1, -5); - test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 2, -5); - test(S("abcde"), 4, 2, SV("abcdefghij"), 10, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 10, 1, 1); - test(S("abcde"), 4, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 10, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 19, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 20, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 21, 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 9, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 18, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 19, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 20, 3); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 1, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 5, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 9, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 10, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 11, -6); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 1, -15); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 2, -15); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test16() { + test(S("abcde"), 4, 1, SV("abcdefghij"), 9, 2, -5); + test(S("abcde"), 4, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcde"), 4, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 10, 4); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 19, 4); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 20, 4); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 0, 21, 4); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 9, 3); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 18, 3); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 19, 3); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 1, 20, 3); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 1, -6); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 5, -6); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 9, -6); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 10, -6); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 10, 11, -6); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 1, -15); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 19, 2, -15); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 4, 2, SV(""), 0, 0, 1); + test(S("abcde"), 4, 2, SV(""), 0, 1, 1); + test(S("abcde"), 4, 2, SV(""), 1, 0, 0); + test(S("abcde"), 4, 2, SV("abcde"), 0, 0, 1); + test(S("abcde"), 4, 2, SV("abcde"), 0, 1, 4); + test(S("abcde"), 4, 2, SV("abcde"), 0, 2, 4); + test(S("abcde"), 4, 2, SV("abcde"), 0, 4, 4); + test(S("abcde"), 4, 2, SV("abcde"), 0, 5, 4); + test(S("abcde"), 4, 2, SV("abcde"), 0, 6, 4); + test(S("abcde"), 4, 2, SV("abcde"), 1, 0, 1); + test(S("abcde"), 4, 2, SV("abcde"), 1, 1, 3); + test(S("abcde"), 4, 2, SV("abcde"), 1, 2, 3); + test(S("abcde"), 4, 2, SV("abcde"), 1, 3, 3); + test(S("abcde"), 4, 2, SV("abcde"), 1, 4, 3); + test(S("abcde"), 4, 2, SV("abcde"), 1, 5, 3); + test(S("abcde"), 4, 2, SV("abcde"), 2, 0, 1); + test(S("abcde"), 4, 2, SV("abcde"), 2, 1, 2); + test(S("abcde"), 4, 2, SV("abcde"), 2, 2, 2); + test(S("abcde"), 4, 2, SV("abcde"), 2, 3, 2); + test(S("abcde"), 4, 2, SV("abcde"), 2, 4, 2); + test(S("abcde"), 4, 2, SV("abcde"), 4, 0, 1); + test(S("abcde"), 4, 2, SV("abcde"), 4, 1, 0); + test(S("abcde"), 4, 2, SV("abcde"), 4, 2, 0); + test(S("abcde"), 4, 2, SV("abcde"), 5, 0, 1); + test(S("abcde"), 4, 2, SV("abcde"), 5, 1, 1); + test(S("abcde"), 4, 2, SV("abcde"), 6, 0, 0); + test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 1, 4); + test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 5, 4); + test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 9, 4); + test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 10, 4); + test(S("abcde"), 4, 2, SV("abcdefghij"), 0, 11, 4); + test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 1, 3); + test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 4, 3); + test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 8, 3); + test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 9, 3); + test(S("abcde"), 4, 2, SV("abcdefghij"), 1, 10, 3); + test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 1, -1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 2, -1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 4, -1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 5, -1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 5, 6, -1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 1, -5); + test(S("abcde"), 4, 2, SV("abcdefghij"), 9, 2, -5); + test(S("abcde"), 4, 2, SV("abcdefghij"), 10, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 10, 1, 1); + test(S("abcde"), 4, 2, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 10, 4); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 19, 4); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 20, 4); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 0, 21, 4); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 9, 3); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 18, 3); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 19, 3); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 1, 20, 3); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 1, -6); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 5, -6); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 9, -6); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 10, -6); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 10, 11, -6); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 1, -15); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 19, 2, -15); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test17() -{ - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 5, 0, SV(""), 0, 0, 0); - test(S("abcde"), 5, 0, SV(""), 0, 1, 0); - test(S("abcde"), 5, 0, SV(""), 1, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 0, 1, -1); - test(S("abcde"), 5, 0, SV("abcde"), 0, 2, -2); - test(S("abcde"), 5, 0, SV("abcde"), 0, 4, -4); - test(S("abcde"), 5, 0, SV("abcde"), 0, 5, -5); - test(S("abcde"), 5, 0, SV("abcde"), 0, 6, -5); - test(S("abcde"), 5, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 1, 1, -1); - test(S("abcde"), 5, 0, SV("abcde"), 1, 2, -2); - test(S("abcde"), 5, 0, SV("abcde"), 1, 3, -3); - test(S("abcde"), 5, 0, SV("abcde"), 1, 4, -4); - test(S("abcde"), 5, 0, SV("abcde"), 1, 5, -4); - test(S("abcde"), 5, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 2, 1, -1); - test(S("abcde"), 5, 0, SV("abcde"), 2, 2, -2); - test(S("abcde"), 5, 0, SV("abcde"), 2, 3, -3); - test(S("abcde"), 5, 0, SV("abcde"), 2, 4, -3); - test(S("abcde"), 5, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 4, 1, -1); - test(S("abcde"), 5, 0, SV("abcde"), 4, 2, -1); - test(S("abcde"), 5, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 5, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 5, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 5, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 5, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 5, 1, SV(""), 0, 0, 0); - test(S("abcde"), 5, 1, SV(""), 0, 1, 0); - test(S("abcde"), 5, 1, SV(""), 1, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 0, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 0, 1, -1); - test(S("abcde"), 5, 1, SV("abcde"), 0, 2, -2); - test(S("abcde"), 5, 1, SV("abcde"), 0, 4, -4); - test(S("abcde"), 5, 1, SV("abcde"), 0, 5, -5); - test(S("abcde"), 5, 1, SV("abcde"), 0, 6, -5); - test(S("abcde"), 5, 1, SV("abcde"), 1, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 1, 1, -1); - test(S("abcde"), 5, 1, SV("abcde"), 1, 2, -2); - test(S("abcde"), 5, 1, SV("abcde"), 1, 3, -3); - test(S("abcde"), 5, 1, SV("abcde"), 1, 4, -4); - test(S("abcde"), 5, 1, SV("abcde"), 1, 5, -4); - test(S("abcde"), 5, 1, SV("abcde"), 2, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 2, 1, -1); - test(S("abcde"), 5, 1, SV("abcde"), 2, 2, -2); - test(S("abcde"), 5, 1, SV("abcde"), 2, 3, -3); - test(S("abcde"), 5, 1, SV("abcde"), 2, 4, -3); - test(S("abcde"), 5, 1, SV("abcde"), 4, 0, 0); - test(S("abcde"), 5, 1, SV("abcde"), 4, 1, -1); - test(S("abcde"), 5, 1, SV("abcde"), 4, 2, -1); - test(S("abcde"), 5, 1, SV("abcde"), 5, 0, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test17() { + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 5, 0, SV(""), 0, 0, 0); + test(S("abcde"), 5, 0, SV(""), 0, 1, 0); + test(S("abcde"), 5, 0, SV(""), 1, 0, 0); + test(S("abcde"), 5, 0, SV("abcde"), 0, 0, 0); + test(S("abcde"), 5, 0, SV("abcde"), 0, 1, -1); + test(S("abcde"), 5, 0, SV("abcde"), 0, 2, -2); + test(S("abcde"), 5, 0, SV("abcde"), 0, 4, -4); + test(S("abcde"), 5, 0, SV("abcde"), 0, 5, -5); + test(S("abcde"), 5, 0, SV("abcde"), 0, 6, -5); + test(S("abcde"), 5, 0, SV("abcde"), 1, 0, 0); + test(S("abcde"), 5, 0, SV("abcde"), 1, 1, -1); + test(S("abcde"), 5, 0, SV("abcde"), 1, 2, -2); + test(S("abcde"), 5, 0, SV("abcde"), 1, 3, -3); + test(S("abcde"), 5, 0, SV("abcde"), 1, 4, -4); + test(S("abcde"), 5, 0, SV("abcde"), 1, 5, -4); + test(S("abcde"), 5, 0, SV("abcde"), 2, 0, 0); + test(S("abcde"), 5, 0, SV("abcde"), 2, 1, -1); + test(S("abcde"), 5, 0, SV("abcde"), 2, 2, -2); + test(S("abcde"), 5, 0, SV("abcde"), 2, 3, -3); + test(S("abcde"), 5, 0, SV("abcde"), 2, 4, -3); + test(S("abcde"), 5, 0, SV("abcde"), 4, 0, 0); + test(S("abcde"), 5, 0, SV("abcde"), 4, 1, -1); + test(S("abcde"), 5, 0, SV("abcde"), 4, 2, -1); + test(S("abcde"), 5, 0, SV("abcde"), 5, 0, 0); + test(S("abcde"), 5, 0, SV("abcde"), 5, 1, 0); + test(S("abcde"), 5, 0, SV("abcde"), 6, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcde"), 5, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcde"), 5, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 5, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcde"), 5, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcde"), 5, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcde"), 5, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 5, 1, SV(""), 0, 0, 0); + test(S("abcde"), 5, 1, SV(""), 0, 1, 0); + test(S("abcde"), 5, 1, SV(""), 1, 0, 0); + test(S("abcde"), 5, 1, SV("abcde"), 0, 0, 0); + test(S("abcde"), 5, 1, SV("abcde"), 0, 1, -1); + test(S("abcde"), 5, 1, SV("abcde"), 0, 2, -2); + test(S("abcde"), 5, 1, SV("abcde"), 0, 4, -4); + test(S("abcde"), 5, 1, SV("abcde"), 0, 5, -5); + test(S("abcde"), 5, 1, SV("abcde"), 0, 6, -5); + test(S("abcde"), 5, 1, SV("abcde"), 1, 0, 0); + test(S("abcde"), 5, 1, SV("abcde"), 1, 1, -1); + test(S("abcde"), 5, 1, SV("abcde"), 1, 2, -2); + test(S("abcde"), 5, 1, SV("abcde"), 1, 3, -3); + test(S("abcde"), 5, 1, SV("abcde"), 1, 4, -4); + test(S("abcde"), 5, 1, SV("abcde"), 1, 5, -4); + test(S("abcde"), 5, 1, SV("abcde"), 2, 0, 0); + test(S("abcde"), 5, 1, SV("abcde"), 2, 1, -1); + test(S("abcde"), 5, 1, SV("abcde"), 2, 2, -2); + test(S("abcde"), 5, 1, SV("abcde"), 2, 3, -3); + test(S("abcde"), 5, 1, SV("abcde"), 2, 4, -3); + test(S("abcde"), 5, 1, SV("abcde"), 4, 0, 0); + test(S("abcde"), 5, 1, SV("abcde"), 4, 1, -1); + test(S("abcde"), 5, 1, SV("abcde"), 4, 2, -1); + test(S("abcde"), 5, 1, SV("abcde"), 5, 0, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test18() -{ - test(S("abcde"), 5, 1, SV("abcde"), 5, 1, 0); - test(S("abcde"), 5, 1, SV("abcde"), 6, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 5, -5); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 9, -9); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 10, -10); - test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 11, -10); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 4, -4); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 8, -8); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 9, -9); - test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 10, -9); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 2, -2); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 2, -1); - test(S("abcde"), 5, 1, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 5, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 6, 0, SV(""), 0, 0, 0); - test(S("abcde"), 6, 0, SV(""), 0, 1, 0); - test(S("abcde"), 6, 0, SV(""), 1, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 2, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 4, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 5, 0); - test(S("abcde"), 6, 0, SV("abcde"), 0, 6, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 2, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 3, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 4, 0); - test(S("abcde"), 6, 0, SV("abcde"), 1, 5, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 2, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 3, 0); - test(S("abcde"), 6, 0, SV("abcde"), 2, 4, 0); - test(S("abcde"), 6, 0, SV("abcde"), 4, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 4, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 4, 2, 0); - test(S("abcde"), 6, 0, SV("abcde"), 5, 0, 0); - test(S("abcde"), 6, 0, SV("abcde"), 5, 1, 0); - test(S("abcde"), 6, 0, SV("abcde"), 6, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 5, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 9, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 10, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 11, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 4, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 8, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 9, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 10, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 2, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 4, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 5, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 6, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 2, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 11, 0, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test18() { + test(S("abcde"), 5, 1, SV("abcde"), 5, 1, 0); + test(S("abcde"), 5, 1, SV("abcde"), 6, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 1, -1); + test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 5, -5); + test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 9, -9); + test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 10, -10); + test(S("abcde"), 5, 1, SV("abcdefghij"), 0, 11, -10); + test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 1, -1); + test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 4, -4); + test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 8, -8); + test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 9, -9); + test(S("abcde"), 5, 1, SV("abcdefghij"), 1, 10, -9); + test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 1, -1); + test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 2, -2); + test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 4, -4); + test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 5, -5); + test(S("abcde"), 5, 1, SV("abcdefghij"), 5, 6, -5); + test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 1, -1); + test(S("abcde"), 5, 1, SV("abcdefghij"), 9, 2, -1); + test(S("abcde"), 5, 1, SV("abcdefghij"), 10, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghij"), 10, 1, 0); + test(S("abcde"), 5, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 6, 0, SV(""), 0, 0, 0); + test(S("abcde"), 6, 0, SV(""), 0, 1, 0); + test(S("abcde"), 6, 0, SV(""), 1, 0, 0); + test(S("abcde"), 6, 0, SV("abcde"), 0, 0, 0); + test(S("abcde"), 6, 0, SV("abcde"), 0, 1, 0); + test(S("abcde"), 6, 0, SV("abcde"), 0, 2, 0); + test(S("abcde"), 6, 0, SV("abcde"), 0, 4, 0); + test(S("abcde"), 6, 0, SV("abcde"), 0, 5, 0); + test(S("abcde"), 6, 0, SV("abcde"), 0, 6, 0); + test(S("abcde"), 6, 0, SV("abcde"), 1, 0, 0); + test(S("abcde"), 6, 0, SV("abcde"), 1, 1, 0); + test(S("abcde"), 6, 0, SV("abcde"), 1, 2, 0); + test(S("abcde"), 6, 0, SV("abcde"), 1, 3, 0); + test(S("abcde"), 6, 0, SV("abcde"), 1, 4, 0); + test(S("abcde"), 6, 0, SV("abcde"), 1, 5, 0); + test(S("abcde"), 6, 0, SV("abcde"), 2, 0, 0); + test(S("abcde"), 6, 0, SV("abcde"), 2, 1, 0); + test(S("abcde"), 6, 0, SV("abcde"), 2, 2, 0); + test(S("abcde"), 6, 0, SV("abcde"), 2, 3, 0); + test(S("abcde"), 6, 0, SV("abcde"), 2, 4, 0); + test(S("abcde"), 6, 0, SV("abcde"), 4, 0, 0); + test(S("abcde"), 6, 0, SV("abcde"), 4, 1, 0); + test(S("abcde"), 6, 0, SV("abcde"), 4, 2, 0); + test(S("abcde"), 6, 0, SV("abcde"), 5, 0, 0); + test(S("abcde"), 6, 0, SV("abcde"), 5, 1, 0); + test(S("abcde"), 6, 0, SV("abcde"), 6, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 5, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 9, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 10, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 0, 11, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 4, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 8, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 9, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 1, 10, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 2, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 4, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 5, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 5, 6, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 9, 2, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 11, 0, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test19() -{ - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 0, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 0, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 0, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 1, SV(""), 0, 0, 1); - test(S("abcdefghij"), 0, 1, SV(""), 0, 1, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test19() { + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 0, SV(""), 0, 0, 0); + test(S("abcdefghij"), 0, 0, SV(""), 0, 1, 0); + test(S("abcdefghij"), 0, 0, SV(""), 1, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghij"), 0, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghij"), 0, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghij"), 0, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghij"), 0, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghij"), 0, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 1, SV(""), 0, 0, 1); + test(S("abcdefghij"), 0, 1, SV(""), 0, 1, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test20() -{ - test(S("abcdefghij"), 0, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 2, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 4, -3); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 5, -4); - test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 6, -4); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 5, -4); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 9, -8); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 10, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 11, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 5, SV(""), 0, 0, 5); - test(S("abcdefghij"), 0, 5, SV(""), 0, 1, 5); - test(S("abcdefghij"), 0, 5, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 1, 4); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 2, 3); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 5, 0); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 6, 0); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 5, SV("abcde"), 5, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 5, 1, 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 1, 4); - - return true; +TEST_CONSTEXPR_CXX20 bool test20() { + test(S("abcdefghij"), 0, 1, SV(""), 1, 0, 0); + test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 1, 0); + test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 2, -1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 4, -3); + test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 5, -4); + test(S("abcdefghij"), 0, 1, SV("abcde"), 0, 6, -4); + test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 1, SV("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 1, SV("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 1, SV("abcde"), 5, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 5, 1, 1); + test(S("abcdefghij"), 0, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 1, 0); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 5, -4); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 9, -8); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 10, -9); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 0, 11, -9); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 5, SV(""), 0, 0, 5); + test(S("abcdefghij"), 0, 5, SV(""), 0, 1, 5); + test(S("abcdefghij"), 0, 5, SV(""), 1, 0, 0); + test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 1, 4); + test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 2, 3); + test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 4, 1); + test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 5, 0); + test(S("abcdefghij"), 0, 5, SV("abcde"), 0, 6, 0); + test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 5, SV("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 5, SV("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 5, SV("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 5, SV("abcde"), 5, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcde"), 5, 1, 5); + test(S("abcdefghij"), 0, 5, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 1, 4); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test21() -{ - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 5, 0); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 9, -4); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 10, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 11, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 9, SV(""), 0, 0, 9); - test(S("abcdefghij"), 0, 9, SV(""), 0, 1, 9); - test(S("abcdefghij"), 0, 9, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 2, 7); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 5, 4); - test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 6, 4); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 9, SV("abcde"), 5, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 5, 1, 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 5, 4); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 9, 0); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 10, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 11, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 10, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 19, -10); - - return true; +TEST_CONSTEXPR_CXX20 bool test21() { + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 5, 0); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 9, -4); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 10, -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 0, 11, -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 10, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 10, 1, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 10, -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 19, -14); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 20, -15); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 0, 21, -15); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 9, SV(""), 0, 0, 9); + test(S("abcdefghij"), 0, 9, SV(""), 0, 1, 9); + test(S("abcdefghij"), 0, 9, SV(""), 1, 0, 0); + test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 1, 8); + test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 2, 7); + test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 4, 5); + test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 5, 4); + test(S("abcdefghij"), 0, 9, SV("abcde"), 0, 6, 4); + test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 9, SV("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 9, SV("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 9, SV("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 9, SV("abcde"), 5, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcde"), 5, 1, 9); + test(S("abcdefghij"), 0, 9, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 1, 8); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 5, 4); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 9, 0); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 10, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 0, 11, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 10, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 10, 1, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 1, 8); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 10, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 19, -10); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test22() -{ - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 20, -11); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 21, -11); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 10, SV(""), 0, 0, 10); - test(S("abcdefghij"), 0, 10, SV(""), 0, 1, 10); - test(S("abcdefghij"), 0, 10, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 2, 8); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 4, 6); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 10, SV("abcde"), 5, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 5, 1, 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 11, SV(""), 0, 0, 10); - test(S("abcdefghij"), 0, 11, SV(""), 0, 1, 10); - test(S("abcdefghij"), 0, 11, SV(""), 1, 0, 0); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 2, 8); - - return true; +TEST_CONSTEXPR_CXX20 bool test22() { + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 20, -11); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 0, 21, -11); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 10, SV(""), 0, 0, 10); + test(S("abcdefghij"), 0, 10, SV(""), 0, 1, 10); + test(S("abcdefghij"), 0, 10, SV(""), 1, 0, 0); + test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 1, 9); + test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 2, 8); + test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 4, 6); + test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 5, 5); + test(S("abcdefghij"), 0, 10, SV("abcde"), 0, 6, 5); + test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 10, SV("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 10, SV("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 10, SV("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 10, SV("abcde"), 5, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcde"), 5, 1, 10); + test(S("abcdefghij"), 0, 10, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 1, 9); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 10, 0); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0, 11, 0); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 10, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 10, 1, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 1, 9); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 19, -9); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 20, -10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 21, -10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 11, SV(""), 0, 0, 10); + test(S("abcdefghij"), 0, 11, SV(""), 0, 1, 10); + test(S("abcdefghij"), 0, 11, SV(""), 1, 0, 0); + test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 1, 9); + test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 2, 8); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test23() -{ - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 4, 6); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 11, SV("abcde"), 5, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 5, 1, 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 1, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 1, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 1, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 11, -10); - - return true; +TEST_CONSTEXPR_CXX20 bool test23() { + test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 4, 6); + test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 5, 5); + test(S("abcdefghij"), 0, 11, SV("abcde"), 0, 6, 5); + test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 11, SV("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 11, SV("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 11, SV("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 11, SV("abcde"), 5, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcde"), 5, 1, 10); + test(S("abcdefghij"), 0, 11, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 1, 9); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 10, 0); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0, 11, 0); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 10, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 10, 1, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 1, 9); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 19, -9); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 20, -10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 0, 21, -10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 0, SV(""), 0, 0, 0); + test(S("abcdefghij"), 1, 0, SV(""), 0, 1, 0); + test(S("abcdefghij"), 1, 0, SV(""), 1, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghij"), 1, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghij"), 1, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghij"), 1, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghij"), 1, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghij"), 1, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 0, 11, -10); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test24() -{ - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 1, SV(""), 0, 0, 1); - test(S("abcdefghij"), 1, 1, SV(""), 0, 1, 1); - test(S("abcdefghij"), 1, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 1, 0); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 2, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 3, -2); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 4, -3); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 5, -3); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 1, 0); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 4, -3); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 8, -7); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 9, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 10, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test24() { + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 1, SV(""), 0, 0, 1); + test(S("abcdefghij"), 1, 1, SV(""), 0, 1, 1); + test(S("abcdefghij"), 1, 1, SV(""), 1, 0, 0); + test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 1, 0); + test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 2, -1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 3, -2); + test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 4, -3); + test(S("abcdefghij"), 1, 1, SV("abcde"), 1, 5, -3); + test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 1, SV("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 1, SV("abcde"), 5, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 5, 1, 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 1, 0); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 4, -3); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 8, -7); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 9, -8); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1, 10, -8); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test25() -{ - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 4, SV(""), 0, 0, 4); - test(S("abcdefghij"), 1, 4, SV(""), 0, 1, 4); - test(S("abcdefghij"), 1, 4, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 2, 2); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 3, 1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 4, 0); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 5, 0); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 4, SV("abcde"), 5, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 5, 1, 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 4, 0); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 8, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 9, -5); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 10, -5); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 10, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 10, 1, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 8, SV(""), 0, 0, 8); - test(S("abcdefghij"), 1, 8, SV(""), 0, 1, 8); - test(S("abcdefghij"), 1, 8, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 0, 8); - - return true; +TEST_CONSTEXPR_CXX20 bool test25() { + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 4, SV(""), 0, 0, 4); + test(S("abcdefghij"), 1, 4, SV(""), 0, 1, 4); + test(S("abcdefghij"), 1, 4, SV(""), 1, 0, 0); + test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 1, 3); + test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 2, 2); + test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 3, 1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 4, 0); + test(S("abcdefghij"), 1, 4, SV("abcde"), 1, 5, 0); + test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 4, SV("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 4, SV("abcde"), 5, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcde"), 5, 1, 4); + test(S("abcdefghij"), 1, 4, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 1, 3); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 4, 0); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 8, -4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 9, -5); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1, 10, -5); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 10, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 10, 1, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 9, -5); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 18, -14); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 19, -15); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1, 20, -15); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 8, SV(""), 0, 0, 8); + test(S("abcdefghij"), 1, 8, SV(""), 0, 1, 8); + test(S("abcdefghij"), 1, 8, SV(""), 1, 0, 0); + test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 0, 8); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test26() -{ - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 2, 6); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 3, 5); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 8, SV("abcde"), 5, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 5, 1, 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 8, 0); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 10, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 10, 1, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 18, -10); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 19, -11); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 20, -11); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 20, 0, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 20, 1, 8); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 9, SV(""), 0, 0, 9); - test(S("abcdefghij"), 1, 9, SV(""), 0, 1, 9); - test(S("abcdefghij"), 1, 9, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 2, 7); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 3, 6); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 4, 5); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 5, 5); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 9, SV("abcde"), 5, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 5, 1, 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 4, 5); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 8, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test26() { + test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 1, 7); + test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 2, 6); + test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 3, 5); + test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 4, 4); + test(S("abcdefghij"), 1, 8, SV("abcde"), 1, 5, 4); + test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 8, SV("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 8, SV("abcde"), 5, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcde"), 5, 1, 8); + test(S("abcdefghij"), 1, 8, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 1, 7); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 8, 0); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 10, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 10, 1, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 1, 7); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 18, -10); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 19, -11); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1, 20, -11); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 20, 0, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 20, 1, 8); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 9, SV(""), 0, 0, 9); + test(S("abcdefghij"), 1, 9, SV(""), 0, 1, 9); + test(S("abcdefghij"), 1, 9, SV(""), 1, 0, 0); + test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 1, 8); + test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 2, 7); + test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 3, 6); + test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 4, 5); + test(S("abcdefghij"), 1, 9, SV("abcde"), 1, 5, 5); + test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 9, SV("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 9, SV("abcde"), 5, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcde"), 5, 1, 9); + test(S("abcdefghij"), 1, 9, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 1, 8); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 4, 5); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 8, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test27() -{ - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 20, -10); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 10, SV(""), 0, 0, 9); - test(S("abcdefghij"), 1, 10, SV(""), 0, 1, 9); - test(S("abcdefghij"), 1, 10, SV(""), 1, 0, 0); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 2, 7); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 3, 6); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 4, 5); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 5, 5); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 10, SV("abcde"), 5, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 5, 1, 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 4, 5); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 8, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 20, -10); - - return true; +TEST_CONSTEXPR_CXX20 bool test27() { + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 9, 0); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1, 10, 0); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 10, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 10, 1, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 18, -9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 19, -10); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 20, -10); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 10, SV(""), 0, 0, 9); + test(S("abcdefghij"), 1, 10, SV(""), 0, 1, 9); + test(S("abcdefghij"), 1, 10, SV(""), 1, 0, 0); + test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 1, 8); + test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 2, 7); + test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 3, 6); + test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 4, 5); + test(S("abcdefghij"), 1, 10, SV("abcde"), 1, 5, 5); + test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 10, SV("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 10, SV("abcde"), 5, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcde"), 5, 1, 9); + test(S("abcdefghij"), 1, 10, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 1, 8); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 4, 5); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 8, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 9, 0); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1, 10, 0); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 10, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 10, 1, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 18, -9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 19, -10); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1, 20, -10); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test28() -{ - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 5, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 5, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 5, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 1, SV(""), 0, 0, 1); - test(S("abcdefghij"), 5, 1, SV(""), 0, 1, 1); - test(S("abcdefghij"), 5, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 4, 4); - - return true; +TEST_CONSTEXPR_CXX20 bool test28() { + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 0, SV(""), 0, 0, 0); + test(S("abcdefghij"), 5, 0, SV(""), 0, 1, 0); + test(S("abcdefghij"), 5, 0, SV(""), 1, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghij"), 5, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghij"), 5, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghij"), 5, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghij"), 5, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghij"), 5, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 1, SV(""), 0, 0, 1); + test(S("abcdefghij"), 5, 1, SV(""), 0, 1, 1); + test(S("abcdefghij"), 5, 1, SV(""), 1, 0, 0); + test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 1, SV("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 4, 4); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test29() -{ - test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 1, 0); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 2, -1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 4, -3); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 2, SV(""), 0, 0, 2); - test(S("abcdefghij"), 5, 2, SV(""), 0, 1, 2); - test(S("abcdefghij"), 5, 2, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 2, SV("abcde"), 5, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 5, 1, 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 1, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test29() { + test(S("abcdefghij"), 5, 1, SV("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 2, 3); + test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 1, SV("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 5, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 5, 1, 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 1, 0); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 2, -1); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 4, -3); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 9, -5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 2, SV(""), 0, 0, 2); + test(S("abcdefghij"), 5, 2, SV(""), 0, 1, 2); + test(S("abcdefghij"), 5, 2, SV(""), 1, 0, 0); + test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 2, SV("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 4, 4); + test(S("abcdefghij"), 5, 2, SV("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 2, 3); + test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 2, SV("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 2, SV("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 2, SV("abcde"), 5, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcde"), 5, 1, 2); + test(S("abcdefghij"), 5, 2, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 1, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test30() -{ - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 2, 0); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 4, -2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 5, -3); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 6, -3); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 10, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 10, 1, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 4, SV(""), 0, 0, 4); - test(S("abcdefghij"), 5, 4, SV(""), 0, 1, 4); - test(S("abcdefghij"), 5, 4, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 4, SV("abcde"), 5, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 5, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 1, 3); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 2, 2); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 4, 0); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 5, -1); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 6, -1); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 10, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 10, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 9, -5); - - return true; +TEST_CONSTEXPR_CXX20 bool test30() { + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 2, 0); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 4, -2); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 5, -3); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5, 6, -3); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 10, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 10, 1, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 9, -5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 20, 0, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 20, 1, 2); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 4, SV(""), 0, 0, 4); + test(S("abcdefghij"), 5, 4, SV(""), 0, 1, 4); + test(S("abcdefghij"), 5, 4, SV(""), 1, 0, 0); + test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 4, SV("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 4, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 2, 3); + test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 4, SV("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 4, SV("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 4, SV("abcde"), 5, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 5, 1, 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 1, 3); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 2, 2); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 4, 0); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 5, -1); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5, 6, -1); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 10, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 10, 1, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 9, -5); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test31() -{ - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 5, SV(""), 0, 0, 5); - test(S("abcdefghij"), 5, 5, SV(""), 0, 1, 5); - test(S("abcdefghij"), 5, 5, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 5, SV("abcde"), 5, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 5, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 2, 3); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 4, 1); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 6, SV(""), 0, 0, 5); - test(S("abcdefghij"), 5, 6, SV(""), 0, 1, 5); - test(S("abcdefghij"), 5, 6, SV(""), 1, 0, 0); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 2, 3); - - return true; +TEST_CONSTEXPR_CXX20 bool test31() { + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 5, SV(""), 0, 0, 5); + test(S("abcdefghij"), 5, 5, SV(""), 0, 1, 5); + test(S("abcdefghij"), 5, 5, SV(""), 1, 0, 0); + test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 4, 4); + test(S("abcdefghij"), 5, 5, SV("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 2, 3); + test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 5, SV("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 5, SV("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 5, SV("abcde"), 5, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 5, 1, 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 1, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 2, 3); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 4, 1); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 5, 0); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5, 6, 0); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 10, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 10, 1, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 9, -5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 6, SV(""), 0, 0, 5); + test(S("abcdefghij"), 5, 6, SV(""), 0, 1, 5); + test(S("abcdefghij"), 5, 6, SV(""), 1, 0, 0); + test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 4, 4); + test(S("abcdefghij"), 5, 6, SV("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 2, 3); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test32() -{ - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 6, SV("abcde"), 5, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 5, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 2, 3); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 4, 1); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 9, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 9, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 9, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 6, -5); - - return true; +TEST_CONSTEXPR_CXX20 bool test32() { + test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 6, SV("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 6, SV("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 6, SV("abcde"), 5, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 5, 1, 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 1, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 2, 3); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 4, 1); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 5, 0); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5, 6, 0); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 10, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 10, 1, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 9, -5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 9, 0, SV(""), 0, 0, 0); + test(S("abcdefghij"), 9, 0, SV(""), 0, 1, 0); + test(S("abcdefghij"), 9, 0, SV(""), 1, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghij"), 9, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghij"), 9, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghij"), 9, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghij"), 9, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghij"), 9, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 5, 6, -5); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test33() -{ - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 1, SV(""), 0, 0, 1); - test(S("abcdefghij"), 9, 1, SV(""), 0, 1, 1); - test(S("abcdefghij"), 9, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 2, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 4, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 5, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 6, 9); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 2, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 3, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 4, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 5, 8); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 1, 7); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 2, 7); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 3, 7); - test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 4, 7); - test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 1, 5); - test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 2, 5); - test(S("abcdefghij"), 9, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 5, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 9, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 10, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 11, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 4, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 8, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 9, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 10, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 2, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 4, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 5, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 6, 4); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 19, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 20, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 21, 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 9, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 18, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 19, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 20, 8); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 5, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 9, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 1, -10); - - return true; +TEST_CONSTEXPR_CXX20 bool test33() { + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 9, 1, SV(""), 0, 0, 1); + test(S("abcdefghij"), 9, 1, SV(""), 0, 1, 1); + test(S("abcdefghij"), 9, 1, SV(""), 1, 0, 0); + test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 1, 9); + test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 2, 9); + test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 4, 9); + test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 5, 9); + test(S("abcdefghij"), 9, 1, SV("abcde"), 0, 6, 9); + test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 1, 8); + test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 2, 8); + test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 3, 8); + test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 4, 8); + test(S("abcdefghij"), 9, 1, SV("abcde"), 1, 5, 8); + test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 1, 7); + test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 2, 7); + test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 3, 7); + test(S("abcdefghij"), 9, 1, SV("abcde"), 2, 4, 7); + test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 1, 5); + test(S("abcdefghij"), 9, 1, SV("abcde"), 4, 2, 5); + test(S("abcdefghij"), 9, 1, SV("abcde"), 5, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcde"), 5, 1, 1); + test(S("abcdefghij"), 9, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 1, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 5, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 9, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 10, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 0, 11, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 1, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 4, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 8, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 9, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 1, 10, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 1, 4); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 2, 4); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 4, 4); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 5, 4); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 5, 6, 4); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 1, 0); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9, 2, 0); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 1, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 10, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 19, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 20, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 0, 21, 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 9, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 18, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 19, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 1, 20, 8); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 5, -1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 9, -1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 10, -1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 10, 11, -1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 1, -10); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test34() -{ - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 2, -10); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 2, SV(""), 0, 0, 1); - test(S("abcdefghij"), 9, 2, SV(""), 0, 1, 1); - test(S("abcdefghij"), 9, 2, SV(""), 1, 0, 0); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 2, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 4, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 5, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 6, 9); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 2, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 3, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 4, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 5, 8); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 1, 7); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 2, 7); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 3, 7); - test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 4, 7); - test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 1, 5); - test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 2, 5); - test(S("abcdefghij"), 9, 2, SV("abcde"), 5, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 5, 1, 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 5, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 9, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 10, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 11, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 4, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 8, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 9, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 10, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 2, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 4, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 5, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 6, 4); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 19, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 20, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 21, 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 9, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 18, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 19, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 20, 8); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 5, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 9, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 1, -10); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 2, -10); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 10, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 10, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 10, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 1, -1); - - return true; +TEST_CONSTEXPR_CXX20 bool test34() { + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 19, 2, -10); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 9, 2, SV(""), 0, 0, 1); + test(S("abcdefghij"), 9, 2, SV(""), 0, 1, 1); + test(S("abcdefghij"), 9, 2, SV(""), 1, 0, 0); + test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 1, 9); + test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 2, 9); + test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 4, 9); + test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 5, 9); + test(S("abcdefghij"), 9, 2, SV("abcde"), 0, 6, 9); + test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 1, 8); + test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 2, 8); + test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 3, 8); + test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 4, 8); + test(S("abcdefghij"), 9, 2, SV("abcde"), 1, 5, 8); + test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 1, 7); + test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 2, 7); + test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 3, 7); + test(S("abcdefghij"), 9, 2, SV("abcde"), 2, 4, 7); + test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 1, 5); + test(S("abcdefghij"), 9, 2, SV("abcde"), 4, 2, 5); + test(S("abcdefghij"), 9, 2, SV("abcde"), 5, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcde"), 5, 1, 1); + test(S("abcdefghij"), 9, 2, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 1, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 5, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 9, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 10, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 0, 11, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 1, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 4, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 8, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 9, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 1, 10, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 1, 4); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 2, 4); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 4, 4); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 5, 4); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 5, 6, 4); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 1, 0); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9, 2, 0); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 1, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 10, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 19, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 20, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 0, 21, 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 9, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 18, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 19, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 1, 20, 8); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 5, -1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 9, -1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 10, -1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 10, 11, -1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 1, -10); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 19, 2, -10); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 10, 0, SV(""), 0, 0, 0); + test(S("abcdefghij"), 10, 0, SV(""), 0, 1, 0); + test(S("abcdefghij"), 10, 0, SV(""), 1, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghij"), 10, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghij"), 10, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghij"), 10, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 1, -1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test35() -{ - test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 10, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 10, 1, SV(""), 0, 0, 0); - test(S("abcdefghij"), 10, 1, SV(""), 0, 1, 0); - test(S("abcdefghij"), 10, 1, SV(""), 1, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 2, -2); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 4, -4); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 5, -5); - test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 6, -5); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 2, -2); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 3, -3); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 4, -4); - test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 5, -4); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 2, -2); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 3, -3); - test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 4, -3); - test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 2, -1); - test(S("abcdefghij"), 10, 1, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 10, 0, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test35() { + test(S("abcdefghij"), 10, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghij"), 10, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghij"), 10, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 10, 1, SV(""), 0, 0, 0); + test(S("abcdefghij"), 10, 1, SV(""), 0, 1, 0); + test(S("abcdefghij"), 10, 1, SV(""), 1, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 2, -2); + test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 4, -4); + test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 5, -5); + test(S("abcdefghij"), 10, 1, SV("abcde"), 0, 6, -5); + test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 2, -2); + test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 3, -3); + test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 4, -4); + test(S("abcdefghij"), 10, 1, SV("abcde"), 1, 5, -4); + test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 2, -2); + test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 3, -3); + test(S("abcdefghij"), 10, 1, SV("abcde"), 2, 4, -3); + test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcde"), 4, 2, -1); + test(S("abcdefghij"), 10, 1, SV("abcde"), 5, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcde"), 5, 1, 0); + test(S("abcdefghij"), 10, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 10, 0, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test36() -{ - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 11, 0, SV(""), 0, 0, 0); - test(S("abcdefghij"), 11, 0, SV(""), 0, 1, 0); - test(S("abcdefghij"), 11, 0, SV(""), 1, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 6, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 3, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 3, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 9, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 8, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 4, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test36() { + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 11, 0, SV(""), 0, 0, 0); + test(S("abcdefghij"), 11, 0, SV(""), 0, 1, 0); + test(S("abcdefghij"), 11, 0, SV(""), 1, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 2, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 4, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 5, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 0, 6, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 2, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 3, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 4, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 1, 5, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 2, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 3, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 2, 4, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 4, 2, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 5, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 9, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 10, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0, 11, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 4, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 8, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 9, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 1, 10, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 2, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 4, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 5, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 5, 6, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 9, 2, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test37() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 6, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 6, 0, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test37() { + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 4, -3); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 5, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 0, 6, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), 6, 0, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test38() -{ - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 9, -8); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 11, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 2, 8); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 4, 6); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 6, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 1, 9); - - return true; +TEST_CONSTEXPR_CXX20 bool test38() { + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 5, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 9, -8); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 10, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 0, 11, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 10, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 19, -18); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 20, -19); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 0, 21, -19); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 1, 9); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 2, 8); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 4, 6); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 5, 5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 0, 6, 5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5, 1, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 1, 9); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 5, 5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 10, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0, 11, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 10, 1, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 1, 9); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test39() -{ - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 2, 17); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 4, 15); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 6, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 11, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 21, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 0, 20); - - return true; +TEST_CONSTEXPR_CXX20 bool test39() { + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 19, -9); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 20, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 0, 21, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 2, 17); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 4, 15); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 5, 14); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 0, 6, 14); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 5, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 5, 14); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 10, 9); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 0, 11, 9); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 10, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 10, 9); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 19, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 0, 21, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 20, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 20, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 0, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 0, 20); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test40() -{ - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 6, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 5, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 9, 11); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 20, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 20, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 6, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 5, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 9, 11); - - return true; +TEST_CONSTEXPR_CXX20 bool test40() { + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 2, 18); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 4, 16); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 0, 6, 15); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 5, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 5, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 9, 11); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 20, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 20, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 0, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 2, 18); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 4, 16); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 0, 6, 15); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 5, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 5, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 9, 11); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test41() -{ - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 20, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 20, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - - return true; +TEST_CONSTEXPR_CXX20 bool test41() { + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 20, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 20, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test42() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 3, -2); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 5, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 8, -7); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 9, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 10, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 5, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test42() { + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 3, -2); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 4, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1, 5, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 4, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 8, -7); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 9, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1, 10, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 9, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 18, -17); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 19, -18); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1, 20, -18); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 0, 1, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 5, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test43() -{ - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 2, 7); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 3, 6); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 4, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 5, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 5, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 4, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 8, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 20, -10); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 1, 17); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 2, 16); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 3, 15); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 4, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 5, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 5, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 5, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 1, 17); - - return true; +TEST_CONSTEXPR_CXX20 bool test43() { + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 1, 8); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 2, 7); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 3, 6); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 4, 5); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1, 5, 5); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 5, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 5, 1, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 1, 8); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 4, 5); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 8, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 9, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1, 10, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 10, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 18, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 19, -10); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1, 20, -10); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 0, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 1, 17); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 2, 16); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 3, 15); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 4, 14); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1, 5, 14); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 5, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 5, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 1, 17); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test44() -{ - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 4, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 8, 10); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 10, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 10, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 1, 17); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 20, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 20, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 2, 17); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 3, 16); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 5, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 8, 11); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 10, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 18, 1); - - return true; +TEST_CONSTEXPR_CXX20 bool test44() { + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 4, 14); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 8, 10); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 10, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 10, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 1, 17); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 18, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 20, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 20, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 2, 17); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 3, 16); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 4, 15); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1, 5, 15); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 5, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 4, 15); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 8, 11); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 9, 10); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1, 10, 10); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 10, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 9, 10); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 18, 1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test45() -{ - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 2, 17); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 3, 16); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 5, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 8, 11); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 10, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 2, -2); - - return true; +TEST_CONSTEXPR_CXX20 bool test45() { + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 20, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 20, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 2, 17); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 3, 16); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 4, 15); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1, 5, 15); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 5, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 4, 15); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 8, 11); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 9, 10); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1, 10, 10); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 10, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 9, 10); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 20, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 20, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 2, -2); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test46() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 10, 9); - - return true; +TEST_CONSTEXPR_CXX20 bool test46() { + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 1, 10, 9); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test47() -{ - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 5, -4); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 5, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 1, 4); - - return true; +TEST_CONSTEXPR_CXX20 bool test47() { + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 4, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 5, -4); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 0, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 5, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 4, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 1, 4); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test48() -{ - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 9, -4); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 5, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 5, 4); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 0, 10); - - return true; +TEST_CONSTEXPR_CXX20 bool test48() { + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 5, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 9, -4); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 0, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 5, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 5, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 4, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 5, 4); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 9, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 10, -1); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10, 11, -1); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 0, 10); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test49() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 9, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 4, 5); - - return true; +TEST_CONSTEXPR_CXX20 bool test49() { + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 5, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 4, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 9, 1); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 5, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 4, 5); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test50() -{ - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 9, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - - return true; +TEST_CONSTEXPR_CXX20 bool test50() { + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 9, 1); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test51() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 6, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 2, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 3, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 5, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 1, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 2, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 3, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 4, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 1, 15); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 2, 15); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 11, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 8, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 10, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 1, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 2, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 4, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 5, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 6, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 1, 10); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 2, 10); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 21, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 18, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 19, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 20, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 5, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 9, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 10, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 11, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 6, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 2, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 3, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 5, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 1, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 2, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 3, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 4, 17); - - return true; +TEST_CONSTEXPR_CXX20 bool test51() { + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 2, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 4, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 0, 6, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 2, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 3, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 4, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 1, 5, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 1, 17); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 2, 17); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 3, 17); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 2, 4, 17); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 1, 15); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 4, 2, 15); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 9, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 0, 11, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 4, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 8, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 9, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 1, 10, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 1, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 2, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 4, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 5, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 5, 6, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 1, 10); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 9, 2, 10); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 19, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 20, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 0, 21, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 9, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 18, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 19, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 1, 20, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 5, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 9, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 10, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 10, 11, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 2, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 4, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 0, 6, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 2, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 3, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 4, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 1, 5, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 1, 17); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 2, 17); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 3, 17); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 2, 4, 17); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test52() -{ - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 1, 15); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 2, 15); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 11, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 8, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 10, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 1, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 2, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 4, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 5, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 6, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 1, 10); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 2, 10); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 21, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 18, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 19, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 20, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 5, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 9, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 10, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 11, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 1, -1); - - return true; +TEST_CONSTEXPR_CXX20 bool test52() { + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 1, 15); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 4, 2, 15); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 9, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 0, 11, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 4, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 8, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 9, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 1, 10, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 1, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 2, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 4, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 5, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 5, 6, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 1, 10); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 9, 2, 10); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 19, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 20, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 0, 21, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 9, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 18, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 19, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 1, 20, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 5, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 9, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 10, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 10, 11, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 1, -1); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test53() -{ - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test53() { + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 20, 0, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test54() -{ - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 6, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 3, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 3, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 11, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 8, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 6, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); - - return true; +TEST_CONSTEXPR_CXX20 bool test54() { + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0, 6, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 3, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 1, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 3, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 2, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 4, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0, 11, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 8, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 1, 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 5, 6, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 9, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 19, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 18, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 21, 0, 0); + + return true; } template -TEST_CONSTEXPR_CXX20 bool test55() -{ - test_npos(S(""), 0, 0, SV(""), 0, 0); - test_npos(S(""), 0, 0, SV("abcde"), 0, -5); - test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 0, -10); - test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 1, -9); - test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 5, -5); - - return true; +TEST_CONSTEXPR_CXX20 bool test55() { + test_npos(S(""), 0, 0, SV(""), 0, 0); + test_npos(S(""), 0, 0, SV("abcde"), 0, -5); + test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 0, -10); + test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 1, -9); + test_npos(S("abcde"), 0, 0, SV("abcdefghij"), 5, -5); + + return true; } template TEST_CONSTEXPR_CXX20 bool test56() { - S s = "MNOP"; - SV sv = "CDEF"; + S s = "MNOP"; + SV sv = "CDEF"; char arr[] = "MNOP"; -// calls compare(pos, n1, const char *, 0) + // calls compare(pos, n1, const char *, 0) assert(s.compare(0, 4, "QRST", 0) > 0); -// calls compare(pos, n1, string("QRST"), 0, npos) + // calls compare(pos, n1, string("QRST"), 0, npos) assert(s.compare(0, 4, "QRST", 0, std::string::npos) < 0); -// calls compare(pos, n1, T, 0, npos) + // calls compare(pos, n1, T, 0, npos) assert(s.compare(0, 4, sv, 0) > 0); -// calls compare(pos, n1, T, 0, npos) + // calls compare(pos, n1, T, 0, npos) assert(s.compare(0, 4, sv, 0, std::string::npos) > 0); -// calls compare(pos, n1, const char *, 0) + // calls compare(pos, n1, const char *, 0) assert(s.compare(0, 4, arr, 0) > 0); -// calls compare(size, size, string(arr), 0, npos) + // calls compare(size, size, string(arr), 0, npos) assert(s.compare(0, 4, arr, 0, std::string::npos) == 0); return true; @@ -6100,8 +6037,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>, diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer.pass.cpp @@ -18,347 +18,337 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - const typename S::value_type* str, int x) -{ - if (pos1 <= s.size()) - assert(sign(s.compare(pos1, n1, str)) == sign(x)); +test(const S& s, typename S::size_type pos1, typename S::size_type n1, const typename S::value_type* str, int x) { + if (pos1 <= s.size()) + assert(sign(s.compare(pos1, n1, str)) == sign(x)); #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > s.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.compare(pos1, n1, str); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > s.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), 0, 0, "", 0); - test(S(""), 0, 0, "abcde", -5); - test(S(""), 0, 0, "abcdefghij", -10); - test(S(""), 0, 0, "abcdefghijklmnopqrst", -20); - test(S(""), 0, 1, "", 0); - test(S(""), 0, 1, "abcde", -5); - test(S(""), 0, 1, "abcdefghij", -10); - test(S(""), 0, 1, "abcdefghijklmnopqrst", -20); - test(S(""), 1, 0, "", 0); - test(S(""), 1, 0, "abcde", 0); - test(S(""), 1, 0, "abcdefghij", 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 0); - test(S("abcde"), 0, 0, "", 0); - test(S("abcde"), 0, 0, "abcde", -5); - test(S("abcde"), 0, 0, "abcdefghij", -10); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 0, 1, "", 1); - test(S("abcde"), 0, 1, "abcde", -4); - test(S("abcde"), 0, 1, "abcdefghij", -9); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", -19); - test(S("abcde"), 0, 2, "", 2); - test(S("abcde"), 0, 2, "abcde", -3); - test(S("abcde"), 0, 2, "abcdefghij", -8); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", -18); - test(S("abcde"), 0, 4, "", 4); - test(S("abcde"), 0, 4, "abcde", -1); - test(S("abcde"), 0, 4, "abcdefghij", -6); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", -16); - test(S("abcde"), 0, 5, "", 5); - test(S("abcde"), 0, 5, "abcde", 0); - test(S("abcde"), 0, 5, "abcdefghij", -5); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", -15); - test(S("abcde"), 0, 6, "", 5); - test(S("abcde"), 0, 6, "abcde", 0); - test(S("abcde"), 0, 6, "abcdefghij", -5); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", -15); - test(S("abcde"), 1, 0, "", 0); - test(S("abcde"), 1, 0, "abcde", -5); - test(S("abcde"), 1, 0, "abcdefghij", -10); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 1, 1, "", 1); - test(S("abcde"), 1, 1, "abcde", 1); - test(S("abcde"), 1, 1, "abcdefghij", 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 1, 2, "", 2); - test(S("abcde"), 1, 2, "abcde", 1); - test(S("abcde"), 1, 2, "abcdefghij", 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 1, 3, "", 3); - test(S("abcde"), 1, 3, "abcde", 1); - test(S("abcde"), 1, 3, "abcdefghij", 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 1, 4, "", 4); - test(S("abcde"), 1, 4, "abcde", 1); - test(S("abcde"), 1, 4, "abcdefghij", 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 1, 5, "", 4); - test(S("abcde"), 1, 5, "abcde", 1); - test(S("abcde"), 1, 5, "abcdefghij", 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1); - test(S("abcde"), 2, 0, "", 0); - test(S("abcde"), 2, 0, "abcde", -5); - test(S("abcde"), 2, 0, "abcdefghij", -10); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 2, 1, "", 1); - test(S("abcde"), 2, 1, "abcde", 2); - test(S("abcde"), 2, 1, "abcdefghij", 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 2); - test(S("abcde"), 2, 2, "", 2); - test(S("abcde"), 2, 2, "abcde", 2); - test(S("abcde"), 2, 2, "abcdefghij", 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 2); - test(S("abcde"), 2, 3, "", 3); - test(S("abcde"), 2, 3, "abcde", 2); - test(S("abcde"), 2, 3, "abcdefghij", 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 2); - test(S("abcde"), 2, 4, "", 3); - test(S("abcde"), 2, 4, "abcde", 2); - test(S("abcde"), 2, 4, "abcdefghij", 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 2); - test(S("abcde"), 4, 0, "", 0); - test(S("abcde"), 4, 0, "abcde", -5); - test(S("abcde"), 4, 0, "abcdefghij", -10); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 4, 1, "", 1); - test(S("abcde"), 4, 1, "abcde", 4); - test(S("abcde"), 4, 1, "abcdefghij", 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 4); - test(S("abcde"), 4, 2, "", 1); - test(S("abcde"), 4, 2, "abcde", 4); - test(S("abcde"), 4, 2, "abcdefghij", 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 4); - test(S("abcde"), 5, 0, "", 0); - test(S("abcde"), 5, 0, "abcde", -5); - test(S("abcde"), 5, 0, "abcdefghij", -10); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", -20); - test(S("abcde"), 5, 1, "", 0); - test(S("abcde"), 5, 1, "abcde", -5); - test(S("abcde"), 5, 1, "abcdefghij", -10); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", -20); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), 0, 0, "", 0); + test(S(""), 0, 0, "abcde", -5); + test(S(""), 0, 0, "abcdefghij", -10); + test(S(""), 0, 0, "abcdefghijklmnopqrst", -20); + test(S(""), 0, 1, "", 0); + test(S(""), 0, 1, "abcde", -5); + test(S(""), 0, 1, "abcdefghij", -10); + test(S(""), 0, 1, "abcdefghijklmnopqrst", -20); + test(S(""), 1, 0, "", 0); + test(S(""), 1, 0, "abcde", 0); + test(S(""), 1, 0, "abcdefghij", 0); + test(S(""), 1, 0, "abcdefghijklmnopqrst", 0); + test(S("abcde"), 0, 0, "", 0); + test(S("abcde"), 0, 0, "abcde", -5); + test(S("abcde"), 0, 0, "abcdefghij", -10); + test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", -20); + test(S("abcde"), 0, 1, "", 1); + test(S("abcde"), 0, 1, "abcde", -4); + test(S("abcde"), 0, 1, "abcdefghij", -9); + test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", -19); + test(S("abcde"), 0, 2, "", 2); + test(S("abcde"), 0, 2, "abcde", -3); + test(S("abcde"), 0, 2, "abcdefghij", -8); + test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", -18); + test(S("abcde"), 0, 4, "", 4); + test(S("abcde"), 0, 4, "abcde", -1); + test(S("abcde"), 0, 4, "abcdefghij", -6); + test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", -16); + test(S("abcde"), 0, 5, "", 5); + test(S("abcde"), 0, 5, "abcde", 0); + test(S("abcde"), 0, 5, "abcdefghij", -5); + test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", -15); + test(S("abcde"), 0, 6, "", 5); + test(S("abcde"), 0, 6, "abcde", 0); + test(S("abcde"), 0, 6, "abcdefghij", -5); + test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", -15); + test(S("abcde"), 1, 0, "", 0); + test(S("abcde"), 1, 0, "abcde", -5); + test(S("abcde"), 1, 0, "abcdefghij", -10); + test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", -20); + test(S("abcde"), 1, 1, "", 1); + test(S("abcde"), 1, 1, "abcde", 1); + test(S("abcde"), 1, 1, "abcdefghij", 1); + test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1); + test(S("abcde"), 1, 2, "", 2); + test(S("abcde"), 1, 2, "abcde", 1); + test(S("abcde"), 1, 2, "abcdefghij", 1); + test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1); + test(S("abcde"), 1, 3, "", 3); + test(S("abcde"), 1, 3, "abcde", 1); + test(S("abcde"), 1, 3, "abcdefghij", 1); + test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1); + test(S("abcde"), 1, 4, "", 4); + test(S("abcde"), 1, 4, "abcde", 1); + test(S("abcde"), 1, 4, "abcdefghij", 1); + test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1); + test(S("abcde"), 1, 5, "", 4); + test(S("abcde"), 1, 5, "abcde", 1); + test(S("abcde"), 1, 5, "abcdefghij", 1); + test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1); + test(S("abcde"), 2, 0, "", 0); + test(S("abcde"), 2, 0, "abcde", -5); + test(S("abcde"), 2, 0, "abcdefghij", -10); + test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", -20); + test(S("abcde"), 2, 1, "", 1); + test(S("abcde"), 2, 1, "abcde", 2); + test(S("abcde"), 2, 1, "abcdefghij", 2); + test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 2); + test(S("abcde"), 2, 2, "", 2); + test(S("abcde"), 2, 2, "abcde", 2); + test(S("abcde"), 2, 2, "abcdefghij", 2); + test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 2); + test(S("abcde"), 2, 3, "", 3); + test(S("abcde"), 2, 3, "abcde", 2); + test(S("abcde"), 2, 3, "abcdefghij", 2); + test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 2); + test(S("abcde"), 2, 4, "", 3); + test(S("abcde"), 2, 4, "abcde", 2); + test(S("abcde"), 2, 4, "abcdefghij", 2); + test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 2); + test(S("abcde"), 4, 0, "", 0); + test(S("abcde"), 4, 0, "abcde", -5); + test(S("abcde"), 4, 0, "abcdefghij", -10); + test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", -20); + test(S("abcde"), 4, 1, "", 1); + test(S("abcde"), 4, 1, "abcde", 4); + test(S("abcde"), 4, 1, "abcdefghij", 4); + test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 4); + test(S("abcde"), 4, 2, "", 1); + test(S("abcde"), 4, 2, "abcde", 4); + test(S("abcde"), 4, 2, "abcdefghij", 4); + test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 4); + test(S("abcde"), 5, 0, "", 0); + test(S("abcde"), 5, 0, "abcde", -5); + test(S("abcde"), 5, 0, "abcdefghij", -10); + test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", -20); + test(S("abcde"), 5, 1, "", 0); + test(S("abcde"), 5, 1, "abcde", -5); + test(S("abcde"), 5, 1, "abcdefghij", -10); + test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", -20); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("abcde"), 6, 0, "", 0); - test(S("abcde"), 6, 0, "abcde", 0); - test(S("abcde"), 6, 0, "abcdefghij", 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0); - test(S("abcdefghij"), 0, 0, "", 0); - test(S("abcdefghij"), 0, 0, "abcde", -5); - test(S("abcdefghij"), 0, 0, "abcdefghij", -10); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 0, 1, "", 1); - test(S("abcdefghij"), 0, 1, "abcde", -4); - test(S("abcdefghij"), 0, 1, "abcdefghij", -9); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", -19); - test(S("abcdefghij"), 0, 5, "", 5); - test(S("abcdefghij"), 0, 5, "abcde", 0); - test(S("abcdefghij"), 0, 5, "abcdefghij", -5); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", -15); - test(S("abcdefghij"), 0, 9, "", 9); - test(S("abcdefghij"), 0, 9, "abcde", 4); - test(S("abcdefghij"), 0, 9, "abcdefghij", -1); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", -11); - test(S("abcdefghij"), 0, 10, "", 10); - test(S("abcdefghij"), 0, 10, "abcde", 5); - test(S("abcdefghij"), 0, 10, "abcdefghij", 0); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", -10); - test(S("abcdefghij"), 0, 11, "", 10); - test(S("abcdefghij"), 0, 11, "abcde", 5); - test(S("abcdefghij"), 0, 11, "abcdefghij", 0); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", -10); - test(S("abcdefghij"), 1, 0, "", 0); - test(S("abcdefghij"), 1, 0, "abcde", -5); - test(S("abcdefghij"), 1, 0, "abcdefghij", -10); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 1, 1, "", 1); - test(S("abcdefghij"), 1, 1, "abcde", 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 1, 4, "", 4); - test(S("abcdefghij"), 1, 4, "abcde", 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 1, 8, "", 8); - test(S("abcdefghij"), 1, 8, "abcde", 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 1, 9, "", 9); - test(S("abcdefghij"), 1, 9, "abcde", 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 1, 10, "", 9); - test(S("abcdefghij"), 1, 10, "abcde", 1); - test(S("abcdefghij"), 1, 10, "abcdefghij", 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1); - test(S("abcdefghij"), 5, 0, "", 0); - test(S("abcdefghij"), 5, 0, "abcde", -5); - test(S("abcdefghij"), 5, 0, "abcdefghij", -10); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 5, 1, "", 1); - test(S("abcdefghij"), 5, 1, "abcde", 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 5, 2, "", 2); - test(S("abcdefghij"), 5, 2, "abcde", 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 5, 4, "", 4); - test(S("abcdefghij"), 5, 4, "abcde", 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 5, 5, "", 5); - test(S("abcdefghij"), 5, 5, "abcde", 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 5, 6, "", 5); - test(S("abcdefghij"), 5, 6, "abcde", 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 5); - test(S("abcdefghij"), 9, 0, "", 0); - test(S("abcdefghij"), 9, 0, "abcde", -5); - test(S("abcdefghij"), 9, 0, "abcdefghij", -10); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 9, 1, "", 1); - test(S("abcdefghij"), 9, 1, "abcde", 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 9); - test(S("abcdefghij"), 9, 2, "", 1); - test(S("abcdefghij"), 9, 2, "abcde", 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 9); - test(S("abcdefghij"), 10, 0, "", 0); - test(S("abcdefghij"), 10, 0, "abcde", -5); - test(S("abcdefghij"), 10, 0, "abcdefghij", -10); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 10, 1, "", 0); - test(S("abcdefghij"), 10, 1, "abcde", -5); - test(S("abcdefghij"), 10, 1, "abcdefghij", -10); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", -20); - test(S("abcdefghij"), 11, 0, "", 0); - test(S("abcdefghij"), 11, 0, "abcde", 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("abcde"), 6, 0, "", 0); + test(S("abcde"), 6, 0, "abcde", 0); + test(S("abcde"), 6, 0, "abcdefghij", 0); + test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0); + test(S("abcdefghij"), 0, 0, "", 0); + test(S("abcdefghij"), 0, 0, "abcde", -5); + test(S("abcdefghij"), 0, 0, "abcdefghij", -10); + test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghij"), 0, 1, "", 1); + test(S("abcdefghij"), 0, 1, "abcde", -4); + test(S("abcdefghij"), 0, 1, "abcdefghij", -9); + test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", -19); + test(S("abcdefghij"), 0, 5, "", 5); + test(S("abcdefghij"), 0, 5, "abcde", 0); + test(S("abcdefghij"), 0, 5, "abcdefghij", -5); + test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", -15); + test(S("abcdefghij"), 0, 9, "", 9); + test(S("abcdefghij"), 0, 9, "abcde", 4); + test(S("abcdefghij"), 0, 9, "abcdefghij", -1); + test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", -11); + test(S("abcdefghij"), 0, 10, "", 10); + test(S("abcdefghij"), 0, 10, "abcde", 5); + test(S("abcdefghij"), 0, 10, "abcdefghij", 0); + test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", -10); + test(S("abcdefghij"), 0, 11, "", 10); + test(S("abcdefghij"), 0, 11, "abcde", 5); + test(S("abcdefghij"), 0, 11, "abcdefghij", 0); + test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", -10); + test(S("abcdefghij"), 1, 0, "", 0); + test(S("abcdefghij"), 1, 0, "abcde", -5); + test(S("abcdefghij"), 1, 0, "abcdefghij", -10); + test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghij"), 1, 1, "", 1); + test(S("abcdefghij"), 1, 1, "abcde", 1); + test(S("abcdefghij"), 1, 1, "abcdefghij", 1); + test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1); + test(S("abcdefghij"), 1, 4, "", 4); + test(S("abcdefghij"), 1, 4, "abcde", 1); + test(S("abcdefghij"), 1, 4, "abcdefghij", 1); + test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1); + test(S("abcdefghij"), 1, 8, "", 8); + test(S("abcdefghij"), 1, 8, "abcde", 1); + test(S("abcdefghij"), 1, 8, "abcdefghij", 1); + test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1); + test(S("abcdefghij"), 1, 9, "", 9); + test(S("abcdefghij"), 1, 9, "abcde", 1); + test(S("abcdefghij"), 1, 9, "abcdefghij", 1); + test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1); + test(S("abcdefghij"), 1, 10, "", 9); + test(S("abcdefghij"), 1, 10, "abcde", 1); + test(S("abcdefghij"), 1, 10, "abcdefghij", 1); + test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1); + test(S("abcdefghij"), 5, 0, "", 0); + test(S("abcdefghij"), 5, 0, "abcde", -5); + test(S("abcdefghij"), 5, 0, "abcdefghij", -10); + test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghij"), 5, 1, "", 1); + test(S("abcdefghij"), 5, 1, "abcde", 5); + test(S("abcdefghij"), 5, 1, "abcdefghij", 5); + test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 5); + test(S("abcdefghij"), 5, 2, "", 2); + test(S("abcdefghij"), 5, 2, "abcde", 5); + test(S("abcdefghij"), 5, 2, "abcdefghij", 5); + test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 5); + test(S("abcdefghij"), 5, 4, "", 4); + test(S("abcdefghij"), 5, 4, "abcde", 5); + test(S("abcdefghij"), 5, 4, "abcdefghij", 5); + test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 5); + test(S("abcdefghij"), 5, 5, "", 5); + test(S("abcdefghij"), 5, 5, "abcde", 5); + test(S("abcdefghij"), 5, 5, "abcdefghij", 5); + test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 5); + test(S("abcdefghij"), 5, 6, "", 5); + test(S("abcdefghij"), 5, 6, "abcde", 5); + test(S("abcdefghij"), 5, 6, "abcdefghij", 5); + test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 5); + test(S("abcdefghij"), 9, 0, "", 0); + test(S("abcdefghij"), 9, 0, "abcde", -5); + test(S("abcdefghij"), 9, 0, "abcdefghij", -10); + test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghij"), 9, 1, "", 1); + test(S("abcdefghij"), 9, 1, "abcde", 9); + test(S("abcdefghij"), 9, 1, "abcdefghij", 9); + test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 9); + test(S("abcdefghij"), 9, 2, "", 1); + test(S("abcdefghij"), 9, 2, "abcde", 9); + test(S("abcdefghij"), 9, 2, "abcdefghij", 9); + test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 9); + test(S("abcdefghij"), 10, 0, "", 0); + test(S("abcdefghij"), 10, 0, "abcde", -5); + test(S("abcdefghij"), 10, 0, "abcdefghij", -10); + test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghij"), 10, 1, "", 0); + test(S("abcdefghij"), 10, 1, "abcde", -5); + test(S("abcdefghij"), 10, 1, "abcdefghij", -10); + test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", -20); + test(S("abcdefghij"), 11, 0, "", 0); + test(S("abcdefghij"), 11, 0, "abcde", 0); + test(S("abcdefghij"), 11, 0, "abcdefghij", 0); + test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 0, 1, "", 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", -4); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", -9); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", -19); - test(S("abcdefghijklmnopqrst"), 0, 10, "", 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", -10); - test(S("abcdefghijklmnopqrst"), 0, 19, "", 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 14); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", -1); - test(S("abcdefghijklmnopqrst"), 0, 20, "", 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 15); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0); - test(S("abcdefghijklmnopqrst"), 0, 21, "", 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 15); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 1, 1, "", 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "", 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "", 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "", 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "", 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1); - test(S("abcdefghijklmnopqrst"), 10, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 10, 1, "", 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "", 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "", 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "", 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "", 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10); - test(S("abcdefghijklmnopqrst"), 19, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 19, 1, "", 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "", 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19); - test(S("abcdefghijklmnopqrst"), 20, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 20, 1, "", 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", -5); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", -10); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", -20); - test(S("abcdefghijklmnopqrst"), 21, 0, "", 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("abcdefghijklmnopqrst"), 0, 0, "", 0); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", -5); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", -10); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghijklmnopqrst"), 0, 1, "", 1); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", -4); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", -9); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", -19); + test(S("abcdefghijklmnopqrst"), 0, 10, "", 10); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", -10); + test(S("abcdefghijklmnopqrst"), 0, 19, "", 19); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 14); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", -1); + test(S("abcdefghijklmnopqrst"), 0, 20, "", 20); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 15); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0); + test(S("abcdefghijklmnopqrst"), 0, 21, "", 20); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 15); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0); + test(S("abcdefghijklmnopqrst"), 1, 0, "", 0); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", -5); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", -10); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghijklmnopqrst"), 1, 1, "", 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "", 9); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "", 18); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "", 19); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "", 19); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1); + test(S("abcdefghijklmnopqrst"), 10, 0, "", 0); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", -5); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", -10); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghijklmnopqrst"), 10, 1, "", 1); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "", 5); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "", 9); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "", 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "", 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10); + test(S("abcdefghijklmnopqrst"), 19, 0, "", 0); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", -5); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", -10); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghijklmnopqrst"), 19, 1, "", 1); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "", 1); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19); + test(S("abcdefghijklmnopqrst"), 20, 0, "", 0); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", -5); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", -10); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", -20); + test(S("abcdefghijklmnopqrst"), 20, 1, "", 0); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", -5); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", -10); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", -20); + test(S("abcdefghijklmnopqrst"), 21, 0, "", 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -380,8 +370,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_pointer_size.pass.cpp @@ -18,1304 +18,1290 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::size_type pos, typename S::size_type n1, - const typename S::value_type* str, typename S::size_type n2, int x) -{ - if (pos <= s.size()) - assert(sign(s.compare(pos, n1, str, n2)) == sign(x)); +test(const S& s, + typename S::size_type pos, + typename S::size_type n1, + const typename S::value_type* str, + typename S::size_type n2, + int x) { + if (pos <= s.size()) + assert(sign(s.compare(pos, n1, str, n2)) == sign(x)); #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos, n1, str, n2); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > s.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.compare(pos, n1, str, n2); + assert(false); + } catch (std::out_of_range&) { + assert(pos > s.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, "", 0, 0); - test(S(""), 0, 0, "abcde", 0, 0); - test(S(""), 0, 0, "abcde", 1, -1); - test(S(""), 0, 0, "abcde", 2, -2); - test(S(""), 0, 0, "abcde", 4, -4); - test(S(""), 0, 0, "abcde", 5, -5); - test(S(""), 0, 0, "abcdefghij", 0, 0); - test(S(""), 0, 0, "abcdefghij", 1, -1); - test(S(""), 0, 0, "abcdefghij", 5, -5); - test(S(""), 0, 0, "abcdefghij", 9, -9); - test(S(""), 0, 0, "abcdefghij", 10, -10); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 0, 0); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 1, -1); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 10, -10); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 19, -19); - test(S(""), 0, 0, "abcdefghijklmnopqrst", 20, -20); - test(S(""), 0, 1, "", 0, 0); - test(S(""), 0, 1, "abcde", 0, 0); - test(S(""), 0, 1, "abcde", 1, -1); - test(S(""), 0, 1, "abcde", 2, -2); - test(S(""), 0, 1, "abcde", 4, -4); - test(S(""), 0, 1, "abcde", 5, -5); - test(S(""), 0, 1, "abcdefghij", 0, 0); - test(S(""), 0, 1, "abcdefghij", 1, -1); - test(S(""), 0, 1, "abcdefghij", 5, -5); - test(S(""), 0, 1, "abcdefghij", 9, -9); - test(S(""), 0, 1, "abcdefghij", 10, -10); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 0, 0); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 1, -1); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 10, -10); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 19, -19); - test(S(""), 0, 1, "abcdefghijklmnopqrst", 20, -20); - test(S(""), 1, 0, "", 0, 0); - test(S(""), 1, 0, "abcde", 0, 0); - test(S(""), 1, 0, "abcde", 1, 0); - test(S(""), 1, 0, "abcde", 2, 0); - test(S(""), 1, 0, "abcde", 4, 0); - test(S(""), 1, 0, "abcde", 5, 0); - test(S(""), 1, 0, "abcdefghij", 0, 0); - test(S(""), 1, 0, "abcdefghij", 1, 0); - test(S(""), 1, 0, "abcdefghij", 5, 0); - test(S(""), 1, 0, "abcdefghij", 9, 0); - test(S(""), 1, 0, "abcdefghij", 10, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 0, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 1, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 10, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 19, 0); - test(S(""), 1, 0, "abcdefghijklmnopqrst", 20, 0); - test(S("abcde"), 0, 0, "", 0, 0); - test(S("abcde"), 0, 0, "abcde", 0, 0); - test(S("abcde"), 0, 0, "abcde", 1, -1); - test(S("abcde"), 0, 0, "abcde", 2, -2); - test(S("abcde"), 0, 0, "abcde", 4, -4); - test(S("abcde"), 0, 0, "abcde", 5, -5); - test(S("abcde"), 0, 0, "abcdefghij", 0, 0); - test(S("abcde"), 0, 0, "abcdefghij", 1, -1); - test(S("abcde"), 0, 0, "abcdefghij", 5, -5); - test(S("abcde"), 0, 0, "abcdefghij", 9, -9); - test(S("abcde"), 0, 0, "abcdefghij", 10, -10); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 0, 1, "", 0, 1); - test(S("abcde"), 0, 1, "abcde", 0, 1); - test(S("abcde"), 0, 1, "abcde", 1, 0); - test(S("abcde"), 0, 1, "abcde", 2, -1); - test(S("abcde"), 0, 1, "abcde", 4, -3); - test(S("abcde"), 0, 1, "abcde", 5, -4); - test(S("abcde"), 0, 1, "abcdefghij", 0, 1); - test(S("abcde"), 0, 1, "abcdefghij", 1, 0); - test(S("abcde"), 0, 1, "abcdefghij", 5, -4); - test(S("abcde"), 0, 1, "abcdefghij", 9, -8); - test(S("abcde"), 0, 1, "abcdefghij", 10, -9); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 1, 0); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 10, -9); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 19, -18); - test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 20, -19); - test(S("abcde"), 0, 2, "", 0, 2); - test(S("abcde"), 0, 2, "abcde", 0, 2); - test(S("abcde"), 0, 2, "abcde", 1, 1); - test(S("abcde"), 0, 2, "abcde", 2, 0); - test(S("abcde"), 0, 2, "abcde", 4, -2); - test(S("abcde"), 0, 2, "abcde", 5, -3); - test(S("abcde"), 0, 2, "abcdefghij", 0, 2); - test(S("abcde"), 0, 2, "abcdefghij", 1, 1); - test(S("abcde"), 0, 2, "abcdefghij", 5, -3); - test(S("abcde"), 0, 2, "abcdefghij", 9, -7); - test(S("abcde"), 0, 2, "abcdefghij", 10, -8); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 0, 2); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 10, -8); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 19, -17); - test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 20, -18); - test(S("abcde"), 0, 4, "", 0, 4); - test(S("abcde"), 0, 4, "abcde", 0, 4); - test(S("abcde"), 0, 4, "abcde", 1, 3); - test(S("abcde"), 0, 4, "abcde", 2, 2); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, "", 0, 0); + test(S(""), 0, 0, "abcde", 0, 0); + test(S(""), 0, 0, "abcde", 1, -1); + test(S(""), 0, 0, "abcde", 2, -2); + test(S(""), 0, 0, "abcde", 4, -4); + test(S(""), 0, 0, "abcde", 5, -5); + test(S(""), 0, 0, "abcdefghij", 0, 0); + test(S(""), 0, 0, "abcdefghij", 1, -1); + test(S(""), 0, 0, "abcdefghij", 5, -5); + test(S(""), 0, 0, "abcdefghij", 9, -9); + test(S(""), 0, 0, "abcdefghij", 10, -10); + test(S(""), 0, 0, "abcdefghijklmnopqrst", 0, 0); + test(S(""), 0, 0, "abcdefghijklmnopqrst", 1, -1); + test(S(""), 0, 0, "abcdefghijklmnopqrst", 10, -10); + test(S(""), 0, 0, "abcdefghijklmnopqrst", 19, -19); + test(S(""), 0, 0, "abcdefghijklmnopqrst", 20, -20); + test(S(""), 0, 1, "", 0, 0); + test(S(""), 0, 1, "abcde", 0, 0); + test(S(""), 0, 1, "abcde", 1, -1); + test(S(""), 0, 1, "abcde", 2, -2); + test(S(""), 0, 1, "abcde", 4, -4); + test(S(""), 0, 1, "abcde", 5, -5); + test(S(""), 0, 1, "abcdefghij", 0, 0); + test(S(""), 0, 1, "abcdefghij", 1, -1); + test(S(""), 0, 1, "abcdefghij", 5, -5); + test(S(""), 0, 1, "abcdefghij", 9, -9); + test(S(""), 0, 1, "abcdefghij", 10, -10); + test(S(""), 0, 1, "abcdefghijklmnopqrst", 0, 0); + test(S(""), 0, 1, "abcdefghijklmnopqrst", 1, -1); + test(S(""), 0, 1, "abcdefghijklmnopqrst", 10, -10); + test(S(""), 0, 1, "abcdefghijklmnopqrst", 19, -19); + test(S(""), 0, 1, "abcdefghijklmnopqrst", 20, -20); + test(S(""), 1, 0, "", 0, 0); + test(S(""), 1, 0, "abcde", 0, 0); + test(S(""), 1, 0, "abcde", 1, 0); + test(S(""), 1, 0, "abcde", 2, 0); + test(S(""), 1, 0, "abcde", 4, 0); + test(S(""), 1, 0, "abcde", 5, 0); + test(S(""), 1, 0, "abcdefghij", 0, 0); + test(S(""), 1, 0, "abcdefghij", 1, 0); + test(S(""), 1, 0, "abcdefghij", 5, 0); + test(S(""), 1, 0, "abcdefghij", 9, 0); + test(S(""), 1, 0, "abcdefghij", 10, 0); + test(S(""), 1, 0, "abcdefghijklmnopqrst", 0, 0); + test(S(""), 1, 0, "abcdefghijklmnopqrst", 1, 0); + test(S(""), 1, 0, "abcdefghijklmnopqrst", 10, 0); + test(S(""), 1, 0, "abcdefghijklmnopqrst", 19, 0); + test(S(""), 1, 0, "abcdefghijklmnopqrst", 20, 0); + test(S("abcde"), 0, 0, "", 0, 0); + test(S("abcde"), 0, 0, "abcde", 0, 0); + test(S("abcde"), 0, 0, "abcde", 1, -1); + test(S("abcde"), 0, 0, "abcde", 2, -2); + test(S("abcde"), 0, 0, "abcde", 4, -4); + test(S("abcde"), 0, 0, "abcde", 5, -5); + test(S("abcde"), 0, 0, "abcdefghij", 0, 0); + test(S("abcde"), 0, 0, "abcdefghij", 1, -1); + test(S("abcde"), 0, 0, "abcdefghij", 5, -5); + test(S("abcde"), 0, 0, "abcdefghij", 9, -9); + test(S("abcde"), 0, 0, "abcdefghij", 10, -10); + test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcde"), 0, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcde"), 0, 1, "", 0, 1); + test(S("abcde"), 0, 1, "abcde", 0, 1); + test(S("abcde"), 0, 1, "abcde", 1, 0); + test(S("abcde"), 0, 1, "abcde", 2, -1); + test(S("abcde"), 0, 1, "abcde", 4, -3); + test(S("abcde"), 0, 1, "abcde", 5, -4); + test(S("abcde"), 0, 1, "abcdefghij", 0, 1); + test(S("abcde"), 0, 1, "abcdefghij", 1, 0); + test(S("abcde"), 0, 1, "abcdefghij", 5, -4); + test(S("abcde"), 0, 1, "abcdefghij", 9, -8); + test(S("abcde"), 0, 1, "abcdefghij", 10, -9); + test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 1, 0); + test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 10, -9); + test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 19, -18); + test(S("abcde"), 0, 1, "abcdefghijklmnopqrst", 20, -19); + test(S("abcde"), 0, 2, "", 0, 2); + test(S("abcde"), 0, 2, "abcde", 0, 2); + test(S("abcde"), 0, 2, "abcde", 1, 1); + test(S("abcde"), 0, 2, "abcde", 2, 0); + test(S("abcde"), 0, 2, "abcde", 4, -2); + test(S("abcde"), 0, 2, "abcde", 5, -3); + test(S("abcde"), 0, 2, "abcdefghij", 0, 2); + test(S("abcde"), 0, 2, "abcdefghij", 1, 1); + test(S("abcde"), 0, 2, "abcdefghij", 5, -3); + test(S("abcde"), 0, 2, "abcdefghij", 9, -7); + test(S("abcde"), 0, 2, "abcdefghij", 10, -8); + test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 0, 2); + test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 1, 1); + test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 10, -8); + test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 19, -17); + test(S("abcde"), 0, 2, "abcdefghijklmnopqrst", 20, -18); + test(S("abcde"), 0, 4, "", 0, 4); + test(S("abcde"), 0, 4, "abcde", 0, 4); + test(S("abcde"), 0, 4, "abcde", 1, 3); + test(S("abcde"), 0, 4, "abcde", 2, 2); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S("abcde"), 0, 4, "abcde", 4, 0); - test(S("abcde"), 0, 4, "abcde", 5, -1); - test(S("abcde"), 0, 4, "abcdefghij", 0, 4); - test(S("abcde"), 0, 4, "abcdefghij", 1, 3); - test(S("abcde"), 0, 4, "abcdefghij", 5, -1); - test(S("abcde"), 0, 4, "abcdefghij", 9, -5); - test(S("abcde"), 0, 4, "abcdefghij", 10, -6); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 0, 4); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 1, 3); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 10, -6); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 19, -15); - test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 20, -16); - test(S("abcde"), 0, 5, "", 0, 5); - test(S("abcde"), 0, 5, "abcde", 0, 5); - test(S("abcde"), 0, 5, "abcde", 1, 4); - test(S("abcde"), 0, 5, "abcde", 2, 3); - test(S("abcde"), 0, 5, "abcde", 4, 1); - test(S("abcde"), 0, 5, "abcde", 5, 0); - test(S("abcde"), 0, 5, "abcdefghij", 0, 5); - test(S("abcde"), 0, 5, "abcdefghij", 1, 4); - test(S("abcde"), 0, 5, "abcdefghij", 5, 0); - test(S("abcde"), 0, 5, "abcdefghij", 9, -4); - test(S("abcde"), 0, 5, "abcdefghij", 10, -5); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 0, 5); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 1, 4); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 10, -5); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 19, -14); - test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 20, -15); - test(S("abcde"), 0, 6, "", 0, 5); - test(S("abcde"), 0, 6, "abcde", 0, 5); - test(S("abcde"), 0, 6, "abcde", 1, 4); - test(S("abcde"), 0, 6, "abcde", 2, 3); - test(S("abcde"), 0, 6, "abcde", 4, 1); - test(S("abcde"), 0, 6, "abcde", 5, 0); - test(S("abcde"), 0, 6, "abcdefghij", 0, 5); - test(S("abcde"), 0, 6, "abcdefghij", 1, 4); - test(S("abcde"), 0, 6, "abcdefghij", 5, 0); - test(S("abcde"), 0, 6, "abcdefghij", 9, -4); - test(S("abcde"), 0, 6, "abcdefghij", 10, -5); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 0, 5); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 1, 4); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 10, -5); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 19, -14); - test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 20, -15); - test(S("abcde"), 1, 0, "", 0, 0); - test(S("abcde"), 1, 0, "abcde", 0, 0); - test(S("abcde"), 1, 0, "abcde", 1, -1); - test(S("abcde"), 1, 0, "abcde", 2, -2); - test(S("abcde"), 1, 0, "abcde", 4, -4); - test(S("abcde"), 1, 0, "abcde", 5, -5); - test(S("abcde"), 1, 0, "abcdefghij", 0, 0); - test(S("abcde"), 1, 0, "abcdefghij", 1, -1); - test(S("abcde"), 1, 0, "abcdefghij", 5, -5); - test(S("abcde"), 1, 0, "abcdefghij", 9, -9); - test(S("abcde"), 1, 0, "abcdefghij", 10, -10); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 1, 1, "", 0, 1); - test(S("abcde"), 1, 1, "abcde", 0, 1); - test(S("abcde"), 1, 1, "abcde", 1, 1); - test(S("abcde"), 1, 1, "abcde", 2, 1); - test(S("abcde"), 1, 1, "abcde", 4, 1); - test(S("abcde"), 1, 1, "abcde", 5, 1); - test(S("abcde"), 1, 1, "abcdefghij", 0, 1); - test(S("abcde"), 1, 1, "abcdefghij", 1, 1); - test(S("abcde"), 1, 1, "abcdefghij", 5, 1); - test(S("abcde"), 1, 1, "abcdefghij", 9, 1); - test(S("abcde"), 1, 1, "abcdefghij", 10, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 1, 2, "", 0, 2); - test(S("abcde"), 1, 2, "abcde", 0, 2); - test(S("abcde"), 1, 2, "abcde", 1, 1); - test(S("abcde"), 1, 2, "abcde", 2, 1); - test(S("abcde"), 1, 2, "abcde", 4, 1); - test(S("abcde"), 1, 2, "abcde", 5, 1); - test(S("abcde"), 1, 2, "abcdefghij", 0, 2); - test(S("abcde"), 1, 2, "abcdefghij", 1, 1); - test(S("abcde"), 1, 2, "abcdefghij", 5, 1); - test(S("abcde"), 1, 2, "abcdefghij", 9, 1); - test(S("abcde"), 1, 2, "abcdefghij", 10, 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 0, 2); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 1, 3, "", 0, 3); - test(S("abcde"), 1, 3, "abcde", 0, 3); - test(S("abcde"), 1, 3, "abcde", 1, 1); - test(S("abcde"), 1, 3, "abcde", 2, 1); - test(S("abcde"), 1, 3, "abcde", 4, 1); - test(S("abcde"), 1, 3, "abcde", 5, 1); - test(S("abcde"), 1, 3, "abcdefghij", 0, 3); - test(S("abcde"), 1, 3, "abcdefghij", 1, 1); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S("abcde"), 0, 4, "abcde", 4, 0); + test(S("abcde"), 0, 4, "abcde", 5, -1); + test(S("abcde"), 0, 4, "abcdefghij", 0, 4); + test(S("abcde"), 0, 4, "abcdefghij", 1, 3); + test(S("abcde"), 0, 4, "abcdefghij", 5, -1); + test(S("abcde"), 0, 4, "abcdefghij", 9, -5); + test(S("abcde"), 0, 4, "abcdefghij", 10, -6); + test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 0, 4); + test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 1, 3); + test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 10, -6); + test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 19, -15); + test(S("abcde"), 0, 4, "abcdefghijklmnopqrst", 20, -16); + test(S("abcde"), 0, 5, "", 0, 5); + test(S("abcde"), 0, 5, "abcde", 0, 5); + test(S("abcde"), 0, 5, "abcde", 1, 4); + test(S("abcde"), 0, 5, "abcde", 2, 3); + test(S("abcde"), 0, 5, "abcde", 4, 1); + test(S("abcde"), 0, 5, "abcde", 5, 0); + test(S("abcde"), 0, 5, "abcdefghij", 0, 5); + test(S("abcde"), 0, 5, "abcdefghij", 1, 4); + test(S("abcde"), 0, 5, "abcdefghij", 5, 0); + test(S("abcde"), 0, 5, "abcdefghij", 9, -4); + test(S("abcde"), 0, 5, "abcdefghij", 10, -5); + test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 0, 5); + test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 1, 4); + test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 10, -5); + test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 19, -14); + test(S("abcde"), 0, 5, "abcdefghijklmnopqrst", 20, -15); + test(S("abcde"), 0, 6, "", 0, 5); + test(S("abcde"), 0, 6, "abcde", 0, 5); + test(S("abcde"), 0, 6, "abcde", 1, 4); + test(S("abcde"), 0, 6, "abcde", 2, 3); + test(S("abcde"), 0, 6, "abcde", 4, 1); + test(S("abcde"), 0, 6, "abcde", 5, 0); + test(S("abcde"), 0, 6, "abcdefghij", 0, 5); + test(S("abcde"), 0, 6, "abcdefghij", 1, 4); + test(S("abcde"), 0, 6, "abcdefghij", 5, 0); + test(S("abcde"), 0, 6, "abcdefghij", 9, -4); + test(S("abcde"), 0, 6, "abcdefghij", 10, -5); + test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 0, 5); + test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 1, 4); + test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 10, -5); + test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 19, -14); + test(S("abcde"), 0, 6, "abcdefghijklmnopqrst", 20, -15); + test(S("abcde"), 1, 0, "", 0, 0); + test(S("abcde"), 1, 0, "abcde", 0, 0); + test(S("abcde"), 1, 0, "abcde", 1, -1); + test(S("abcde"), 1, 0, "abcde", 2, -2); + test(S("abcde"), 1, 0, "abcde", 4, -4); + test(S("abcde"), 1, 0, "abcde", 5, -5); + test(S("abcde"), 1, 0, "abcdefghij", 0, 0); + test(S("abcde"), 1, 0, "abcdefghij", 1, -1); + test(S("abcde"), 1, 0, "abcdefghij", 5, -5); + test(S("abcde"), 1, 0, "abcdefghij", 9, -9); + test(S("abcde"), 1, 0, "abcdefghij", 10, -10); + test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcde"), 1, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcde"), 1, 1, "", 0, 1); + test(S("abcde"), 1, 1, "abcde", 0, 1); + test(S("abcde"), 1, 1, "abcde", 1, 1); + test(S("abcde"), 1, 1, "abcde", 2, 1); + test(S("abcde"), 1, 1, "abcde", 4, 1); + test(S("abcde"), 1, 1, "abcde", 5, 1); + test(S("abcde"), 1, 1, "abcdefghij", 0, 1); + test(S("abcde"), 1, 1, "abcdefghij", 1, 1); + test(S("abcde"), 1, 1, "abcdefghij", 5, 1); + test(S("abcde"), 1, 1, "abcdefghij", 9, 1); + test(S("abcde"), 1, 1, "abcdefghij", 10, 1); + test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 1, 1); + test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 10, 1); + test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 19, 1); + test(S("abcde"), 1, 1, "abcdefghijklmnopqrst", 20, 1); + test(S("abcde"), 1, 2, "", 0, 2); + test(S("abcde"), 1, 2, "abcde", 0, 2); + test(S("abcde"), 1, 2, "abcde", 1, 1); + test(S("abcde"), 1, 2, "abcde", 2, 1); + test(S("abcde"), 1, 2, "abcde", 4, 1); + test(S("abcde"), 1, 2, "abcde", 5, 1); + test(S("abcde"), 1, 2, "abcdefghij", 0, 2); + test(S("abcde"), 1, 2, "abcdefghij", 1, 1); + test(S("abcde"), 1, 2, "abcdefghij", 5, 1); + test(S("abcde"), 1, 2, "abcdefghij", 9, 1); + test(S("abcde"), 1, 2, "abcdefghij", 10, 1); + test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 0, 2); + test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 1, 1); + test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 10, 1); + test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 19, 1); + test(S("abcde"), 1, 2, "abcdefghijklmnopqrst", 20, 1); + test(S("abcde"), 1, 3, "", 0, 3); + test(S("abcde"), 1, 3, "abcde", 0, 3); + test(S("abcde"), 1, 3, "abcde", 1, 1); + test(S("abcde"), 1, 3, "abcde", 2, 1); + test(S("abcde"), 1, 3, "abcde", 4, 1); + test(S("abcde"), 1, 3, "abcde", 5, 1); + test(S("abcde"), 1, 3, "abcdefghij", 0, 3); + test(S("abcde"), 1, 3, "abcdefghij", 1, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S("abcde"), 1, 3, "abcdefghij", 5, 1); - test(S("abcde"), 1, 3, "abcdefghij", 9, 1); - test(S("abcde"), 1, 3, "abcdefghij", 10, 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 0, 3); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 1, 4, "", 0, 4); - test(S("abcde"), 1, 4, "abcde", 0, 4); - test(S("abcde"), 1, 4, "abcde", 1, 1); - test(S("abcde"), 1, 4, "abcde", 2, 1); - test(S("abcde"), 1, 4, "abcde", 4, 1); - test(S("abcde"), 1, 4, "abcde", 5, 1); - test(S("abcde"), 1, 4, "abcdefghij", 0, 4); - test(S("abcde"), 1, 4, "abcdefghij", 1, 1); - test(S("abcde"), 1, 4, "abcdefghij", 5, 1); - test(S("abcde"), 1, 4, "abcdefghij", 9, 1); - test(S("abcde"), 1, 4, "abcdefghij", 10, 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 0, 4); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 1, 5, "", 0, 4); - test(S("abcde"), 1, 5, "abcde", 0, 4); - test(S("abcde"), 1, 5, "abcde", 1, 1); - test(S("abcde"), 1, 5, "abcde", 2, 1); - test(S("abcde"), 1, 5, "abcde", 4, 1); - test(S("abcde"), 1, 5, "abcde", 5, 1); - test(S("abcde"), 1, 5, "abcdefghij", 0, 4); - test(S("abcde"), 1, 5, "abcdefghij", 1, 1); - test(S("abcde"), 1, 5, "abcdefghij", 5, 1); - test(S("abcde"), 1, 5, "abcdefghij", 9, 1); - test(S("abcde"), 1, 5, "abcdefghij", 10, 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 0, 4); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1, 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 10, 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 19, 1); - test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 20, 1); - test(S("abcde"), 2, 0, "", 0, 0); - test(S("abcde"), 2, 0, "abcde", 0, 0); - test(S("abcde"), 2, 0, "abcde", 1, -1); - test(S("abcde"), 2, 0, "abcde", 2, -2); - test(S("abcde"), 2, 0, "abcde", 4, -4); - test(S("abcde"), 2, 0, "abcde", 5, -5); - test(S("abcde"), 2, 0, "abcdefghij", 0, 0); - test(S("abcde"), 2, 0, "abcdefghij", 1, -1); - test(S("abcde"), 2, 0, "abcdefghij", 5, -5); - test(S("abcde"), 2, 0, "abcdefghij", 9, -9); - test(S("abcde"), 2, 0, "abcdefghij", 10, -10); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 2, 1, "", 0, 1); - test(S("abcde"), 2, 1, "abcde", 0, 1); - test(S("abcde"), 2, 1, "abcde", 1, 2); - test(S("abcde"), 2, 1, "abcde", 2, 2); - test(S("abcde"), 2, 1, "abcde", 4, 2); - test(S("abcde"), 2, 1, "abcde", 5, 2); - test(S("abcde"), 2, 1, "abcdefghij", 0, 1); - test(S("abcde"), 2, 1, "abcdefghij", 1, 2); - test(S("abcde"), 2, 1, "abcdefghij", 5, 2); - test(S("abcde"), 2, 1, "abcdefghij", 9, 2); - test(S("abcde"), 2, 1, "abcdefghij", 10, 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 1, 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 10, 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 19, 2); - test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 20, 2); - test(S("abcde"), 2, 2, "", 0, 2); - test(S("abcde"), 2, 2, "abcde", 0, 2); - test(S("abcde"), 2, 2, "abcde", 1, 2); - test(S("abcde"), 2, 2, "abcde", 2, 2); - test(S("abcde"), 2, 2, "abcde", 4, 2); - test(S("abcde"), 2, 2, "abcde", 5, 2); - test(S("abcde"), 2, 2, "abcdefghij", 0, 2); - test(S("abcde"), 2, 2, "abcdefghij", 1, 2); - test(S("abcde"), 2, 2, "abcdefghij", 5, 2); - test(S("abcde"), 2, 2, "abcdefghij", 9, 2); - test(S("abcde"), 2, 2, "abcdefghij", 10, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 0, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 1, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 10, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 19, 2); - test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 20, 2); - test(S("abcde"), 2, 3, "", 0, 3); - test(S("abcde"), 2, 3, "abcde", 0, 3); - test(S("abcde"), 2, 3, "abcde", 1, 2); - test(S("abcde"), 2, 3, "abcde", 2, 2); - test(S("abcde"), 2, 3, "abcde", 4, 2); - test(S("abcde"), 2, 3, "abcde", 5, 2); - test(S("abcde"), 2, 3, "abcdefghij", 0, 3); - test(S("abcde"), 2, 3, "abcdefghij", 1, 2); - test(S("abcde"), 2, 3, "abcdefghij", 5, 2); - test(S("abcde"), 2, 3, "abcdefghij", 9, 2); - test(S("abcde"), 2, 3, "abcdefghij", 10, 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 0, 3); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S("abcde"), 1, 3, "abcdefghij", 5, 1); + test(S("abcde"), 1, 3, "abcdefghij", 9, 1); + test(S("abcde"), 1, 3, "abcdefghij", 10, 1); + test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 0, 3); + test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 1, 1); + test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 10, 1); + test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 19, 1); + test(S("abcde"), 1, 3, "abcdefghijklmnopqrst", 20, 1); + test(S("abcde"), 1, 4, "", 0, 4); + test(S("abcde"), 1, 4, "abcde", 0, 4); + test(S("abcde"), 1, 4, "abcde", 1, 1); + test(S("abcde"), 1, 4, "abcde", 2, 1); + test(S("abcde"), 1, 4, "abcde", 4, 1); + test(S("abcde"), 1, 4, "abcde", 5, 1); + test(S("abcde"), 1, 4, "abcdefghij", 0, 4); + test(S("abcde"), 1, 4, "abcdefghij", 1, 1); + test(S("abcde"), 1, 4, "abcdefghij", 5, 1); + test(S("abcde"), 1, 4, "abcdefghij", 9, 1); + test(S("abcde"), 1, 4, "abcdefghij", 10, 1); + test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 0, 4); + test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 1, 1); + test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 10, 1); + test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 19, 1); + test(S("abcde"), 1, 4, "abcdefghijklmnopqrst", 20, 1); + test(S("abcde"), 1, 5, "", 0, 4); + test(S("abcde"), 1, 5, "abcde", 0, 4); + test(S("abcde"), 1, 5, "abcde", 1, 1); + test(S("abcde"), 1, 5, "abcde", 2, 1); + test(S("abcde"), 1, 5, "abcde", 4, 1); + test(S("abcde"), 1, 5, "abcde", 5, 1); + test(S("abcde"), 1, 5, "abcdefghij", 0, 4); + test(S("abcde"), 1, 5, "abcdefghij", 1, 1); + test(S("abcde"), 1, 5, "abcdefghij", 5, 1); + test(S("abcde"), 1, 5, "abcdefghij", 9, 1); + test(S("abcde"), 1, 5, "abcdefghij", 10, 1); + test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 0, 4); + test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 1, 1); + test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 10, 1); + test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 19, 1); + test(S("abcde"), 1, 5, "abcdefghijklmnopqrst", 20, 1); + test(S("abcde"), 2, 0, "", 0, 0); + test(S("abcde"), 2, 0, "abcde", 0, 0); + test(S("abcde"), 2, 0, "abcde", 1, -1); + test(S("abcde"), 2, 0, "abcde", 2, -2); + test(S("abcde"), 2, 0, "abcde", 4, -4); + test(S("abcde"), 2, 0, "abcde", 5, -5); + test(S("abcde"), 2, 0, "abcdefghij", 0, 0); + test(S("abcde"), 2, 0, "abcdefghij", 1, -1); + test(S("abcde"), 2, 0, "abcdefghij", 5, -5); + test(S("abcde"), 2, 0, "abcdefghij", 9, -9); + test(S("abcde"), 2, 0, "abcdefghij", 10, -10); + test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcde"), 2, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcde"), 2, 1, "", 0, 1); + test(S("abcde"), 2, 1, "abcde", 0, 1); + test(S("abcde"), 2, 1, "abcde", 1, 2); + test(S("abcde"), 2, 1, "abcde", 2, 2); + test(S("abcde"), 2, 1, "abcde", 4, 2); + test(S("abcde"), 2, 1, "abcde", 5, 2); + test(S("abcde"), 2, 1, "abcdefghij", 0, 1); + test(S("abcde"), 2, 1, "abcdefghij", 1, 2); + test(S("abcde"), 2, 1, "abcdefghij", 5, 2); + test(S("abcde"), 2, 1, "abcdefghij", 9, 2); + test(S("abcde"), 2, 1, "abcdefghij", 10, 2); + test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 1, 2); + test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 10, 2); + test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 19, 2); + test(S("abcde"), 2, 1, "abcdefghijklmnopqrst", 20, 2); + test(S("abcde"), 2, 2, "", 0, 2); + test(S("abcde"), 2, 2, "abcde", 0, 2); + test(S("abcde"), 2, 2, "abcde", 1, 2); + test(S("abcde"), 2, 2, "abcde", 2, 2); + test(S("abcde"), 2, 2, "abcde", 4, 2); + test(S("abcde"), 2, 2, "abcde", 5, 2); + test(S("abcde"), 2, 2, "abcdefghij", 0, 2); + test(S("abcde"), 2, 2, "abcdefghij", 1, 2); + test(S("abcde"), 2, 2, "abcdefghij", 5, 2); + test(S("abcde"), 2, 2, "abcdefghij", 9, 2); + test(S("abcde"), 2, 2, "abcdefghij", 10, 2); + test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 0, 2); + test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 1, 2); + test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 10, 2); + test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 19, 2); + test(S("abcde"), 2, 2, "abcdefghijklmnopqrst", 20, 2); + test(S("abcde"), 2, 3, "", 0, 3); + test(S("abcde"), 2, 3, "abcde", 0, 3); + test(S("abcde"), 2, 3, "abcde", 1, 2); + test(S("abcde"), 2, 3, "abcde", 2, 2); + test(S("abcde"), 2, 3, "abcde", 4, 2); + test(S("abcde"), 2, 3, "abcde", 5, 2); + test(S("abcde"), 2, 3, "abcdefghij", 0, 3); + test(S("abcde"), 2, 3, "abcdefghij", 1, 2); + test(S("abcde"), 2, 3, "abcdefghij", 5, 2); + test(S("abcde"), 2, 3, "abcdefghij", 9, 2); + test(S("abcde"), 2, 3, "abcdefghij", 10, 2); + test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 0, 3); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 1, 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 10, 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 19, 2); - test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 20, 2); - test(S("abcde"), 2, 4, "", 0, 3); - test(S("abcde"), 2, 4, "abcde", 0, 3); - test(S("abcde"), 2, 4, "abcde", 1, 2); - test(S("abcde"), 2, 4, "abcde", 2, 2); - test(S("abcde"), 2, 4, "abcde", 4, 2); - test(S("abcde"), 2, 4, "abcde", 5, 2); - test(S("abcde"), 2, 4, "abcdefghij", 0, 3); - test(S("abcde"), 2, 4, "abcdefghij", 1, 2); - test(S("abcde"), 2, 4, "abcdefghij", 5, 2); - test(S("abcde"), 2, 4, "abcdefghij", 9, 2); - test(S("abcde"), 2, 4, "abcdefghij", 10, 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 0, 3); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 1, 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 10, 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 19, 2); - test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 20, 2); - test(S("abcde"), 4, 0, "", 0, 0); - test(S("abcde"), 4, 0, "abcde", 0, 0); - test(S("abcde"), 4, 0, "abcde", 1, -1); - test(S("abcde"), 4, 0, "abcde", 2, -2); - test(S("abcde"), 4, 0, "abcde", 4, -4); - test(S("abcde"), 4, 0, "abcde", 5, -5); - test(S("abcde"), 4, 0, "abcdefghij", 0, 0); - test(S("abcde"), 4, 0, "abcdefghij", 1, -1); - test(S("abcde"), 4, 0, "abcdefghij", 5, -5); - test(S("abcde"), 4, 0, "abcdefghij", 9, -9); - test(S("abcde"), 4, 0, "abcdefghij", 10, -10); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 4, 1, "", 0, 1); - test(S("abcde"), 4, 1, "abcde", 0, 1); - test(S("abcde"), 4, 1, "abcde", 1, 4); - test(S("abcde"), 4, 1, "abcde", 2, 4); - test(S("abcde"), 4, 1, "abcde", 4, 4); - test(S("abcde"), 4, 1, "abcde", 5, 4); - test(S("abcde"), 4, 1, "abcdefghij", 0, 1); - test(S("abcde"), 4, 1, "abcdefghij", 1, 4); - test(S("abcde"), 4, 1, "abcdefghij", 5, 4); - test(S("abcde"), 4, 1, "abcdefghij", 9, 4); - test(S("abcde"), 4, 1, "abcdefghij", 10, 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 1, 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 10, 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 19, 4); - test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 20, 4); - test(S("abcde"), 4, 2, "", 0, 1); - test(S("abcde"), 4, 2, "abcde", 0, 1); - test(S("abcde"), 4, 2, "abcde", 1, 4); - test(S("abcde"), 4, 2, "abcde", 2, 4); - test(S("abcde"), 4, 2, "abcde", 4, 4); - test(S("abcde"), 4, 2, "abcde", 5, 4); - test(S("abcde"), 4, 2, "abcdefghij", 0, 1); - test(S("abcde"), 4, 2, "abcdefghij", 1, 4); - test(S("abcde"), 4, 2, "abcdefghij", 5, 4); - test(S("abcde"), 4, 2, "abcdefghij", 9, 4); - test(S("abcde"), 4, 2, "abcdefghij", 10, 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 0, 1); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 1, 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 10, 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 19, 4); - test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 20, 4); - test(S("abcde"), 5, 0, "", 0, 0); - test(S("abcde"), 5, 0, "abcde", 0, 0); - test(S("abcde"), 5, 0, "abcde", 1, -1); - test(S("abcde"), 5, 0, "abcde", 2, -2); - test(S("abcde"), 5, 0, "abcde", 4, -4); - test(S("abcde"), 5, 0, "abcde", 5, -5); - test(S("abcde"), 5, 0, "abcdefghij", 0, 0); - test(S("abcde"), 5, 0, "abcdefghij", 1, -1); - test(S("abcde"), 5, 0, "abcdefghij", 5, -5); - test(S("abcde"), 5, 0, "abcdefghij", 9, -9); - test(S("abcde"), 5, 0, "abcdefghij", 10, -10); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcde"), 5, 1, "", 0, 0); - test(S("abcde"), 5, 1, "abcde", 0, 0); - test(S("abcde"), 5, 1, "abcde", 1, -1); - test(S("abcde"), 5, 1, "abcde", 2, -2); - test(S("abcde"), 5, 1, "abcde", 4, -4); - test(S("abcde"), 5, 1, "abcde", 5, -5); - test(S("abcde"), 5, 1, "abcdefghij", 0, 0); - test(S("abcde"), 5, 1, "abcdefghij", 1, -1); - test(S("abcde"), 5, 1, "abcdefghij", 5, -5); - test(S("abcde"), 5, 1, "abcdefghij", 9, -9); - test(S("abcde"), 5, 1, "abcdefghij", 10, -10); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 1, -1); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 10, -10); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 19, -19); - test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 20, -20); +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 1, 2); + test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 10, 2); + test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 19, 2); + test(S("abcde"), 2, 3, "abcdefghijklmnopqrst", 20, 2); + test(S("abcde"), 2, 4, "", 0, 3); + test(S("abcde"), 2, 4, "abcde", 0, 3); + test(S("abcde"), 2, 4, "abcde", 1, 2); + test(S("abcde"), 2, 4, "abcde", 2, 2); + test(S("abcde"), 2, 4, "abcde", 4, 2); + test(S("abcde"), 2, 4, "abcde", 5, 2); + test(S("abcde"), 2, 4, "abcdefghij", 0, 3); + test(S("abcde"), 2, 4, "abcdefghij", 1, 2); + test(S("abcde"), 2, 4, "abcdefghij", 5, 2); + test(S("abcde"), 2, 4, "abcdefghij", 9, 2); + test(S("abcde"), 2, 4, "abcdefghij", 10, 2); + test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 0, 3); + test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 1, 2); + test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 10, 2); + test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 19, 2); + test(S("abcde"), 2, 4, "abcdefghijklmnopqrst", 20, 2); + test(S("abcde"), 4, 0, "", 0, 0); + test(S("abcde"), 4, 0, "abcde", 0, 0); + test(S("abcde"), 4, 0, "abcde", 1, -1); + test(S("abcde"), 4, 0, "abcde", 2, -2); + test(S("abcde"), 4, 0, "abcde", 4, -4); + test(S("abcde"), 4, 0, "abcde", 5, -5); + test(S("abcde"), 4, 0, "abcdefghij", 0, 0); + test(S("abcde"), 4, 0, "abcdefghij", 1, -1); + test(S("abcde"), 4, 0, "abcdefghij", 5, -5); + test(S("abcde"), 4, 0, "abcdefghij", 9, -9); + test(S("abcde"), 4, 0, "abcdefghij", 10, -10); + test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcde"), 4, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcde"), 4, 1, "", 0, 1); + test(S("abcde"), 4, 1, "abcde", 0, 1); + test(S("abcde"), 4, 1, "abcde", 1, 4); + test(S("abcde"), 4, 1, "abcde", 2, 4); + test(S("abcde"), 4, 1, "abcde", 4, 4); + test(S("abcde"), 4, 1, "abcde", 5, 4); + test(S("abcde"), 4, 1, "abcdefghij", 0, 1); + test(S("abcde"), 4, 1, "abcdefghij", 1, 4); + test(S("abcde"), 4, 1, "abcdefghij", 5, 4); + test(S("abcde"), 4, 1, "abcdefghij", 9, 4); + test(S("abcde"), 4, 1, "abcdefghij", 10, 4); + test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 1, 4); + test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 10, 4); + test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 19, 4); + test(S("abcde"), 4, 1, "abcdefghijklmnopqrst", 20, 4); + test(S("abcde"), 4, 2, "", 0, 1); + test(S("abcde"), 4, 2, "abcde", 0, 1); + test(S("abcde"), 4, 2, "abcde", 1, 4); + test(S("abcde"), 4, 2, "abcde", 2, 4); + test(S("abcde"), 4, 2, "abcde", 4, 4); + test(S("abcde"), 4, 2, "abcde", 5, 4); + test(S("abcde"), 4, 2, "abcdefghij", 0, 1); + test(S("abcde"), 4, 2, "abcdefghij", 1, 4); + test(S("abcde"), 4, 2, "abcdefghij", 5, 4); + test(S("abcde"), 4, 2, "abcdefghij", 9, 4); + test(S("abcde"), 4, 2, "abcdefghij", 10, 4); + test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 0, 1); + test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 1, 4); + test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 10, 4); + test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 19, 4); + test(S("abcde"), 4, 2, "abcdefghijklmnopqrst", 20, 4); + test(S("abcde"), 5, 0, "", 0, 0); + test(S("abcde"), 5, 0, "abcde", 0, 0); + test(S("abcde"), 5, 0, "abcde", 1, -1); + test(S("abcde"), 5, 0, "abcde", 2, -2); + test(S("abcde"), 5, 0, "abcde", 4, -4); + test(S("abcde"), 5, 0, "abcde", 5, -5); + test(S("abcde"), 5, 0, "abcdefghij", 0, 0); + test(S("abcde"), 5, 0, "abcdefghij", 1, -1); + test(S("abcde"), 5, 0, "abcdefghij", 5, -5); + test(S("abcde"), 5, 0, "abcdefghij", 9, -9); + test(S("abcde"), 5, 0, "abcdefghij", 10, -10); + test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcde"), 5, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcde"), 5, 1, "", 0, 0); + test(S("abcde"), 5, 1, "abcde", 0, 0); + test(S("abcde"), 5, 1, "abcde", 1, -1); + test(S("abcde"), 5, 1, "abcde", 2, -2); + test(S("abcde"), 5, 1, "abcde", 4, -4); + test(S("abcde"), 5, 1, "abcde", 5, -5); + test(S("abcde"), 5, 1, "abcdefghij", 0, 0); + test(S("abcde"), 5, 1, "abcdefghij", 1, -1); + test(S("abcde"), 5, 1, "abcdefghij", 5, -5); + test(S("abcde"), 5, 1, "abcdefghij", 9, -9); + test(S("abcde"), 5, 1, "abcdefghij", 10, -10); + test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 0, 0); + test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 1, -1); + test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 10, -10); + test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 19, -19); + test(S("abcde"), 5, 1, "abcdefghijklmnopqrst", 20, -20); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcde"), 6, 0, "", 0, 0); - test(S("abcde"), 6, 0, "abcde", 0, 0); - test(S("abcde"), 6, 0, "abcde", 1, 0); - test(S("abcde"), 6, 0, "abcde", 2, 0); - test(S("abcde"), 6, 0, "abcde", 4, 0); - test(S("abcde"), 6, 0, "abcde", 5, 0); - test(S("abcde"), 6, 0, "abcdefghij", 0, 0); - test(S("abcde"), 6, 0, "abcdefghij", 1, 0); - test(S("abcde"), 6, 0, "abcdefghij", 5, 0); - test(S("abcde"), 6, 0, "abcdefghij", 9, 0); - test(S("abcde"), 6, 0, "abcdefghij", 10, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 1, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 10, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 19, 0); - test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 20, 0); - test(S("abcdefghij"), 0, 0, "", 0, 0); - test(S("abcdefghij"), 0, 0, "abcde", 0, 0); - test(S("abcdefghij"), 0, 0, "abcde", 1, -1); - test(S("abcdefghij"), 0, 0, "abcde", 2, -2); - test(S("abcdefghij"), 0, 0, "abcde", 4, -4); - test(S("abcdefghij"), 0, 0, "abcde", 5, -5); - test(S("abcdefghij"), 0, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 0, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 0, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 0, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 0, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 0, 1, "", 0, 1); - test(S("abcdefghij"), 0, 1, "abcde", 0, 1); - test(S("abcdefghij"), 0, 1, "abcde", 1, 0); - test(S("abcdefghij"), 0, 1, "abcde", 2, -1); - test(S("abcdefghij"), 0, 1, "abcde", 4, -3); - test(S("abcdefghij"), 0, 1, "abcde", 5, -4); - test(S("abcdefghij"), 0, 1, "abcdefghij", 0, 1); - test(S("abcdefghij"), 0, 1, "abcdefghij", 1, 0); - test(S("abcdefghij"), 0, 1, "abcdefghij", 5, -4); - test(S("abcdefghij"), 0, 1, "abcdefghij", 9, -8); - test(S("abcdefghij"), 0, 1, "abcdefghij", 10, -9); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 1, 0); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 10, -9); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 19, -18); - test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 20, -19); - test(S("abcdefghij"), 0, 5, "", 0, 5); - test(S("abcdefghij"), 0, 5, "abcde", 0, 5); - test(S("abcdefghij"), 0, 5, "abcde", 1, 4); - test(S("abcdefghij"), 0, 5, "abcde", 2, 3); - test(S("abcdefghij"), 0, 5, "abcde", 4, 1); - test(S("abcdefghij"), 0, 5, "abcde", 5, 0); - test(S("abcdefghij"), 0, 5, "abcdefghij", 0, 5); - test(S("abcdefghij"), 0, 5, "abcdefghij", 1, 4); - test(S("abcdefghij"), 0, 5, "abcdefghij", 5, 0); - test(S("abcdefghij"), 0, 5, "abcdefghij", 9, -4); - test(S("abcdefghij"), 0, 5, "abcdefghij", 10, -5); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 0, 5); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 1, 4); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 10, -5); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 19, -14); - test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 20, -15); - test(S("abcdefghij"), 0, 9, "", 0, 9); - test(S("abcdefghij"), 0, 9, "abcde", 0, 9); - test(S("abcdefghij"), 0, 9, "abcde", 1, 8); - test(S("abcdefghij"), 0, 9, "abcde", 2, 7); - test(S("abcdefghij"), 0, 9, "abcde", 4, 5); - test(S("abcdefghij"), 0, 9, "abcde", 5, 4); - test(S("abcdefghij"), 0, 9, "abcdefghij", 0, 9); - test(S("abcdefghij"), 0, 9, "abcdefghij", 1, 8); - test(S("abcdefghij"), 0, 9, "abcdefghij", 5, 4); - test(S("abcdefghij"), 0, 9, "abcdefghij", 9, 0); - test(S("abcdefghij"), 0, 9, "abcdefghij", 10, -1); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 1, 8); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 10, -1); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 19, -10); - test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 20, -11); - test(S("abcdefghij"), 0, 10, "", 0, 10); - test(S("abcdefghij"), 0, 10, "abcde", 0, 10); - test(S("abcdefghij"), 0, 10, "abcde", 1, 9); - test(S("abcdefghij"), 0, 10, "abcde", 2, 8); - test(S("abcdefghij"), 0, 10, "abcde", 4, 6); - test(S("abcdefghij"), 0, 10, "abcde", 5, 5); - test(S("abcdefghij"), 0, 10, "abcdefghij", 0, 10); - test(S("abcdefghij"), 0, 10, "abcdefghij", 1, 9); - test(S("abcdefghij"), 0, 10, "abcdefghij", 5, 5); - test(S("abcdefghij"), 0, 10, "abcdefghij", 9, 1); - test(S("abcdefghij"), 0, 10, "abcdefghij", 10, 0); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 19, -9); - test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 20, -10); - test(S("abcdefghij"), 0, 11, "", 0, 10); - test(S("abcdefghij"), 0, 11, "abcde", 0, 10); - test(S("abcdefghij"), 0, 11, "abcde", 1, 9); - test(S("abcdefghij"), 0, 11, "abcde", 2, 8); +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcde"), 6, 0, "", 0, 0); + test(S("abcde"), 6, 0, "abcde", 0, 0); + test(S("abcde"), 6, 0, "abcde", 1, 0); + test(S("abcde"), 6, 0, "abcde", 2, 0); + test(S("abcde"), 6, 0, "abcde", 4, 0); + test(S("abcde"), 6, 0, "abcde", 5, 0); + test(S("abcde"), 6, 0, "abcdefghij", 0, 0); + test(S("abcde"), 6, 0, "abcdefghij", 1, 0); + test(S("abcde"), 6, 0, "abcdefghij", 5, 0); + test(S("abcde"), 6, 0, "abcdefghij", 9, 0); + test(S("abcde"), 6, 0, "abcdefghij", 10, 0); + test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 1, 0); + test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 10, 0); + test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 19, 0); + test(S("abcde"), 6, 0, "abcdefghijklmnopqrst", 20, 0); + test(S("abcdefghij"), 0, 0, "", 0, 0); + test(S("abcdefghij"), 0, 0, "abcde", 0, 0); + test(S("abcdefghij"), 0, 0, "abcde", 1, -1); + test(S("abcdefghij"), 0, 0, "abcde", 2, -2); + test(S("abcdefghij"), 0, 0, "abcde", 4, -4); + test(S("abcdefghij"), 0, 0, "abcde", 5, -5); + test(S("abcdefghij"), 0, 0, "abcdefghij", 0, 0); + test(S("abcdefghij"), 0, 0, "abcdefghij", 1, -1); + test(S("abcdefghij"), 0, 0, "abcdefghij", 5, -5); + test(S("abcdefghij"), 0, 0, "abcdefghij", 9, -9); + test(S("abcdefghij"), 0, 0, "abcdefghij", 10, -10); + test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghij"), 0, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghij"), 0, 1, "", 0, 1); + test(S("abcdefghij"), 0, 1, "abcde", 0, 1); + test(S("abcdefghij"), 0, 1, "abcde", 1, 0); + test(S("abcdefghij"), 0, 1, "abcde", 2, -1); + test(S("abcdefghij"), 0, 1, "abcde", 4, -3); + test(S("abcdefghij"), 0, 1, "abcde", 5, -4); + test(S("abcdefghij"), 0, 1, "abcdefghij", 0, 1); + test(S("abcdefghij"), 0, 1, "abcdefghij", 1, 0); + test(S("abcdefghij"), 0, 1, "abcdefghij", 5, -4); + test(S("abcdefghij"), 0, 1, "abcdefghij", 9, -8); + test(S("abcdefghij"), 0, 1, "abcdefghij", 10, -9); + test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 1, 0); + test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 10, -9); + test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 19, -18); + test(S("abcdefghij"), 0, 1, "abcdefghijklmnopqrst", 20, -19); + test(S("abcdefghij"), 0, 5, "", 0, 5); + test(S("abcdefghij"), 0, 5, "abcde", 0, 5); + test(S("abcdefghij"), 0, 5, "abcde", 1, 4); + test(S("abcdefghij"), 0, 5, "abcde", 2, 3); + test(S("abcdefghij"), 0, 5, "abcde", 4, 1); + test(S("abcdefghij"), 0, 5, "abcde", 5, 0); + test(S("abcdefghij"), 0, 5, "abcdefghij", 0, 5); + test(S("abcdefghij"), 0, 5, "abcdefghij", 1, 4); + test(S("abcdefghij"), 0, 5, "abcdefghij", 5, 0); + test(S("abcdefghij"), 0, 5, "abcdefghij", 9, -4); + test(S("abcdefghij"), 0, 5, "abcdefghij", 10, -5); + test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 0, 5); + test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 1, 4); + test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 10, -5); + test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 19, -14); + test(S("abcdefghij"), 0, 5, "abcdefghijklmnopqrst", 20, -15); + test(S("abcdefghij"), 0, 9, "", 0, 9); + test(S("abcdefghij"), 0, 9, "abcde", 0, 9); + test(S("abcdefghij"), 0, 9, "abcde", 1, 8); + test(S("abcdefghij"), 0, 9, "abcde", 2, 7); + test(S("abcdefghij"), 0, 9, "abcde", 4, 5); + test(S("abcdefghij"), 0, 9, "abcde", 5, 4); + test(S("abcdefghij"), 0, 9, "abcdefghij", 0, 9); + test(S("abcdefghij"), 0, 9, "abcdefghij", 1, 8); + test(S("abcdefghij"), 0, 9, "abcdefghij", 5, 4); + test(S("abcdefghij"), 0, 9, "abcdefghij", 9, 0); + test(S("abcdefghij"), 0, 9, "abcdefghij", 10, -1); + test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 0, 9); + test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 1, 8); + test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 10, -1); + test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 19, -10); + test(S("abcdefghij"), 0, 9, "abcdefghijklmnopqrst", 20, -11); + test(S("abcdefghij"), 0, 10, "", 0, 10); + test(S("abcdefghij"), 0, 10, "abcde", 0, 10); + test(S("abcdefghij"), 0, 10, "abcde", 1, 9); + test(S("abcdefghij"), 0, 10, "abcde", 2, 8); + test(S("abcdefghij"), 0, 10, "abcde", 4, 6); + test(S("abcdefghij"), 0, 10, "abcde", 5, 5); + test(S("abcdefghij"), 0, 10, "abcdefghij", 0, 10); + test(S("abcdefghij"), 0, 10, "abcdefghij", 1, 9); + test(S("abcdefghij"), 0, 10, "abcdefghij", 5, 5); + test(S("abcdefghij"), 0, 10, "abcdefghij", 9, 1); + test(S("abcdefghij"), 0, 10, "abcdefghij", 10, 0); + test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 0, 10); + test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 1, 9); + test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 10, 0); + test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 19, -9); + test(S("abcdefghij"), 0, 10, "abcdefghijklmnopqrst", 20, -10); + test(S("abcdefghij"), 0, 11, "", 0, 10); + test(S("abcdefghij"), 0, 11, "abcde", 0, 10); + test(S("abcdefghij"), 0, 11, "abcde", 1, 9); + test(S("abcdefghij"), 0, 11, "abcde", 2, 8); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcdefghij"), 0, 11, "abcde", 4, 6); - test(S("abcdefghij"), 0, 11, "abcde", 5, 5); - test(S("abcdefghij"), 0, 11, "abcdefghij", 0, 10); - test(S("abcdefghij"), 0, 11, "abcdefghij", 1, 9); - test(S("abcdefghij"), 0, 11, "abcdefghij", 5, 5); - test(S("abcdefghij"), 0, 11, "abcdefghij", 9, 1); - test(S("abcdefghij"), 0, 11, "abcdefghij", 10, 0); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 19, -9); - test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 20, -10); - test(S("abcdefghij"), 1, 0, "", 0, 0); - test(S("abcdefghij"), 1, 0, "abcde", 0, 0); - test(S("abcdefghij"), 1, 0, "abcde", 1, -1); - test(S("abcdefghij"), 1, 0, "abcde", 2, -2); - test(S("abcdefghij"), 1, 0, "abcde", 4, -4); - test(S("abcdefghij"), 1, 0, "abcde", 5, -5); - test(S("abcdefghij"), 1, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 1, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 1, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 1, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 1, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 1, 1, "", 0, 1); - test(S("abcdefghij"), 1, 1, "abcde", 0, 1); - test(S("abcdefghij"), 1, 1, "abcde", 1, 1); - test(S("abcdefghij"), 1, 1, "abcde", 2, 1); - test(S("abcdefghij"), 1, 1, "abcde", 4, 1); - test(S("abcdefghij"), 1, 1, "abcde", 5, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 0, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 1, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 1, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 1, 4, "", 0, 4); - test(S("abcdefghij"), 1, 4, "abcde", 0, 4); - test(S("abcdefghij"), 1, 4, "abcde", 1, 1); - test(S("abcdefghij"), 1, 4, "abcde", 2, 1); - test(S("abcdefghij"), 1, 4, "abcde", 4, 1); - test(S("abcdefghij"), 1, 4, "abcde", 5, 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 0, 4); - test(S("abcdefghij"), 1, 4, "abcdefghij", 1, 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 4, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 0, 4); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 1, 8, "", 0, 8); - test(S("abcdefghij"), 1, 8, "abcde", 0, 8); - test(S("abcdefghij"), 1, 8, "abcde", 1, 1); - test(S("abcdefghij"), 1, 8, "abcde", 2, 1); - test(S("abcdefghij"), 1, 8, "abcde", 4, 1); - test(S("abcdefghij"), 1, 8, "abcde", 5, 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 0, 8); - test(S("abcdefghij"), 1, 8, "abcdefghij", 1, 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 8, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 0, 8); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 1, 9, "", 0, 9); - test(S("abcdefghij"), 1, 9, "abcde", 0, 9); - test(S("abcdefghij"), 1, 9, "abcde", 1, 1); - test(S("abcdefghij"), 1, 9, "abcde", 2, 1); - test(S("abcdefghij"), 1, 9, "abcde", 4, 1); - test(S("abcdefghij"), 1, 9, "abcde", 5, 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 0, 9); - test(S("abcdefghij"), 1, 9, "abcdefghij", 1, 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 9, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 1, 10, "", 0, 9); - test(S("abcdefghij"), 1, 10, "abcde", 0, 9); - test(S("abcdefghij"), 1, 10, "abcde", 1, 1); - test(S("abcdefghij"), 1, 10, "abcde", 2, 1); - test(S("abcdefghij"), 1, 10, "abcde", 4, 1); - test(S("abcdefghij"), 1, 10, "abcde", 5, 1); - test(S("abcdefghij"), 1, 10, "abcdefghij", 0, 9); - test(S("abcdefghij"), 1, 10, "abcdefghij", 1, 1); +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcdefghij"), 0, 11, "abcde", 4, 6); + test(S("abcdefghij"), 0, 11, "abcde", 5, 5); + test(S("abcdefghij"), 0, 11, "abcdefghij", 0, 10); + test(S("abcdefghij"), 0, 11, "abcdefghij", 1, 9); + test(S("abcdefghij"), 0, 11, "abcdefghij", 5, 5); + test(S("abcdefghij"), 0, 11, "abcdefghij", 9, 1); + test(S("abcdefghij"), 0, 11, "abcdefghij", 10, 0); + test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 0, 10); + test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 1, 9); + test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 10, 0); + test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 19, -9); + test(S("abcdefghij"), 0, 11, "abcdefghijklmnopqrst", 20, -10); + test(S("abcdefghij"), 1, 0, "", 0, 0); + test(S("abcdefghij"), 1, 0, "abcde", 0, 0); + test(S("abcdefghij"), 1, 0, "abcde", 1, -1); + test(S("abcdefghij"), 1, 0, "abcde", 2, -2); + test(S("abcdefghij"), 1, 0, "abcde", 4, -4); + test(S("abcdefghij"), 1, 0, "abcde", 5, -5); + test(S("abcdefghij"), 1, 0, "abcdefghij", 0, 0); + test(S("abcdefghij"), 1, 0, "abcdefghij", 1, -1); + test(S("abcdefghij"), 1, 0, "abcdefghij", 5, -5); + test(S("abcdefghij"), 1, 0, "abcdefghij", 9, -9); + test(S("abcdefghij"), 1, 0, "abcdefghij", 10, -10); + test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghij"), 1, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghij"), 1, 1, "", 0, 1); + test(S("abcdefghij"), 1, 1, "abcde", 0, 1); + test(S("abcdefghij"), 1, 1, "abcde", 1, 1); + test(S("abcdefghij"), 1, 1, "abcde", 2, 1); + test(S("abcdefghij"), 1, 1, "abcde", 4, 1); + test(S("abcdefghij"), 1, 1, "abcde", 5, 1); + test(S("abcdefghij"), 1, 1, "abcdefghij", 0, 1); + test(S("abcdefghij"), 1, 1, "abcdefghij", 1, 1); + test(S("abcdefghij"), 1, 1, "abcdefghij", 5, 1); + test(S("abcdefghij"), 1, 1, "abcdefghij", 9, 1); + test(S("abcdefghij"), 1, 1, "abcdefghij", 10, 1); + test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghij"), 1, 1, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghij"), 1, 4, "", 0, 4); + test(S("abcdefghij"), 1, 4, "abcde", 0, 4); + test(S("abcdefghij"), 1, 4, "abcde", 1, 1); + test(S("abcdefghij"), 1, 4, "abcde", 2, 1); + test(S("abcdefghij"), 1, 4, "abcde", 4, 1); + test(S("abcdefghij"), 1, 4, "abcde", 5, 1); + test(S("abcdefghij"), 1, 4, "abcdefghij", 0, 4); + test(S("abcdefghij"), 1, 4, "abcdefghij", 1, 1); + test(S("abcdefghij"), 1, 4, "abcdefghij", 5, 1); + test(S("abcdefghij"), 1, 4, "abcdefghij", 9, 1); + test(S("abcdefghij"), 1, 4, "abcdefghij", 10, 1); + test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 0, 4); + test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghij"), 1, 4, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghij"), 1, 8, "", 0, 8); + test(S("abcdefghij"), 1, 8, "abcde", 0, 8); + test(S("abcdefghij"), 1, 8, "abcde", 1, 1); + test(S("abcdefghij"), 1, 8, "abcde", 2, 1); + test(S("abcdefghij"), 1, 8, "abcde", 4, 1); + test(S("abcdefghij"), 1, 8, "abcde", 5, 1); + test(S("abcdefghij"), 1, 8, "abcdefghij", 0, 8); + test(S("abcdefghij"), 1, 8, "abcdefghij", 1, 1); + test(S("abcdefghij"), 1, 8, "abcdefghij", 5, 1); + test(S("abcdefghij"), 1, 8, "abcdefghij", 9, 1); + test(S("abcdefghij"), 1, 8, "abcdefghij", 10, 1); + test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 0, 8); + test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghij"), 1, 8, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghij"), 1, 9, "", 0, 9); + test(S("abcdefghij"), 1, 9, "abcde", 0, 9); + test(S("abcdefghij"), 1, 9, "abcde", 1, 1); + test(S("abcdefghij"), 1, 9, "abcde", 2, 1); + test(S("abcdefghij"), 1, 9, "abcde", 4, 1); + test(S("abcdefghij"), 1, 9, "abcde", 5, 1); + test(S("abcdefghij"), 1, 9, "abcdefghij", 0, 9); + test(S("abcdefghij"), 1, 9, "abcdefghij", 1, 1); + test(S("abcdefghij"), 1, 9, "abcdefghij", 5, 1); + test(S("abcdefghij"), 1, 9, "abcdefghij", 9, 1); + test(S("abcdefghij"), 1, 9, "abcdefghij", 10, 1); + test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 0, 9); + test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghij"), 1, 9, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghij"), 1, 10, "", 0, 9); + test(S("abcdefghij"), 1, 10, "abcde", 0, 9); + test(S("abcdefghij"), 1, 10, "abcde", 1, 1); + test(S("abcdefghij"), 1, 10, "abcde", 2, 1); + test(S("abcdefghij"), 1, 10, "abcde", 4, 1); + test(S("abcdefghij"), 1, 10, "abcde", 5, 1); + test(S("abcdefghij"), 1, 10, "abcdefghij", 0, 9); + test(S("abcdefghij"), 1, 10, "abcdefghij", 1, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcdefghij"), 1, 10, "abcdefghij", 5, 1); - test(S("abcdefghij"), 1, 10, "abcdefghij", 9, 1); - test(S("abcdefghij"), 1, 10, "abcdefghij", 10, 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghij"), 5, 0, "", 0, 0); - test(S("abcdefghij"), 5, 0, "abcde", 0, 0); - test(S("abcdefghij"), 5, 0, "abcde", 1, -1); - test(S("abcdefghij"), 5, 0, "abcde", 2, -2); - test(S("abcdefghij"), 5, 0, "abcde", 4, -4); - test(S("abcdefghij"), 5, 0, "abcde", 5, -5); - test(S("abcdefghij"), 5, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 5, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 5, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 5, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 5, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 5, 1, "", 0, 1); - test(S("abcdefghij"), 5, 1, "abcde", 0, 1); - test(S("abcdefghij"), 5, 1, "abcde", 1, 5); - test(S("abcdefghij"), 5, 1, "abcde", 2, 5); - test(S("abcdefghij"), 5, 1, "abcde", 4, 5); - test(S("abcdefghij"), 5, 1, "abcde", 5, 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 0, 1); - test(S("abcdefghij"), 5, 1, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 1, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 5, 2, "", 0, 2); - test(S("abcdefghij"), 5, 2, "abcde", 0, 2); - test(S("abcdefghij"), 5, 2, "abcde", 1, 5); - test(S("abcdefghij"), 5, 2, "abcde", 2, 5); - test(S("abcdefghij"), 5, 2, "abcde", 4, 5); - test(S("abcdefghij"), 5, 2, "abcde", 5, 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 0, 2); - test(S("abcdefghij"), 5, 2, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 2, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 0, 2); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 5, 4, "", 0, 4); - test(S("abcdefghij"), 5, 4, "abcde", 0, 4); - test(S("abcdefghij"), 5, 4, "abcde", 1, 5); - test(S("abcdefghij"), 5, 4, "abcde", 2, 5); - test(S("abcdefghij"), 5, 4, "abcde", 4, 5); - test(S("abcdefghij"), 5, 4, "abcde", 5, 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 0, 4); - test(S("abcdefghij"), 5, 4, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 4, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 0, 4); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 5, 5, "", 0, 5); - test(S("abcdefghij"), 5, 5, "abcde", 0, 5); - test(S("abcdefghij"), 5, 5, "abcde", 1, 5); - test(S("abcdefghij"), 5, 5, "abcde", 2, 5); - test(S("abcdefghij"), 5, 5, "abcde", 4, 5); - test(S("abcdefghij"), 5, 5, "abcde", 5, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 0, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 5, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 0, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 5, 6, "", 0, 5); - test(S("abcdefghij"), 5, 6, "abcde", 0, 5); - test(S("abcdefghij"), 5, 6, "abcde", 1, 5); - test(S("abcdefghij"), 5, 6, "abcde", 2, 5); - test(S("abcdefghij"), 5, 6, "abcde", 4, 5); - test(S("abcdefghij"), 5, 6, "abcde", 5, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 0, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 1, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 5, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 9, 5); - test(S("abcdefghij"), 5, 6, "abcdefghij", 10, 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 0, 5); +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcdefghij"), 1, 10, "abcdefghij", 5, 1); + test(S("abcdefghij"), 1, 10, "abcdefghij", 9, 1); + test(S("abcdefghij"), 1, 10, "abcdefghij", 10, 1); + test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 0, 9); + test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghij"), 1, 10, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghij"), 5, 0, "", 0, 0); + test(S("abcdefghij"), 5, 0, "abcde", 0, 0); + test(S("abcdefghij"), 5, 0, "abcde", 1, -1); + test(S("abcdefghij"), 5, 0, "abcde", 2, -2); + test(S("abcdefghij"), 5, 0, "abcde", 4, -4); + test(S("abcdefghij"), 5, 0, "abcde", 5, -5); + test(S("abcdefghij"), 5, 0, "abcdefghij", 0, 0); + test(S("abcdefghij"), 5, 0, "abcdefghij", 1, -1); + test(S("abcdefghij"), 5, 0, "abcdefghij", 5, -5); + test(S("abcdefghij"), 5, 0, "abcdefghij", 9, -9); + test(S("abcdefghij"), 5, 0, "abcdefghij", 10, -10); + test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghij"), 5, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghij"), 5, 1, "", 0, 1); + test(S("abcdefghij"), 5, 1, "abcde", 0, 1); + test(S("abcdefghij"), 5, 1, "abcde", 1, 5); + test(S("abcdefghij"), 5, 1, "abcde", 2, 5); + test(S("abcdefghij"), 5, 1, "abcde", 4, 5); + test(S("abcdefghij"), 5, 1, "abcde", 5, 5); + test(S("abcdefghij"), 5, 1, "abcdefghij", 0, 1); + test(S("abcdefghij"), 5, 1, "abcdefghij", 1, 5); + test(S("abcdefghij"), 5, 1, "abcdefghij", 5, 5); + test(S("abcdefghij"), 5, 1, "abcdefghij", 9, 5); + test(S("abcdefghij"), 5, 1, "abcdefghij", 10, 5); + test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 1, 5); + test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 10, 5); + test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 19, 5); + test(S("abcdefghij"), 5, 1, "abcdefghijklmnopqrst", 20, 5); + test(S("abcdefghij"), 5, 2, "", 0, 2); + test(S("abcdefghij"), 5, 2, "abcde", 0, 2); + test(S("abcdefghij"), 5, 2, "abcde", 1, 5); + test(S("abcdefghij"), 5, 2, "abcde", 2, 5); + test(S("abcdefghij"), 5, 2, "abcde", 4, 5); + test(S("abcdefghij"), 5, 2, "abcde", 5, 5); + test(S("abcdefghij"), 5, 2, "abcdefghij", 0, 2); + test(S("abcdefghij"), 5, 2, "abcdefghij", 1, 5); + test(S("abcdefghij"), 5, 2, "abcdefghij", 5, 5); + test(S("abcdefghij"), 5, 2, "abcdefghij", 9, 5); + test(S("abcdefghij"), 5, 2, "abcdefghij", 10, 5); + test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 0, 2); + test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 1, 5); + test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 10, 5); + test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 19, 5); + test(S("abcdefghij"), 5, 2, "abcdefghijklmnopqrst", 20, 5); + test(S("abcdefghij"), 5, 4, "", 0, 4); + test(S("abcdefghij"), 5, 4, "abcde", 0, 4); + test(S("abcdefghij"), 5, 4, "abcde", 1, 5); + test(S("abcdefghij"), 5, 4, "abcde", 2, 5); + test(S("abcdefghij"), 5, 4, "abcde", 4, 5); + test(S("abcdefghij"), 5, 4, "abcde", 5, 5); + test(S("abcdefghij"), 5, 4, "abcdefghij", 0, 4); + test(S("abcdefghij"), 5, 4, "abcdefghij", 1, 5); + test(S("abcdefghij"), 5, 4, "abcdefghij", 5, 5); + test(S("abcdefghij"), 5, 4, "abcdefghij", 9, 5); + test(S("abcdefghij"), 5, 4, "abcdefghij", 10, 5); + test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 0, 4); + test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 1, 5); + test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 10, 5); + test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 19, 5); + test(S("abcdefghij"), 5, 4, "abcdefghijklmnopqrst", 20, 5); + test(S("abcdefghij"), 5, 5, "", 0, 5); + test(S("abcdefghij"), 5, 5, "abcde", 0, 5); + test(S("abcdefghij"), 5, 5, "abcde", 1, 5); + test(S("abcdefghij"), 5, 5, "abcde", 2, 5); + test(S("abcdefghij"), 5, 5, "abcde", 4, 5); + test(S("abcdefghij"), 5, 5, "abcde", 5, 5); + test(S("abcdefghij"), 5, 5, "abcdefghij", 0, 5); + test(S("abcdefghij"), 5, 5, "abcdefghij", 1, 5); + test(S("abcdefghij"), 5, 5, "abcdefghij", 5, 5); + test(S("abcdefghij"), 5, 5, "abcdefghij", 9, 5); + test(S("abcdefghij"), 5, 5, "abcdefghij", 10, 5); + test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 0, 5); + test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 1, 5); + test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 10, 5); + test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 19, 5); + test(S("abcdefghij"), 5, 5, "abcdefghijklmnopqrst", 20, 5); + test(S("abcdefghij"), 5, 6, "", 0, 5); + test(S("abcdefghij"), 5, 6, "abcde", 0, 5); + test(S("abcdefghij"), 5, 6, "abcde", 1, 5); + test(S("abcdefghij"), 5, 6, "abcde", 2, 5); + test(S("abcdefghij"), 5, 6, "abcde", 4, 5); + test(S("abcdefghij"), 5, 6, "abcde", 5, 5); + test(S("abcdefghij"), 5, 6, "abcdefghij", 0, 5); + test(S("abcdefghij"), 5, 6, "abcdefghij", 1, 5); + test(S("abcdefghij"), 5, 6, "abcdefghij", 5, 5); + test(S("abcdefghij"), 5, 6, "abcdefghij", 9, 5); + test(S("abcdefghij"), 5, 6, "abcdefghij", 10, 5); + test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 0, 5); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 1, 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 10, 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 19, 5); - test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 20, 5); - test(S("abcdefghij"), 9, 0, "", 0, 0); - test(S("abcdefghij"), 9, 0, "abcde", 0, 0); - test(S("abcdefghij"), 9, 0, "abcde", 1, -1); - test(S("abcdefghij"), 9, 0, "abcde", 2, -2); - test(S("abcdefghij"), 9, 0, "abcde", 4, -4); - test(S("abcdefghij"), 9, 0, "abcde", 5, -5); - test(S("abcdefghij"), 9, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 9, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 9, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 9, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 9, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 9, 1, "", 0, 1); - test(S("abcdefghij"), 9, 1, "abcde", 0, 1); - test(S("abcdefghij"), 9, 1, "abcde", 1, 9); - test(S("abcdefghij"), 9, 1, "abcde", 2, 9); - test(S("abcdefghij"), 9, 1, "abcde", 4, 9); - test(S("abcdefghij"), 9, 1, "abcde", 5, 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 0, 1); - test(S("abcdefghij"), 9, 1, "abcdefghij", 1, 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 5, 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 9, 9); - test(S("abcdefghij"), 9, 1, "abcdefghij", 10, 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 10, 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 19, 9); - test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 20, 9); - test(S("abcdefghij"), 9, 2, "", 0, 1); - test(S("abcdefghij"), 9, 2, "abcde", 0, 1); - test(S("abcdefghij"), 9, 2, "abcde", 1, 9); - test(S("abcdefghij"), 9, 2, "abcde", 2, 9); - test(S("abcdefghij"), 9, 2, "abcde", 4, 9); - test(S("abcdefghij"), 9, 2, "abcde", 5, 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 0, 1); - test(S("abcdefghij"), 9, 2, "abcdefghij", 1, 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 5, 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 9, 9); - test(S("abcdefghij"), 9, 2, "abcdefghij", 10, 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 10, 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 19, 9); - test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 20, 9); - test(S("abcdefghij"), 10, 0, "", 0, 0); - test(S("abcdefghij"), 10, 0, "abcde", 0, 0); - test(S("abcdefghij"), 10, 0, "abcde", 1, -1); - test(S("abcdefghij"), 10, 0, "abcde", 2, -2); - test(S("abcdefghij"), 10, 0, "abcde", 4, -4); - test(S("abcdefghij"), 10, 0, "abcde", 5, -5); - test(S("abcdefghij"), 10, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 10, 0, "abcdefghij", 1, -1); - test(S("abcdefghij"), 10, 0, "abcdefghij", 5, -5); - test(S("abcdefghij"), 10, 0, "abcdefghij", 9, -9); - test(S("abcdefghij"), 10, 0, "abcdefghij", 10, -10); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 10, 1, "", 0, 0); - test(S("abcdefghij"), 10, 1, "abcde", 0, 0); - test(S("abcdefghij"), 10, 1, "abcde", 1, -1); - test(S("abcdefghij"), 10, 1, "abcde", 2, -2); - test(S("abcdefghij"), 10, 1, "abcde", 4, -4); - test(S("abcdefghij"), 10, 1, "abcde", 5, -5); - test(S("abcdefghij"), 10, 1, "abcdefghij", 0, 0); - test(S("abcdefghij"), 10, 1, "abcdefghij", 1, -1); - test(S("abcdefghij"), 10, 1, "abcdefghij", 5, -5); - test(S("abcdefghij"), 10, 1, "abcdefghij", 9, -9); - test(S("abcdefghij"), 10, 1, "abcdefghij", 10, -10); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghij"), 11, 0, "", 0, 0); - test(S("abcdefghij"), 11, 0, "abcde", 0, 0); - test(S("abcdefghij"), 11, 0, "abcde", 1, 0); - test(S("abcdefghij"), 11, 0, "abcde", 2, 0); - test(S("abcdefghij"), 11, 0, "abcde", 4, 0); - test(S("abcdefghij"), 11, 0, "abcde", 5, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 0, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 1, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 5, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 9, 0); - test(S("abcdefghij"), 11, 0, "abcdefghij", 10, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 1, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 19, 0); - test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 20, 0); +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 1, 5); + test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 10, 5); + test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 19, 5); + test(S("abcdefghij"), 5, 6, "abcdefghijklmnopqrst", 20, 5); + test(S("abcdefghij"), 9, 0, "", 0, 0); + test(S("abcdefghij"), 9, 0, "abcde", 0, 0); + test(S("abcdefghij"), 9, 0, "abcde", 1, -1); + test(S("abcdefghij"), 9, 0, "abcde", 2, -2); + test(S("abcdefghij"), 9, 0, "abcde", 4, -4); + test(S("abcdefghij"), 9, 0, "abcde", 5, -5); + test(S("abcdefghij"), 9, 0, "abcdefghij", 0, 0); + test(S("abcdefghij"), 9, 0, "abcdefghij", 1, -1); + test(S("abcdefghij"), 9, 0, "abcdefghij", 5, -5); + test(S("abcdefghij"), 9, 0, "abcdefghij", 9, -9); + test(S("abcdefghij"), 9, 0, "abcdefghij", 10, -10); + test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghij"), 9, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghij"), 9, 1, "", 0, 1); + test(S("abcdefghij"), 9, 1, "abcde", 0, 1); + test(S("abcdefghij"), 9, 1, "abcde", 1, 9); + test(S("abcdefghij"), 9, 1, "abcde", 2, 9); + test(S("abcdefghij"), 9, 1, "abcde", 4, 9); + test(S("abcdefghij"), 9, 1, "abcde", 5, 9); + test(S("abcdefghij"), 9, 1, "abcdefghij", 0, 1); + test(S("abcdefghij"), 9, 1, "abcdefghij", 1, 9); + test(S("abcdefghij"), 9, 1, "abcdefghij", 5, 9); + test(S("abcdefghij"), 9, 1, "abcdefghij", 9, 9); + test(S("abcdefghij"), 9, 1, "abcdefghij", 10, 9); + test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 1, 9); + test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 10, 9); + test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 19, 9); + test(S("abcdefghij"), 9, 1, "abcdefghijklmnopqrst", 20, 9); + test(S("abcdefghij"), 9, 2, "", 0, 1); + test(S("abcdefghij"), 9, 2, "abcde", 0, 1); + test(S("abcdefghij"), 9, 2, "abcde", 1, 9); + test(S("abcdefghij"), 9, 2, "abcde", 2, 9); + test(S("abcdefghij"), 9, 2, "abcde", 4, 9); + test(S("abcdefghij"), 9, 2, "abcde", 5, 9); + test(S("abcdefghij"), 9, 2, "abcdefghij", 0, 1); + test(S("abcdefghij"), 9, 2, "abcdefghij", 1, 9); + test(S("abcdefghij"), 9, 2, "abcdefghij", 5, 9); + test(S("abcdefghij"), 9, 2, "abcdefghij", 9, 9); + test(S("abcdefghij"), 9, 2, "abcdefghij", 10, 9); + test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 1, 9); + test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 10, 9); + test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 19, 9); + test(S("abcdefghij"), 9, 2, "abcdefghijklmnopqrst", 20, 9); + test(S("abcdefghij"), 10, 0, "", 0, 0); + test(S("abcdefghij"), 10, 0, "abcde", 0, 0); + test(S("abcdefghij"), 10, 0, "abcde", 1, -1); + test(S("abcdefghij"), 10, 0, "abcde", 2, -2); + test(S("abcdefghij"), 10, 0, "abcde", 4, -4); + test(S("abcdefghij"), 10, 0, "abcde", 5, -5); + test(S("abcdefghij"), 10, 0, "abcdefghij", 0, 0); + test(S("abcdefghij"), 10, 0, "abcdefghij", 1, -1); + test(S("abcdefghij"), 10, 0, "abcdefghij", 5, -5); + test(S("abcdefghij"), 10, 0, "abcdefghij", 9, -9); + test(S("abcdefghij"), 10, 0, "abcdefghij", 10, -10); + test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghij"), 10, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghij"), 10, 1, "", 0, 0); + test(S("abcdefghij"), 10, 1, "abcde", 0, 0); + test(S("abcdefghij"), 10, 1, "abcde", 1, -1); + test(S("abcdefghij"), 10, 1, "abcde", 2, -2); + test(S("abcdefghij"), 10, 1, "abcde", 4, -4); + test(S("abcdefghij"), 10, 1, "abcde", 5, -5); + test(S("abcdefghij"), 10, 1, "abcdefghij", 0, 0); + test(S("abcdefghij"), 10, 1, "abcdefghij", 1, -1); + test(S("abcdefghij"), 10, 1, "abcdefghij", 5, -5); + test(S("abcdefghij"), 10, 1, "abcdefghij", 9, -9); + test(S("abcdefghij"), 10, 1, "abcdefghij", 10, -10); + test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghij"), 10, 1, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghij"), 11, 0, "", 0, 0); + test(S("abcdefghij"), 11, 0, "abcde", 0, 0); + test(S("abcdefghij"), 11, 0, "abcde", 1, 0); + test(S("abcdefghij"), 11, 0, "abcde", 2, 0); + test(S("abcdefghij"), 11, 0, "abcde", 4, 0); + test(S("abcdefghij"), 11, 0, "abcde", 5, 0); + test(S("abcdefghij"), 11, 0, "abcdefghij", 0, 0); + test(S("abcdefghij"), 11, 0, "abcdefghij", 1, 0); + test(S("abcdefghij"), 11, 0, "abcdefghij", 5, 0); + test(S("abcdefghij"), 11, 0, "abcdefghij", 9, 0); + test(S("abcdefghij"), 11, 0, "abcdefghij", 10, 0); + test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 1, 0); + test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 10, 0); + test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 19, 0); + test(S("abcdefghij"), 11, 0, "abcdefghijklmnopqrst", 20, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 0, 1, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 9, -8); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 19, -18); - test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, "", 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 2, 8); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 4, 6); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 19, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 20, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, "", 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 2, 17); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 4, 15); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 19, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, "", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 9, 11); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, "", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 9, 11); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 2, -2); +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcdefghijklmnopqrst"), 0, 0, "", 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcde", 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghij", 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghijklmnopqrst"), 0, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghijklmnopqrst"), 0, 1, "", 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 4, -3); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcde", 5, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 5, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 9, -8); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghij", 10, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 10, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 19, -18); + test(S("abcdefghijklmnopqrst"), 0, 1, "abcdefghijklmnopqrst", 20, -19); + test(S("abcdefghijklmnopqrst"), 0, 10, "", 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 1, 9); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 2, 8); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 4, 6); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcde", 5, 5); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 1, 9); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 5, 5); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 9, 1); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghij", 10, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 1, 9); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 10, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 19, -9); + test(S("abcdefghijklmnopqrst"), 0, 10, "abcdefghijklmnopqrst", 20, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, "", 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 2, 17); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 4, 15); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcde", 5, 14); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 5, 14); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 9, 10); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghij", 10, 9); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 10, 9); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 19, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, "abcdefghijklmnopqrst", 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, "", 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 2, 18); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 4, 16); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcde", 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 9, 11); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghij", 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghijklmnopqrst"), 0, 20, "abcdefghijklmnopqrst", 20, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, "", 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 2, 18); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 4, 16); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcde", 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 9, 11); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghij", 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghijklmnopqrst"), 0, 21, "abcdefghijklmnopqrst", 20, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, "", 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 2, -2); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test9() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 1, 1, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "", 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "", 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 20, 1); - test(S("abcdefghijklmnopqrst"), 10, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 1, -1); +TEST_CONSTEXPR_CXX20 bool test9() { + test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcde", 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghij", 10, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghijklmnopqrst"), 1, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghijklmnopqrst"), 1, 1, "", 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcde", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghij", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "", 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcde", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghij", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "", 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcde", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghij", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "", 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcde", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghij", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "", 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcde", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghij", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, "abcdefghijklmnopqrst", 20, 1); + test(S("abcdefghijklmnopqrst"), 10, 0, "", 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 2, -2); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcde", 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 1, -1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test10() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 10, 1, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "", 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "", 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 20, 10); - test(S("abcdefghijklmnopqrst"), 19, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 0, 0); +TEST_CONSTEXPR_CXX20 bool test10() { + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghij", 10, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghijklmnopqrst"), 10, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghijklmnopqrst"), 10, 1, "", 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcde", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghij", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, "abcdefghijklmnopqrst", 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "", 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcde", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghij", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, "abcdefghijklmnopqrst", 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "", 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcde", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghij", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, "abcdefghijklmnopqrst", 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "", 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcde", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghij", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, "abcdefghijklmnopqrst", 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "", 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcde", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghij", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, "abcdefghijklmnopqrst", 20, 10); + test(S("abcdefghijklmnopqrst"), 19, 0, "", 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcde", 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghij", 10, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 0, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test11() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 19, 1, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 20, 19); - test(S("abcdefghijklmnopqrst"), 20, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 20, -20); - test(S("abcdefghijklmnopqrst"), 21, 0, "", 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 20, 0); +TEST_CONSTEXPR_CXX20 bool test11() { + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghijklmnopqrst"), 19, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghijklmnopqrst"), 19, 1, "", 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 2, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 4, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcde", 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 9, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghij", 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 19, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, "abcdefghijklmnopqrst", 20, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "", 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 2, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 4, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcde", 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 9, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghij", 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 19, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, "abcdefghijklmnopqrst", 20, 19); + test(S("abcdefghijklmnopqrst"), 20, 0, "", 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcde", 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghij", 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 0, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghijklmnopqrst"), 20, 1, "", 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcde", 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghij", 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 1, "abcdefghijklmnopqrst", 20, -20); + test(S("abcdefghijklmnopqrst"), 21, 0, "", 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcde", 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghij", 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 19, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, "abcdefghijklmnopqrst", 20, 0); - return true; + return true; } template @@ -1349,8 +1335,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string.pass.cpp @@ -17,347 +17,336 @@ #include "test_macros.h" #include "min_allocator.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - const S& str, int x) -{ - if (pos1 <= s.size()) - assert(sign(s.compare(pos1, n1, str)) == sign(x)); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::size_type pos1, typename S::size_type n1, const S& str, int x) { + if (pos1 <= s.size()) + assert(sign(s.compare(pos1, n1, str)) == sign(x)); #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, str); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > s.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.compare(pos1, n1, str); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > s.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), 0, 0, S(""), 0); - test(S(""), 0, 0, S("abcde"), -5); - test(S(""), 0, 0, S("abcdefghij"), -10); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), -20); - test(S(""), 0, 1, S(""), 0); - test(S(""), 0, 1, S("abcde"), -5); - test(S(""), 0, 1, S("abcdefghij"), -10); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), -20); - test(S(""), 1, 0, S(""), 0); - test(S(""), 1, 0, S("abcde"), 0); - test(S(""), 1, 0, S("abcdefghij"), 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0); - test(S("abcde"), 0, 0, S(""), 0); - test(S("abcde"), 0, 0, S("abcde"), -5); - test(S("abcde"), 0, 0, S("abcdefghij"), -10); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 0, 1, S(""), 1); - test(S("abcde"), 0, 1, S("abcde"), -4); - test(S("abcde"), 0, 1, S("abcdefghij"), -9); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), -19); - test(S("abcde"), 0, 2, S(""), 2); - test(S("abcde"), 0, 2, S("abcde"), -3); - test(S("abcde"), 0, 2, S("abcdefghij"), -8); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), -18); - test(S("abcde"), 0, 4, S(""), 4); - test(S("abcde"), 0, 4, S("abcde"), -1); - test(S("abcde"), 0, 4, S("abcdefghij"), -6); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), -16); - test(S("abcde"), 0, 5, S(""), 5); - test(S("abcde"), 0, 5, S("abcde"), 0); - test(S("abcde"), 0, 5, S("abcdefghij"), -5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), -15); - test(S("abcde"), 0, 6, S(""), 5); - test(S("abcde"), 0, 6, S("abcde"), 0); - test(S("abcde"), 0, 6, S("abcdefghij"), -5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), -15); - test(S("abcde"), 1, 0, S(""), 0); - test(S("abcde"), 1, 0, S("abcde"), -5); - test(S("abcde"), 1, 0, S("abcdefghij"), -10); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 1, 1, S(""), 1); - test(S("abcde"), 1, 1, S("abcde"), 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 2, S(""), 2); - test(S("abcde"), 1, 2, S("abcde"), 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 3, S(""), 3); - test(S("abcde"), 1, 3, S("abcde"), 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 4, S(""), 4); - test(S("abcde"), 1, 4, S("abcde"), 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 5, S(""), 4); - test(S("abcde"), 1, 5, S("abcde"), 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 2, 0, S(""), 0); - test(S("abcde"), 2, 0, S("abcde"), -5); - test(S("abcde"), 2, 0, S("abcdefghij"), -10); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 2, 1, S(""), 1); - test(S("abcde"), 2, 1, S("abcde"), 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 2, S(""), 2); - test(S("abcde"), 2, 2, S("abcde"), 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 3, S(""), 3); - test(S("abcde"), 2, 3, S("abcde"), 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 4, S(""), 3); - test(S("abcde"), 2, 4, S("abcde"), 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 4, 0, S(""), 0); - test(S("abcde"), 4, 0, S("abcde"), -5); - test(S("abcde"), 4, 0, S("abcdefghij"), -10); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 4, 1, S(""), 1); - test(S("abcde"), 4, 1, S("abcde"), 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 4); - test(S("abcde"), 4, 2, S(""), 1); - test(S("abcde"), 4, 2, S("abcde"), 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 4); - test(S("abcde"), 5, 0, S(""), 0); - test(S("abcde"), 5, 0, S("abcde"), -5); - test(S("abcde"), 5, 0, S("abcdefghij"), -10); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 5, 1, S(""), 0); - test(S("abcde"), 5, 1, S("abcde"), -5); - test(S("abcde"), 5, 1, S("abcdefghij"), -10); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), -20); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), 0, 0, S(""), 0); + test(S(""), 0, 0, S("abcde"), -5); + test(S(""), 0, 0, S("abcdefghij"), -10); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), -20); + test(S(""), 0, 1, S(""), 0); + test(S(""), 0, 1, S("abcde"), -5); + test(S(""), 0, 1, S("abcdefghij"), -10); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), -20); + test(S(""), 1, 0, S(""), 0); + test(S(""), 1, 0, S("abcde"), 0); + test(S(""), 1, 0, S("abcdefghij"), 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0); + test(S("abcde"), 0, 0, S(""), 0); + test(S("abcde"), 0, 0, S("abcde"), -5); + test(S("abcde"), 0, 0, S("abcdefghij"), -10); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 0, 1, S(""), 1); + test(S("abcde"), 0, 1, S("abcde"), -4); + test(S("abcde"), 0, 1, S("abcdefghij"), -9); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), -19); + test(S("abcde"), 0, 2, S(""), 2); + test(S("abcde"), 0, 2, S("abcde"), -3); + test(S("abcde"), 0, 2, S("abcdefghij"), -8); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), -18); + test(S("abcde"), 0, 4, S(""), 4); + test(S("abcde"), 0, 4, S("abcde"), -1); + test(S("abcde"), 0, 4, S("abcdefghij"), -6); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), -16); + test(S("abcde"), 0, 5, S(""), 5); + test(S("abcde"), 0, 5, S("abcde"), 0); + test(S("abcde"), 0, 5, S("abcdefghij"), -5); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), -15); + test(S("abcde"), 0, 6, S(""), 5); + test(S("abcde"), 0, 6, S("abcde"), 0); + test(S("abcde"), 0, 6, S("abcdefghij"), -5); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), -15); + test(S("abcde"), 1, 0, S(""), 0); + test(S("abcde"), 1, 0, S("abcde"), -5); + test(S("abcde"), 1, 0, S("abcdefghij"), -10); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 1, 1, S(""), 1); + test(S("abcde"), 1, 1, S("abcde"), 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 1, 2, S(""), 2); + test(S("abcde"), 1, 2, S("abcde"), 1); + test(S("abcde"), 1, 2, S("abcdefghij"), 1); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 1, 3, S(""), 3); + test(S("abcde"), 1, 3, S("abcde"), 1); + test(S("abcde"), 1, 3, S("abcdefghij"), 1); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 1, 4, S(""), 4); + test(S("abcde"), 1, 4, S("abcde"), 1); + test(S("abcde"), 1, 4, S("abcdefghij"), 1); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 1, 5, S(""), 4); + test(S("abcde"), 1, 5, S("abcde"), 1); + test(S("abcde"), 1, 5, S("abcdefghij"), 1); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 2, 0, S(""), 0); + test(S("abcde"), 2, 0, S("abcde"), -5); + test(S("abcde"), 2, 0, S("abcdefghij"), -10); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 2, 1, S(""), 1); + test(S("abcde"), 2, 1, S("abcde"), 2); + test(S("abcde"), 2, 1, S("abcdefghij"), 2); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 2); + test(S("abcde"), 2, 2, S(""), 2); + test(S("abcde"), 2, 2, S("abcde"), 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 2); + test(S("abcde"), 2, 3, S(""), 3); + test(S("abcde"), 2, 3, S("abcde"), 2); + test(S("abcde"), 2, 3, S("abcdefghij"), 2); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 2); + test(S("abcde"), 2, 4, S(""), 3); + test(S("abcde"), 2, 4, S("abcde"), 2); + test(S("abcde"), 2, 4, S("abcdefghij"), 2); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 2); + test(S("abcde"), 4, 0, S(""), 0); + test(S("abcde"), 4, 0, S("abcde"), -5); + test(S("abcde"), 4, 0, S("abcdefghij"), -10); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 4, 1, S(""), 1); + test(S("abcde"), 4, 1, S("abcde"), 4); + test(S("abcde"), 4, 1, S("abcdefghij"), 4); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 4); + test(S("abcde"), 4, 2, S(""), 1); + test(S("abcde"), 4, 2, S("abcde"), 4); + test(S("abcde"), 4, 2, S("abcdefghij"), 4); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 4); + test(S("abcde"), 5, 0, S(""), 0); + test(S("abcde"), 5, 0, S("abcde"), -5); + test(S("abcde"), 5, 0, S("abcdefghij"), -10); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 5, 1, S(""), 0); + test(S("abcde"), 5, 1, S("abcde"), -5); + test(S("abcde"), 5, 1, S("abcdefghij"), -10); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), -20); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("abcde"), 6, 0, S(""), 0); - test(S("abcde"), 6, 0, S("abcde"), 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0); - test(S("abcdefghij"), 0, 0, S(""), 0); - test(S("abcdefghij"), 0, 0, S("abcde"), -5); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 0, 1, S(""), 1); - test(S("abcdefghij"), 0, 1, S("abcde"), -4); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), -9); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), -19); - test(S("abcdefghij"), 0, 5, S(""), 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 0); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), -5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), -15); - test(S("abcdefghij"), 0, 9, S(""), 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 4); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), -11); - test(S("abcdefghij"), 0, 10, S(""), 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), -10); - test(S("abcdefghij"), 0, 11, S(""), 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), -10); - test(S("abcdefghij"), 1, 0, S(""), 0); - test(S("abcdefghij"), 1, 0, S("abcde"), -5); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 1, 1, S(""), 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 4, S(""), 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 8, S(""), 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 9, S(""), 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 10, S(""), 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 5, 0, S(""), 0); - test(S("abcdefghij"), 5, 0, S("abcde"), -5); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 5, 1, S(""), 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 2, S(""), 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 4, S(""), 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 5, S(""), 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 6, S(""), 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 9, 0, S(""), 0); - test(S("abcdefghij"), 9, 0, S("abcde"), -5); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 9, 1, S(""), 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 9); - test(S("abcdefghij"), 9, 2, S(""), 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 9); - test(S("abcdefghij"), 10, 0, S(""), 0); - test(S("abcdefghij"), 10, 0, S("abcde"), -5); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), -10); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 10, 1, S(""), 0); - test(S("abcdefghij"), 10, 1, S("abcde"), -5); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), -10); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 11, 0, S(""), 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("abcde"), 6, 0, S(""), 0); + test(S("abcde"), 6, 0, S("abcde"), 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0); + test(S("abcdefghij"), 0, 0, S(""), 0); + test(S("abcdefghij"), 0, 0, S("abcde"), -5); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), -10); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 0, 1, S(""), 1); + test(S("abcdefghij"), 0, 1, S("abcde"), -4); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), -9); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), -19); + test(S("abcdefghij"), 0, 5, S(""), 5); + test(S("abcdefghij"), 0, 5, S("abcde"), 0); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), -5); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), -15); + test(S("abcdefghij"), 0, 9, S(""), 9); + test(S("abcdefghij"), 0, 9, S("abcde"), 4); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), -1); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), -11); + test(S("abcdefghij"), 0, 10, S(""), 10); + test(S("abcdefghij"), 0, 10, S("abcde"), 5); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), -10); + test(S("abcdefghij"), 0, 11, S(""), 10); + test(S("abcdefghij"), 0, 11, S("abcde"), 5); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), -10); + test(S("abcdefghij"), 1, 0, S(""), 0); + test(S("abcdefghij"), 1, 0, S("abcde"), -5); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), -10); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 1, 1, S(""), 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 1, 4, S(""), 4); + test(S("abcdefghij"), 1, 4, S("abcde"), 1); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 1, 8, S(""), 8); + test(S("abcdefghij"), 1, 8, S("abcde"), 1); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 1, 9, S(""), 9); + test(S("abcdefghij"), 1, 9, S("abcde"), 1); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 1, 10, S(""), 9); + test(S("abcdefghij"), 1, 10, S("abcde"), 1); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 5, 0, S(""), 0); + test(S("abcdefghij"), 5, 0, S("abcde"), -5); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), -10); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 5, 1, S(""), 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 5); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 5, 2, S(""), 2); + test(S("abcdefghij"), 5, 2, S("abcde"), 5); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 5, 4, S(""), 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 5); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 5, 5, S(""), 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 5, 6, S(""), 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 9, 0, S(""), 0); + test(S("abcdefghij"), 9, 0, S("abcde"), -5); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), -10); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 9, 1, S(""), 1); + test(S("abcdefghij"), 9, 1, S("abcde"), 9); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 9); + test(S("abcdefghij"), 9, 2, S(""), 1); + test(S("abcdefghij"), 9, 2, S("abcde"), 9); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 9); + test(S("abcdefghij"), 10, 0, S(""), 0); + test(S("abcdefghij"), 10, 0, S("abcde"), -5); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), -10); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 10, 1, S(""), 0); + test(S("abcdefghij"), 10, 1, S("abcde"), -5); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), -10); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 11, 0, S(""), 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), -19); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 14); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 15); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 15); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), -4); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), -9); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), -19); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), -10); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 14); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 15); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0); + test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 15); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -386,8 +375,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_size_size.pass.cpp @@ -22,5932 +22,5869 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - const S& str, typename S::size_type pos2, typename S::size_type n2, int x) -{ - if (pos1 <= s.size() && pos2 <= str.size()) - assert(sign(s.compare(pos1, n1, str, pos2, n2)) == sign(x)); +test(const S& s, + typename S::size_type pos1, + typename S::size_type n1, + const S& str, + typename S::size_type pos2, + typename S::size_type n2, + int x) { + if (pos1 <= s.size() && pos2 <= str.size()) + assert(sign(s.compare(pos1, n1, str, pos2, n2)) == sign(x)); #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, str, pos2, n2); - assert(false); - } - catch (const std::out_of_range&) - { - assert(pos1 > s.size() || pos2 > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.compare(pos1, n1, str, pos2, n2); + assert(false); + } catch (const std::out_of_range&) { + assert(pos1 > s.size() || pos2 > str.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void -test_npos(const S& s, typename S::size_type pos1, typename S::size_type n1, - const S& str, typename S::size_type pos2, int x) -{ - if (pos1 <= s.size() && pos2 <= str.size()) - assert(sign(s.compare(pos1, n1, str, pos2)) == sign(x)); +TEST_CONSTEXPR_CXX20 void test_npos( + const S& s, typename S::size_type pos1, typename S::size_type n1, const S& str, typename S::size_type pos2, int x) { + if (pos1 <= s.size() && pos2 <= str.size()) + assert(sign(s.compare(pos1, n1, str, pos2)) == sign(x)); #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, str, pos2); - assert(false); - } - catch (const std::out_of_range&) - { - assert(pos1 > s.size() || pos2 > str.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.compare(pos1, n1, str, pos2); + assert(false); + } catch (const std::out_of_range&) { + assert(pos1 > s.size() || pos2 > str.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 bool test0() -{ - test(S(""), 0, 0, S(""), 0, 0, 0); - test(S(""), 0, 0, S(""), 0, 1, 0); - test(S(""), 0, 0, S(""), 1, 0, 0); - test(S(""), 0, 0, S("abcde"), 0, 0, 0); - test(S(""), 0, 0, S("abcde"), 0, 1, -1); - test(S(""), 0, 0, S("abcde"), 0, 2, -2); - test(S(""), 0, 0, S("abcde"), 0, 4, -4); - test(S(""), 0, 0, S("abcde"), 0, 5, -5); - test(S(""), 0, 0, S("abcde"), 0, 6, -5); - test(S(""), 0, 0, S("abcde"), 1, 0, 0); - test(S(""), 0, 0, S("abcde"), 1, 1, -1); - test(S(""), 0, 0, S("abcde"), 1, 2, -2); - test(S(""), 0, 0, S("abcde"), 1, 3, -3); - test(S(""), 0, 0, S("abcde"), 1, 4, -4); - test(S(""), 0, 0, S("abcde"), 1, 5, -4); - test(S(""), 0, 0, S("abcde"), 2, 0, 0); - test(S(""), 0, 0, S("abcde"), 2, 1, -1); - test(S(""), 0, 0, S("abcde"), 2, 2, -2); - test(S(""), 0, 0, S("abcde"), 2, 3, -3); - test(S(""), 0, 0, S("abcde"), 2, 4, -3); - test(S(""), 0, 0, S("abcde"), 4, 0, 0); - test(S(""), 0, 0, S("abcde"), 4, 1, -1); - test(S(""), 0, 0, S("abcde"), 4, 2, -1); - test(S(""), 0, 0, S("abcde"), 5, 0, 0); - test(S(""), 0, 0, S("abcde"), 5, 1, 0); - test(S(""), 0, 0, S("abcde"), 6, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 0, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 0, 1, -1); - test(S(""), 0, 0, S("abcdefghij"), 0, 5, -5); - test(S(""), 0, 0, S("abcdefghij"), 0, 9, -9); - test(S(""), 0, 0, S("abcdefghij"), 0, 10, -10); - test(S(""), 0, 0, S("abcdefghij"), 0, 11, -10); - test(S(""), 0, 0, S("abcdefghij"), 1, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 1, 1, -1); - test(S(""), 0, 0, S("abcdefghij"), 1, 4, -4); - test(S(""), 0, 0, S("abcdefghij"), 1, 8, -8); - test(S(""), 0, 0, S("abcdefghij"), 1, 9, -9); - test(S(""), 0, 0, S("abcdefghij"), 1, 10, -9); - test(S(""), 0, 0, S("abcdefghij"), 5, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 5, 1, -1); - test(S(""), 0, 0, S("abcdefghij"), 5, 2, -2); - test(S(""), 0, 0, S("abcdefghij"), 5, 4, -4); - test(S(""), 0, 0, S("abcdefghij"), 5, 5, -5); - test(S(""), 0, 0, S("abcdefghij"), 5, 6, -5); - test(S(""), 0, 0, S("abcdefghij"), 9, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 9, 1, -1); - test(S(""), 0, 0, S("abcdefghij"), 9, 2, -1); - test(S(""), 0, 0, S("abcdefghij"), 10, 0, 0); - test(S(""), 0, 0, S("abcdefghij"), 10, 1, 0); - test(S(""), 0, 0, S("abcdefghij"), 11, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S(""), 0, 1, S(""), 0, 0, 0); - test(S(""), 0, 1, S(""), 0, 1, 0); - test(S(""), 0, 1, S(""), 1, 0, 0); - test(S(""), 0, 1, S("abcde"), 0, 0, 0); - test(S(""), 0, 1, S("abcde"), 0, 1, -1); - test(S(""), 0, 1, S("abcde"), 0, 2, -2); - test(S(""), 0, 1, S("abcde"), 0, 4, -4); - test(S(""), 0, 1, S("abcde"), 0, 5, -5); - test(S(""), 0, 1, S("abcde"), 0, 6, -5); - test(S(""), 0, 1, S("abcde"), 1, 0, 0); - test(S(""), 0, 1, S("abcde"), 1, 1, -1); - test(S(""), 0, 1, S("abcde"), 1, 2, -2); - test(S(""), 0, 1, S("abcde"), 1, 3, -3); - test(S(""), 0, 1, S("abcde"), 1, 4, -4); - test(S(""), 0, 1, S("abcde"), 1, 5, -4); - test(S(""), 0, 1, S("abcde"), 2, 0, 0); - test(S(""), 0, 1, S("abcde"), 2, 1, -1); - test(S(""), 0, 1, S("abcde"), 2, 2, -2); - test(S(""), 0, 1, S("abcde"), 2, 3, -3); - test(S(""), 0, 1, S("abcde"), 2, 4, -3); - test(S(""), 0, 1, S("abcde"), 4, 0, 0); - test(S(""), 0, 1, S("abcde"), 4, 1, -1); - test(S(""), 0, 1, S("abcde"), 4, 2, -1); - test(S(""), 0, 1, S("abcde"), 5, 0, 0); - test(S(""), 0, 1, S("abcde"), 5, 1, 0); - test(S(""), 0, 1, S("abcde"), 6, 0, 0); +TEST_CONSTEXPR_CXX20 bool test0() { + test(S(""), 0, 0, S(""), 0, 0, 0); + test(S(""), 0, 0, S(""), 0, 1, 0); + test(S(""), 0, 0, S(""), 1, 0, 0); + test(S(""), 0, 0, S("abcde"), 0, 0, 0); + test(S(""), 0, 0, S("abcde"), 0, 1, -1); + test(S(""), 0, 0, S("abcde"), 0, 2, -2); + test(S(""), 0, 0, S("abcde"), 0, 4, -4); + test(S(""), 0, 0, S("abcde"), 0, 5, -5); + test(S(""), 0, 0, S("abcde"), 0, 6, -5); + test(S(""), 0, 0, S("abcde"), 1, 0, 0); + test(S(""), 0, 0, S("abcde"), 1, 1, -1); + test(S(""), 0, 0, S("abcde"), 1, 2, -2); + test(S(""), 0, 0, S("abcde"), 1, 3, -3); + test(S(""), 0, 0, S("abcde"), 1, 4, -4); + test(S(""), 0, 0, S("abcde"), 1, 5, -4); + test(S(""), 0, 0, S("abcde"), 2, 0, 0); + test(S(""), 0, 0, S("abcde"), 2, 1, -1); + test(S(""), 0, 0, S("abcde"), 2, 2, -2); + test(S(""), 0, 0, S("abcde"), 2, 3, -3); + test(S(""), 0, 0, S("abcde"), 2, 4, -3); + test(S(""), 0, 0, S("abcde"), 4, 0, 0); + test(S(""), 0, 0, S("abcde"), 4, 1, -1); + test(S(""), 0, 0, S("abcde"), 4, 2, -1); + test(S(""), 0, 0, S("abcde"), 5, 0, 0); + test(S(""), 0, 0, S("abcde"), 5, 1, 0); + test(S(""), 0, 0, S("abcde"), 6, 0, 0); + test(S(""), 0, 0, S("abcdefghij"), 0, 0, 0); + test(S(""), 0, 0, S("abcdefghij"), 0, 1, -1); + test(S(""), 0, 0, S("abcdefghij"), 0, 5, -5); + test(S(""), 0, 0, S("abcdefghij"), 0, 9, -9); + test(S(""), 0, 0, S("abcdefghij"), 0, 10, -10); + test(S(""), 0, 0, S("abcdefghij"), 0, 11, -10); + test(S(""), 0, 0, S("abcdefghij"), 1, 0, 0); + test(S(""), 0, 0, S("abcdefghij"), 1, 1, -1); + test(S(""), 0, 0, S("abcdefghij"), 1, 4, -4); + test(S(""), 0, 0, S("abcdefghij"), 1, 8, -8); + test(S(""), 0, 0, S("abcdefghij"), 1, 9, -9); + test(S(""), 0, 0, S("abcdefghij"), 1, 10, -9); + test(S(""), 0, 0, S("abcdefghij"), 5, 0, 0); + test(S(""), 0, 0, S("abcdefghij"), 5, 1, -1); + test(S(""), 0, 0, S("abcdefghij"), 5, 2, -2); + test(S(""), 0, 0, S("abcdefghij"), 5, 4, -4); + test(S(""), 0, 0, S("abcdefghij"), 5, 5, -5); + test(S(""), 0, 0, S("abcdefghij"), 5, 6, -5); + test(S(""), 0, 0, S("abcdefghij"), 9, 0, 0); + test(S(""), 0, 0, S("abcdefghij"), 9, 1, -1); + test(S(""), 0, 0, S("abcdefghij"), 9, 2, -1); + test(S(""), 0, 0, S("abcdefghij"), 10, 0, 0); + test(S(""), 0, 0, S("abcdefghij"), 10, 1, 0); + test(S(""), 0, 0, S("abcdefghij"), 11, 0, 0); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S(""), 0, 1, S(""), 0, 0, 0); + test(S(""), 0, 1, S(""), 0, 1, 0); + test(S(""), 0, 1, S(""), 1, 0, 0); + test(S(""), 0, 1, S("abcde"), 0, 0, 0); + test(S(""), 0, 1, S("abcde"), 0, 1, -1); + test(S(""), 0, 1, S("abcde"), 0, 2, -2); + test(S(""), 0, 1, S("abcde"), 0, 4, -4); + test(S(""), 0, 1, S("abcde"), 0, 5, -5); + test(S(""), 0, 1, S("abcde"), 0, 6, -5); + test(S(""), 0, 1, S("abcde"), 1, 0, 0); + test(S(""), 0, 1, S("abcde"), 1, 1, -1); + test(S(""), 0, 1, S("abcde"), 1, 2, -2); + test(S(""), 0, 1, S("abcde"), 1, 3, -3); + test(S(""), 0, 1, S("abcde"), 1, 4, -4); + test(S(""), 0, 1, S("abcde"), 1, 5, -4); + test(S(""), 0, 1, S("abcde"), 2, 0, 0); + test(S(""), 0, 1, S("abcde"), 2, 1, -1); + test(S(""), 0, 1, S("abcde"), 2, 2, -2); + test(S(""), 0, 1, S("abcde"), 2, 3, -3); + test(S(""), 0, 1, S("abcde"), 2, 4, -3); + test(S(""), 0, 1, S("abcde"), 4, 0, 0); + test(S(""), 0, 1, S("abcde"), 4, 1, -1); + test(S(""), 0, 1, S("abcde"), 4, 2, -1); + test(S(""), 0, 1, S("abcde"), 5, 0, 0); + test(S(""), 0, 1, S("abcde"), 5, 1, 0); + test(S(""), 0, 1, S("abcde"), 6, 0, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test1() -{ - test(S(""), 0, 1, S("abcdefghij"), 0, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 0, 1, -1); - test(S(""), 0, 1, S("abcdefghij"), 0, 5, -5); - test(S(""), 0, 1, S("abcdefghij"), 0, 9, -9); - test(S(""), 0, 1, S("abcdefghij"), 0, 10, -10); - test(S(""), 0, 1, S("abcdefghij"), 0, 11, -10); - test(S(""), 0, 1, S("abcdefghij"), 1, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 1, 1, -1); - test(S(""), 0, 1, S("abcdefghij"), 1, 4, -4); - test(S(""), 0, 1, S("abcdefghij"), 1, 8, -8); - test(S(""), 0, 1, S("abcdefghij"), 1, 9, -9); - test(S(""), 0, 1, S("abcdefghij"), 1, 10, -9); - test(S(""), 0, 1, S("abcdefghij"), 5, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 5, 1, -1); - test(S(""), 0, 1, S("abcdefghij"), 5, 2, -2); - test(S(""), 0, 1, S("abcdefghij"), 5, 4, -4); - test(S(""), 0, 1, S("abcdefghij"), 5, 5, -5); - test(S(""), 0, 1, S("abcdefghij"), 5, 6, -5); - test(S(""), 0, 1, S("abcdefghij"), 9, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 9, 1, -1); - test(S(""), 0, 1, S("abcdefghij"), 9, 2, -1); - test(S(""), 0, 1, S("abcdefghij"), 10, 0, 0); - test(S(""), 0, 1, S("abcdefghij"), 10, 1, 0); - test(S(""), 0, 1, S("abcdefghij"), 11, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S(""), 1, 0, S(""), 0, 0, 0); - test(S(""), 1, 0, S(""), 0, 1, 0); - test(S(""), 1, 0, S(""), 1, 0, 0); - test(S(""), 1, 0, S("abcde"), 0, 0, 0); - test(S(""), 1, 0, S("abcde"), 0, 1, 0); - test(S(""), 1, 0, S("abcde"), 0, 2, 0); - test(S(""), 1, 0, S("abcde"), 0, 4, 0); - test(S(""), 1, 0, S("abcde"), 0, 5, 0); - test(S(""), 1, 0, S("abcde"), 0, 6, 0); - test(S(""), 1, 0, S("abcde"), 1, 0, 0); - test(S(""), 1, 0, S("abcde"), 1, 1, 0); - test(S(""), 1, 0, S("abcde"), 1, 2, 0); - test(S(""), 1, 0, S("abcde"), 1, 3, 0); - test(S(""), 1, 0, S("abcde"), 1, 4, 0); - test(S(""), 1, 0, S("abcde"), 1, 5, 0); - test(S(""), 1, 0, S("abcde"), 2, 0, 0); - test(S(""), 1, 0, S("abcde"), 2, 1, 0); - test(S(""), 1, 0, S("abcde"), 2, 2, 0); - test(S(""), 1, 0, S("abcde"), 2, 3, 0); - test(S(""), 1, 0, S("abcde"), 2, 4, 0); - test(S(""), 1, 0, S("abcde"), 4, 0, 0); - test(S(""), 1, 0, S("abcde"), 4, 1, 0); - test(S(""), 1, 0, S("abcde"), 4, 2, 0); - test(S(""), 1, 0, S("abcde"), 5, 0, 0); - test(S(""), 1, 0, S("abcde"), 5, 1, 0); - test(S(""), 1, 0, S("abcde"), 6, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 5, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 9, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 10, 0); - test(S(""), 1, 0, S("abcdefghij"), 0, 11, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 4, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 8, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 9, 0); - test(S(""), 1, 0, S("abcdefghij"), 1, 10, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 2, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 4, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 5, 0); - test(S(""), 1, 0, S("abcdefghij"), 5, 6, 0); - test(S(""), 1, 0, S("abcdefghij"), 9, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 9, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 9, 2, 0); - test(S(""), 1, 0, S("abcdefghij"), 10, 0, 0); - test(S(""), 1, 0, S("abcdefghij"), 10, 1, 0); - test(S(""), 1, 0, S("abcdefghij"), 11, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); +TEST_CONSTEXPR_CXX20 bool test1() { + test(S(""), 0, 1, S("abcdefghij"), 0, 0, 0); + test(S(""), 0, 1, S("abcdefghij"), 0, 1, -1); + test(S(""), 0, 1, S("abcdefghij"), 0, 5, -5); + test(S(""), 0, 1, S("abcdefghij"), 0, 9, -9); + test(S(""), 0, 1, S("abcdefghij"), 0, 10, -10); + test(S(""), 0, 1, S("abcdefghij"), 0, 11, -10); + test(S(""), 0, 1, S("abcdefghij"), 1, 0, 0); + test(S(""), 0, 1, S("abcdefghij"), 1, 1, -1); + test(S(""), 0, 1, S("abcdefghij"), 1, 4, -4); + test(S(""), 0, 1, S("abcdefghij"), 1, 8, -8); + test(S(""), 0, 1, S("abcdefghij"), 1, 9, -9); + test(S(""), 0, 1, S("abcdefghij"), 1, 10, -9); + test(S(""), 0, 1, S("abcdefghij"), 5, 0, 0); + test(S(""), 0, 1, S("abcdefghij"), 5, 1, -1); + test(S(""), 0, 1, S("abcdefghij"), 5, 2, -2); + test(S(""), 0, 1, S("abcdefghij"), 5, 4, -4); + test(S(""), 0, 1, S("abcdefghij"), 5, 5, -5); + test(S(""), 0, 1, S("abcdefghij"), 5, 6, -5); + test(S(""), 0, 1, S("abcdefghij"), 9, 0, 0); + test(S(""), 0, 1, S("abcdefghij"), 9, 1, -1); + test(S(""), 0, 1, S("abcdefghij"), 9, 2, -1); + test(S(""), 0, 1, S("abcdefghij"), 10, 0, 0); + test(S(""), 0, 1, S("abcdefghij"), 10, 1, 0); + test(S(""), 0, 1, S("abcdefghij"), 11, 0, 0); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S(""), 1, 0, S(""), 0, 0, 0); + test(S(""), 1, 0, S(""), 0, 1, 0); + test(S(""), 1, 0, S(""), 1, 0, 0); + test(S(""), 1, 0, S("abcde"), 0, 0, 0); + test(S(""), 1, 0, S("abcde"), 0, 1, 0); + test(S(""), 1, 0, S("abcde"), 0, 2, 0); + test(S(""), 1, 0, S("abcde"), 0, 4, 0); + test(S(""), 1, 0, S("abcde"), 0, 5, 0); + test(S(""), 1, 0, S("abcde"), 0, 6, 0); + test(S(""), 1, 0, S("abcde"), 1, 0, 0); + test(S(""), 1, 0, S("abcde"), 1, 1, 0); + test(S(""), 1, 0, S("abcde"), 1, 2, 0); + test(S(""), 1, 0, S("abcde"), 1, 3, 0); + test(S(""), 1, 0, S("abcde"), 1, 4, 0); + test(S(""), 1, 0, S("abcde"), 1, 5, 0); + test(S(""), 1, 0, S("abcde"), 2, 0, 0); + test(S(""), 1, 0, S("abcde"), 2, 1, 0); + test(S(""), 1, 0, S("abcde"), 2, 2, 0); + test(S(""), 1, 0, S("abcde"), 2, 3, 0); + test(S(""), 1, 0, S("abcde"), 2, 4, 0); + test(S(""), 1, 0, S("abcde"), 4, 0, 0); + test(S(""), 1, 0, S("abcde"), 4, 1, 0); + test(S(""), 1, 0, S("abcde"), 4, 2, 0); + test(S(""), 1, 0, S("abcde"), 5, 0, 0); + test(S(""), 1, 0, S("abcde"), 5, 1, 0); + test(S(""), 1, 0, S("abcde"), 6, 0, 0); + test(S(""), 1, 0, S("abcdefghij"), 0, 0, 0); + test(S(""), 1, 0, S("abcdefghij"), 0, 1, 0); + test(S(""), 1, 0, S("abcdefghij"), 0, 5, 0); + test(S(""), 1, 0, S("abcdefghij"), 0, 9, 0); + test(S(""), 1, 0, S("abcdefghij"), 0, 10, 0); + test(S(""), 1, 0, S("abcdefghij"), 0, 11, 0); + test(S(""), 1, 0, S("abcdefghij"), 1, 0, 0); + test(S(""), 1, 0, S("abcdefghij"), 1, 1, 0); + test(S(""), 1, 0, S("abcdefghij"), 1, 4, 0); + test(S(""), 1, 0, S("abcdefghij"), 1, 8, 0); + test(S(""), 1, 0, S("abcdefghij"), 1, 9, 0); + test(S(""), 1, 0, S("abcdefghij"), 1, 10, 0); + test(S(""), 1, 0, S("abcdefghij"), 5, 0, 0); + test(S(""), 1, 0, S("abcdefghij"), 5, 1, 0); + test(S(""), 1, 0, S("abcdefghij"), 5, 2, 0); + test(S(""), 1, 0, S("abcdefghij"), 5, 4, 0); + test(S(""), 1, 0, S("abcdefghij"), 5, 5, 0); + test(S(""), 1, 0, S("abcdefghij"), 5, 6, 0); + test(S(""), 1, 0, S("abcdefghij"), 9, 0, 0); + test(S(""), 1, 0, S("abcdefghij"), 9, 1, 0); + test(S(""), 1, 0, S("abcdefghij"), 9, 2, 0); + test(S(""), 1, 0, S("abcdefghij"), 10, 0, 0); + test(S(""), 1, 0, S("abcdefghij"), 10, 1, 0); + test(S(""), 1, 0, S("abcdefghij"), 11, 0, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test2() -{ - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 0, S(""), 0, 0, 0); - test(S("abcde"), 0, 0, S(""), 0, 1, 0); - test(S("abcde"), 0, 0, S(""), 1, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 0, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 0, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 0, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 0, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 0, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 0, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 0, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 0, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 0, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 0, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 0, 0, S("abcde"), 2, 4, -3); - test(S("abcde"), 0, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 0, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 0, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 0, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 0, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 0, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 0, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 0, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 0, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 1, S(""), 0, 0, 1); - test(S("abcde"), 0, 1, S(""), 0, 1, 1); - test(S("abcde"), 0, 1, S(""), 1, 0, 0); - test(S("abcde"), 0, 1, S("abcde"), 0, 0, 1); +TEST_CONSTEXPR_CXX20 bool test2() { + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 0, S(""), 0, 0, 0); + test(S("abcde"), 0, 0, S(""), 0, 1, 0); + test(S("abcde"), 0, 0, S(""), 1, 0, 0); + test(S("abcde"), 0, 0, S("abcde"), 0, 0, 0); + test(S("abcde"), 0, 0, S("abcde"), 0, 1, -1); + test(S("abcde"), 0, 0, S("abcde"), 0, 2, -2); + test(S("abcde"), 0, 0, S("abcde"), 0, 4, -4); + test(S("abcde"), 0, 0, S("abcde"), 0, 5, -5); + test(S("abcde"), 0, 0, S("abcde"), 0, 6, -5); + test(S("abcde"), 0, 0, S("abcde"), 1, 0, 0); + test(S("abcde"), 0, 0, S("abcde"), 1, 1, -1); + test(S("abcde"), 0, 0, S("abcde"), 1, 2, -2); + test(S("abcde"), 0, 0, S("abcde"), 1, 3, -3); + test(S("abcde"), 0, 0, S("abcde"), 1, 4, -4); + test(S("abcde"), 0, 0, S("abcde"), 1, 5, -4); + test(S("abcde"), 0, 0, S("abcde"), 2, 0, 0); + test(S("abcde"), 0, 0, S("abcde"), 2, 1, -1); + test(S("abcde"), 0, 0, S("abcde"), 2, 2, -2); + test(S("abcde"), 0, 0, S("abcde"), 2, 3, -3); + test(S("abcde"), 0, 0, S("abcde"), 2, 4, -3); + test(S("abcde"), 0, 0, S("abcde"), 4, 0, 0); + test(S("abcde"), 0, 0, S("abcde"), 4, 1, -1); + test(S("abcde"), 0, 0, S("abcde"), 4, 2, -1); + test(S("abcde"), 0, 0, S("abcde"), 5, 0, 0); + test(S("abcde"), 0, 0, S("abcde"), 5, 1, 0); + test(S("abcde"), 0, 0, S("abcde"), 6, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcde"), 0, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcde"), 0, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcde"), 0, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcde"), 0, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcde"), 0, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcde"), 0, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcde"), 0, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcde"), 0, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcde"), 0, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcde"), 0, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcde"), 0, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 0, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcde"), 0, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcde"), 0, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcde"), 0, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 1, S(""), 0, 0, 1); + test(S("abcde"), 0, 1, S(""), 0, 1, 1); + test(S("abcde"), 0, 1, S(""), 1, 0, 0); + test(S("abcde"), 0, 1, S("abcde"), 0, 0, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test3() -{ - test(S("abcde"), 0, 1, S("abcde"), 0, 1, 0); - test(S("abcde"), 0, 1, S("abcde"), 0, 2, -1); - test(S("abcde"), 0, 1, S("abcde"), 0, 4, -3); - test(S("abcde"), 0, 1, S("abcde"), 0, 5, -4); - test(S("abcde"), 0, 1, S("abcde"), 0, 6, -4); - test(S("abcde"), 0, 1, S("abcde"), 1, 0, 1); - test(S("abcde"), 0, 1, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 1, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 1, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 1, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 1, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 1, S("abcde"), 2, 0, 1); - test(S("abcde"), 0, 1, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 1, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 1, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 1, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 1, S("abcde"), 4, 0, 1); - test(S("abcde"), 0, 1, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 1, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 1, S("abcde"), 5, 0, 1); - test(S("abcde"), 0, 1, S("abcde"), 5, 1, 1); - test(S("abcde"), 0, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 1, 0); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 5, -4); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 9, -8); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 10, -9); - test(S("abcde"), 0, 1, S("abcdefghij"), 0, 11, -9); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 1, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 0, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 2, S(""), 0, 0, 2); - test(S("abcde"), 0, 2, S(""), 0, 1, 2); - test(S("abcde"), 0, 2, S(""), 1, 0, 0); - test(S("abcde"), 0, 2, S("abcde"), 0, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 0, 1, 1); - test(S("abcde"), 0, 2, S("abcde"), 0, 2, 0); - test(S("abcde"), 0, 2, S("abcde"), 0, 4, -2); - test(S("abcde"), 0, 2, S("abcde"), 0, 5, -3); - test(S("abcde"), 0, 2, S("abcde"), 0, 6, -3); - test(S("abcde"), 0, 2, S("abcde"), 1, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 2, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 2, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 2, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 2, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 2, S("abcde"), 2, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 2, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 2, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 2, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 2, S("abcde"), 4, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 2, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 2, S("abcde"), 5, 0, 2); - test(S("abcde"), 0, 2, S("abcde"), 5, 1, 2); - test(S("abcde"), 0, 2, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 5, -3); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 9, -7); +TEST_CONSTEXPR_CXX20 bool test3() { + test(S("abcde"), 0, 1, S("abcde"), 0, 1, 0); + test(S("abcde"), 0, 1, S("abcde"), 0, 2, -1); + test(S("abcde"), 0, 1, S("abcde"), 0, 4, -3); + test(S("abcde"), 0, 1, S("abcde"), 0, 5, -4); + test(S("abcde"), 0, 1, S("abcde"), 0, 6, -4); + test(S("abcde"), 0, 1, S("abcde"), 1, 0, 1); + test(S("abcde"), 0, 1, S("abcde"), 1, 1, -1); + test(S("abcde"), 0, 1, S("abcde"), 1, 2, -1); + test(S("abcde"), 0, 1, S("abcde"), 1, 3, -1); + test(S("abcde"), 0, 1, S("abcde"), 1, 4, -1); + test(S("abcde"), 0, 1, S("abcde"), 1, 5, -1); + test(S("abcde"), 0, 1, S("abcde"), 2, 0, 1); + test(S("abcde"), 0, 1, S("abcde"), 2, 1, -2); + test(S("abcde"), 0, 1, S("abcde"), 2, 2, -2); + test(S("abcde"), 0, 1, S("abcde"), 2, 3, -2); + test(S("abcde"), 0, 1, S("abcde"), 2, 4, -2); + test(S("abcde"), 0, 1, S("abcde"), 4, 0, 1); + test(S("abcde"), 0, 1, S("abcde"), 4, 1, -4); + test(S("abcde"), 0, 1, S("abcde"), 4, 2, -4); + test(S("abcde"), 0, 1, S("abcde"), 5, 0, 1); + test(S("abcde"), 0, 1, S("abcde"), 5, 1, 1); + test(S("abcde"), 0, 1, S("abcde"), 6, 0, 0); + test(S("abcde"), 0, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghij"), 0, 1, 0); + test(S("abcde"), 0, 1, S("abcdefghij"), 0, 5, -4); + test(S("abcde"), 0, 1, S("abcdefghij"), 0, 9, -8); + test(S("abcde"), 0, 1, S("abcdefghij"), 0, 10, -9); + test(S("abcde"), 0, 1, S("abcdefghij"), 0, 11, -9); + test(S("abcde"), 0, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 1, S("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 1, S("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 1, S("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 1, S("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 1, S("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 1, S("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 1, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 1, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 1, S("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcde"), 0, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 2, S(""), 0, 0, 2); + test(S("abcde"), 0, 2, S(""), 0, 1, 2); + test(S("abcde"), 0, 2, S(""), 1, 0, 0); + test(S("abcde"), 0, 2, S("abcde"), 0, 0, 2); + test(S("abcde"), 0, 2, S("abcde"), 0, 1, 1); + test(S("abcde"), 0, 2, S("abcde"), 0, 2, 0); + test(S("abcde"), 0, 2, S("abcde"), 0, 4, -2); + test(S("abcde"), 0, 2, S("abcde"), 0, 5, -3); + test(S("abcde"), 0, 2, S("abcde"), 0, 6, -3); + test(S("abcde"), 0, 2, S("abcde"), 1, 0, 2); + test(S("abcde"), 0, 2, S("abcde"), 1, 1, -1); + test(S("abcde"), 0, 2, S("abcde"), 1, 2, -1); + test(S("abcde"), 0, 2, S("abcde"), 1, 3, -1); + test(S("abcde"), 0, 2, S("abcde"), 1, 4, -1); + test(S("abcde"), 0, 2, S("abcde"), 1, 5, -1); + test(S("abcde"), 0, 2, S("abcde"), 2, 0, 2); + test(S("abcde"), 0, 2, S("abcde"), 2, 1, -2); + test(S("abcde"), 0, 2, S("abcde"), 2, 2, -2); + test(S("abcde"), 0, 2, S("abcde"), 2, 3, -2); + test(S("abcde"), 0, 2, S("abcde"), 2, 4, -2); + test(S("abcde"), 0, 2, S("abcde"), 4, 0, 2); + test(S("abcde"), 0, 2, S("abcde"), 4, 1, -4); + test(S("abcde"), 0, 2, S("abcde"), 4, 2, -4); + test(S("abcde"), 0, 2, S("abcde"), 5, 0, 2); + test(S("abcde"), 0, 2, S("abcde"), 5, 1, 2); + test(S("abcde"), 0, 2, S("abcde"), 6, 0, 0); + test(S("abcde"), 0, 2, S("abcdefghij"), 0, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghij"), 0, 1, 1); + test(S("abcde"), 0, 2, S("abcdefghij"), 0, 5, -3); + test(S("abcde"), 0, 2, S("abcdefghij"), 0, 9, -7); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test4() -{ - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 10, -8); - test(S("abcde"), 0, 2, S("abcdefghij"), 0, 11, -8); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 2, S("abcdefghij"), 9, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 2, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 2, S("abcdefghij"), 10, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 10, 1, 2); - test(S("abcde"), 0, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 10, -8); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 19, -17); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 20, -18); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 21, -18); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 4, S(""), 0, 0, 4); - test(S("abcde"), 0, 4, S(""), 0, 1, 4); - test(S("abcde"), 0, 4, S(""), 1, 0, 0); - test(S("abcde"), 0, 4, S("abcde"), 0, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 0, 1, 3); - test(S("abcde"), 0, 4, S("abcde"), 0, 2, 2); - test(S("abcde"), 0, 4, S("abcde"), 0, 4, 0); - test(S("abcde"), 0, 4, S("abcde"), 0, 5, -1); - test(S("abcde"), 0, 4, S("abcde"), 0, 6, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 4, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 4, S("abcde"), 2, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 4, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 4, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 4, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 4, S("abcde"), 4, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 4, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 4, S("abcde"), 5, 0, 4); - test(S("abcde"), 0, 4, S("abcde"), 5, 1, 4); - test(S("abcde"), 0, 4, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 1, 3); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 5, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 9, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 10, -6); - test(S("abcde"), 0, 4, S("abcdefghij"), 0, 11, -6); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 4, S("abcdefghij"), 9, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 4, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 4, S("abcdefghij"), 10, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 10, 1, 4); - test(S("abcde"), 0, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 1, 3); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 10, -6); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 19, -15); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 20, -16); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 21, -16); +TEST_CONSTEXPR_CXX20 bool test4() { + test(S("abcde"), 0, 2, S("abcdefghij"), 0, 10, -8); + test(S("abcde"), 0, 2, S("abcdefghij"), 0, 11, -8); + test(S("abcde"), 0, 2, S("abcdefghij"), 1, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 2, S("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 2, S("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 2, S("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 2, S("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 2, S("abcdefghij"), 5, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 2, S("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 2, S("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 2, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 2, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 2, S("abcdefghij"), 9, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 2, S("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 2, S("abcdefghij"), 10, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghij"), 10, 1, 2); + test(S("abcde"), 0, 2, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 10, -8); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 19, -17); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 20, -18); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 21, -18); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); + test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 4, S(""), 0, 0, 4); + test(S("abcde"), 0, 4, S(""), 0, 1, 4); + test(S("abcde"), 0, 4, S(""), 1, 0, 0); + test(S("abcde"), 0, 4, S("abcde"), 0, 0, 4); + test(S("abcde"), 0, 4, S("abcde"), 0, 1, 3); + test(S("abcde"), 0, 4, S("abcde"), 0, 2, 2); + test(S("abcde"), 0, 4, S("abcde"), 0, 4, 0); + test(S("abcde"), 0, 4, S("abcde"), 0, 5, -1); + test(S("abcde"), 0, 4, S("abcde"), 0, 6, -1); + test(S("abcde"), 0, 4, S("abcde"), 1, 0, 4); + test(S("abcde"), 0, 4, S("abcde"), 1, 1, -1); + test(S("abcde"), 0, 4, S("abcde"), 1, 2, -1); + test(S("abcde"), 0, 4, S("abcde"), 1, 3, -1); + test(S("abcde"), 0, 4, S("abcde"), 1, 4, -1); + test(S("abcde"), 0, 4, S("abcde"), 1, 5, -1); + test(S("abcde"), 0, 4, S("abcde"), 2, 0, 4); + test(S("abcde"), 0, 4, S("abcde"), 2, 1, -2); + test(S("abcde"), 0, 4, S("abcde"), 2, 2, -2); + test(S("abcde"), 0, 4, S("abcde"), 2, 3, -2); + test(S("abcde"), 0, 4, S("abcde"), 2, 4, -2); + test(S("abcde"), 0, 4, S("abcde"), 4, 0, 4); + test(S("abcde"), 0, 4, S("abcde"), 4, 1, -4); + test(S("abcde"), 0, 4, S("abcde"), 4, 2, -4); + test(S("abcde"), 0, 4, S("abcde"), 5, 0, 4); + test(S("abcde"), 0, 4, S("abcde"), 5, 1, 4); + test(S("abcde"), 0, 4, S("abcde"), 6, 0, 0); + test(S("abcde"), 0, 4, S("abcdefghij"), 0, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghij"), 0, 1, 3); + test(S("abcde"), 0, 4, S("abcdefghij"), 0, 5, -1); + test(S("abcde"), 0, 4, S("abcdefghij"), 0, 9, -5); + test(S("abcde"), 0, 4, S("abcdefghij"), 0, 10, -6); + test(S("abcde"), 0, 4, S("abcdefghij"), 0, 11, -6); + test(S("abcde"), 0, 4, S("abcdefghij"), 1, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 4, S("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 4, S("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 4, S("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 4, S("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 4, S("abcdefghij"), 5, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 4, S("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 4, S("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 4, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 4, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 4, S("abcdefghij"), 9, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 4, S("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 4, S("abcdefghij"), 10, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghij"), 10, 1, 4); + test(S("abcde"), 0, 4, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 1, 3); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 10, -6); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 19, -15); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 20, -16); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 21, -16); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test5() -{ - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 5, S(""), 0, 0, 5); - test(S("abcde"), 0, 5, S(""), 0, 1, 5); - test(S("abcde"), 0, 5, S(""), 1, 0, 0); - test(S("abcde"), 0, 5, S("abcde"), 0, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 0, 1, 4); - test(S("abcde"), 0, 5, S("abcde"), 0, 2, 3); - test(S("abcde"), 0, 5, S("abcde"), 0, 4, 1); - test(S("abcde"), 0, 5, S("abcde"), 0, 5, 0); - test(S("abcde"), 0, 5, S("abcde"), 0, 6, 0); - test(S("abcde"), 0, 5, S("abcde"), 1, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 5, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 5, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 5, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 5, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 5, S("abcde"), 2, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 5, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 5, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 5, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 5, S("abcde"), 4, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 5, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 5, S("abcde"), 5, 0, 5); - test(S("abcde"), 0, 5, S("abcde"), 5, 1, 5); - test(S("abcde"), 0, 5, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 1, 4); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 5, 0); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 9, -4); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 10, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 0, 11, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 5, S("abcdefghij"), 9, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 5, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 5, S("abcdefghij"), 10, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 10, 1, 5); - test(S("abcde"), 0, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 0, 6, S(""), 0, 0, 5); - test(S("abcde"), 0, 6, S(""), 0, 1, 5); - test(S("abcde"), 0, 6, S(""), 1, 0, 0); - test(S("abcde"), 0, 6, S("abcde"), 0, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 0, 1, 4); - test(S("abcde"), 0, 6, S("abcde"), 0, 2, 3); - test(S("abcde"), 0, 6, S("abcde"), 0, 4, 1); - test(S("abcde"), 0, 6, S("abcde"), 0, 5, 0); +TEST_CONSTEXPR_CXX20 bool test5() { + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 5, S(""), 0, 0, 5); + test(S("abcde"), 0, 5, S(""), 0, 1, 5); + test(S("abcde"), 0, 5, S(""), 1, 0, 0); + test(S("abcde"), 0, 5, S("abcde"), 0, 0, 5); + test(S("abcde"), 0, 5, S("abcde"), 0, 1, 4); + test(S("abcde"), 0, 5, S("abcde"), 0, 2, 3); + test(S("abcde"), 0, 5, S("abcde"), 0, 4, 1); + test(S("abcde"), 0, 5, S("abcde"), 0, 5, 0); + test(S("abcde"), 0, 5, S("abcde"), 0, 6, 0); + test(S("abcde"), 0, 5, S("abcde"), 1, 0, 5); + test(S("abcde"), 0, 5, S("abcde"), 1, 1, -1); + test(S("abcde"), 0, 5, S("abcde"), 1, 2, -1); + test(S("abcde"), 0, 5, S("abcde"), 1, 3, -1); + test(S("abcde"), 0, 5, S("abcde"), 1, 4, -1); + test(S("abcde"), 0, 5, S("abcde"), 1, 5, -1); + test(S("abcde"), 0, 5, S("abcde"), 2, 0, 5); + test(S("abcde"), 0, 5, S("abcde"), 2, 1, -2); + test(S("abcde"), 0, 5, S("abcde"), 2, 2, -2); + test(S("abcde"), 0, 5, S("abcde"), 2, 3, -2); + test(S("abcde"), 0, 5, S("abcde"), 2, 4, -2); + test(S("abcde"), 0, 5, S("abcde"), 4, 0, 5); + test(S("abcde"), 0, 5, S("abcde"), 4, 1, -4); + test(S("abcde"), 0, 5, S("abcde"), 4, 2, -4); + test(S("abcde"), 0, 5, S("abcde"), 5, 0, 5); + test(S("abcde"), 0, 5, S("abcde"), 5, 1, 5); + test(S("abcde"), 0, 5, S("abcde"), 6, 0, 0); + test(S("abcde"), 0, 5, S("abcdefghij"), 0, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghij"), 0, 1, 4); + test(S("abcde"), 0, 5, S("abcdefghij"), 0, 5, 0); + test(S("abcde"), 0, 5, S("abcdefghij"), 0, 9, -4); + test(S("abcde"), 0, 5, S("abcdefghij"), 0, 10, -5); + test(S("abcde"), 0, 5, S("abcdefghij"), 0, 11, -5); + test(S("abcde"), 0, 5, S("abcdefghij"), 1, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 5, S("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 5, S("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 5, S("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 5, S("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 5, S("abcdefghij"), 5, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 5, S("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 5, S("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 5, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 5, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 5, S("abcdefghij"), 9, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 5, S("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 5, S("abcdefghij"), 10, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghij"), 10, 1, 5); + test(S("abcde"), 0, 5, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 0, 6, S(""), 0, 0, 5); + test(S("abcde"), 0, 6, S(""), 0, 1, 5); + test(S("abcde"), 0, 6, S(""), 1, 0, 0); + test(S("abcde"), 0, 6, S("abcde"), 0, 0, 5); + test(S("abcde"), 0, 6, S("abcde"), 0, 1, 4); + test(S("abcde"), 0, 6, S("abcde"), 0, 2, 3); + test(S("abcde"), 0, 6, S("abcde"), 0, 4, 1); + test(S("abcde"), 0, 6, S("abcde"), 0, 5, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test6() -{ - test(S("abcde"), 0, 6, S("abcde"), 0, 6, 0); - test(S("abcde"), 0, 6, S("abcde"), 1, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 1, 1, -1); - test(S("abcde"), 0, 6, S("abcde"), 1, 2, -1); - test(S("abcde"), 0, 6, S("abcde"), 1, 3, -1); - test(S("abcde"), 0, 6, S("abcde"), 1, 4, -1); - test(S("abcde"), 0, 6, S("abcde"), 1, 5, -1); - test(S("abcde"), 0, 6, S("abcde"), 2, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 2, 1, -2); - test(S("abcde"), 0, 6, S("abcde"), 2, 2, -2); - test(S("abcde"), 0, 6, S("abcde"), 2, 3, -2); - test(S("abcde"), 0, 6, S("abcde"), 2, 4, -2); - test(S("abcde"), 0, 6, S("abcde"), 4, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 4, 1, -4); - test(S("abcde"), 0, 6, S("abcde"), 4, 2, -4); - test(S("abcde"), 0, 6, S("abcde"), 5, 0, 5); - test(S("abcde"), 0, 6, S("abcde"), 5, 1, 5); - test(S("abcde"), 0, 6, S("abcde"), 6, 0, 0); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 1, 4); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 5, 0); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 9, -4); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 10, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 0, 11, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 8, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 9, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 1, 10, -1); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 1, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 2, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 4, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 0, 6, S("abcdefghij"), 9, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 9, 1, -9); - test(S("abcde"), 0, 6, S("abcdefghij"), 9, 2, -9); - test(S("abcde"), 0, 6, S("abcdefghij"), 10, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 10, 1, 5); - test(S("abcde"), 0, 6, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 0, S(""), 0, 0, 0); - test(S("abcde"), 1, 0, S(""), 0, 1, 0); - test(S("abcde"), 1, 0, S(""), 1, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 1, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 1, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 1, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 1, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 1, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 1, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 1, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 1, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 1, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 1, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 1, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 1, 0, S("abcde"), 2, 4, -3); - test(S("abcde"), 1, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 1, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 1, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 1, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 1, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 1, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 1, -1); +TEST_CONSTEXPR_CXX20 bool test6() { + test(S("abcde"), 0, 6, S("abcde"), 0, 6, 0); + test(S("abcde"), 0, 6, S("abcde"), 1, 0, 5); + test(S("abcde"), 0, 6, S("abcde"), 1, 1, -1); + test(S("abcde"), 0, 6, S("abcde"), 1, 2, -1); + test(S("abcde"), 0, 6, S("abcde"), 1, 3, -1); + test(S("abcde"), 0, 6, S("abcde"), 1, 4, -1); + test(S("abcde"), 0, 6, S("abcde"), 1, 5, -1); + test(S("abcde"), 0, 6, S("abcde"), 2, 0, 5); + test(S("abcde"), 0, 6, S("abcde"), 2, 1, -2); + test(S("abcde"), 0, 6, S("abcde"), 2, 2, -2); + test(S("abcde"), 0, 6, S("abcde"), 2, 3, -2); + test(S("abcde"), 0, 6, S("abcde"), 2, 4, -2); + test(S("abcde"), 0, 6, S("abcde"), 4, 0, 5); + test(S("abcde"), 0, 6, S("abcde"), 4, 1, -4); + test(S("abcde"), 0, 6, S("abcde"), 4, 2, -4); + test(S("abcde"), 0, 6, S("abcde"), 5, 0, 5); + test(S("abcde"), 0, 6, S("abcde"), 5, 1, 5); + test(S("abcde"), 0, 6, S("abcde"), 6, 0, 0); + test(S("abcde"), 0, 6, S("abcdefghij"), 0, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghij"), 0, 1, 4); + test(S("abcde"), 0, 6, S("abcdefghij"), 0, 5, 0); + test(S("abcde"), 0, 6, S("abcdefghij"), 0, 9, -4); + test(S("abcde"), 0, 6, S("abcdefghij"), 0, 10, -5); + test(S("abcde"), 0, 6, S("abcdefghij"), 0, 11, -5); + test(S("abcde"), 0, 6, S("abcdefghij"), 1, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 0, 6, S("abcdefghij"), 1, 4, -1); + test(S("abcde"), 0, 6, S("abcdefghij"), 1, 8, -1); + test(S("abcde"), 0, 6, S("abcdefghij"), 1, 9, -1); + test(S("abcde"), 0, 6, S("abcdefghij"), 1, 10, -1); + test(S("abcde"), 0, 6, S("abcdefghij"), 5, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghij"), 5, 1, -5); + test(S("abcde"), 0, 6, S("abcdefghij"), 5, 2, -5); + test(S("abcde"), 0, 6, S("abcdefghij"), 5, 4, -5); + test(S("abcde"), 0, 6, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 0, 6, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 0, 6, S("abcdefghij"), 9, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghij"), 9, 1, -9); + test(S("abcde"), 0, 6, S("abcdefghij"), 9, 2, -9); + test(S("abcde"), 0, 6, S("abcdefghij"), 10, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghij"), 10, 1, 5); + test(S("abcde"), 0, 6, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 10, -5); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 19, -14); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 20, -15); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 21, -15); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 0, S(""), 0, 0, 0); + test(S("abcde"), 1, 0, S(""), 0, 1, 0); + test(S("abcde"), 1, 0, S(""), 1, 0, 0); + test(S("abcde"), 1, 0, S("abcde"), 0, 0, 0); + test(S("abcde"), 1, 0, S("abcde"), 0, 1, -1); + test(S("abcde"), 1, 0, S("abcde"), 0, 2, -2); + test(S("abcde"), 1, 0, S("abcde"), 0, 4, -4); + test(S("abcde"), 1, 0, S("abcde"), 0, 5, -5); + test(S("abcde"), 1, 0, S("abcde"), 0, 6, -5); + test(S("abcde"), 1, 0, S("abcde"), 1, 0, 0); + test(S("abcde"), 1, 0, S("abcde"), 1, 1, -1); + test(S("abcde"), 1, 0, S("abcde"), 1, 2, -2); + test(S("abcde"), 1, 0, S("abcde"), 1, 3, -3); + test(S("abcde"), 1, 0, S("abcde"), 1, 4, -4); + test(S("abcde"), 1, 0, S("abcde"), 1, 5, -4); + test(S("abcde"), 1, 0, S("abcde"), 2, 0, 0); + test(S("abcde"), 1, 0, S("abcde"), 2, 1, -1); + test(S("abcde"), 1, 0, S("abcde"), 2, 2, -2); + test(S("abcde"), 1, 0, S("abcde"), 2, 3, -3); + test(S("abcde"), 1, 0, S("abcde"), 2, 4, -3); + test(S("abcde"), 1, 0, S("abcde"), 4, 0, 0); + test(S("abcde"), 1, 0, S("abcde"), 4, 1, -1); + test(S("abcde"), 1, 0, S("abcde"), 4, 2, -1); + test(S("abcde"), 1, 0, S("abcde"), 5, 0, 0); + test(S("abcde"), 1, 0, S("abcde"), 5, 1, 0); + test(S("abcde"), 1, 0, S("abcde"), 6, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcde"), 1, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcde"), 1, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcde"), 1, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcde"), 1, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcde"), 1, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghij"), 1, 1, -1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test7() -{ - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 1, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 1, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 1, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 1, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 1, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 1, S(""), 0, 0, 1); - test(S("abcde"), 1, 1, S(""), 0, 1, 1); - test(S("abcde"), 1, 1, S(""), 1, 0, 0); - test(S("abcde"), 1, 1, S("abcde"), 0, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 1, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 1, S("abcde"), 1, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 1, 1, 0); - test(S("abcde"), 1, 1, S("abcde"), 1, 2, -1); - test(S("abcde"), 1, 1, S("abcde"), 1, 3, -2); - test(S("abcde"), 1, 1, S("abcde"), 1, 4, -3); - test(S("abcde"), 1, 1, S("abcde"), 1, 5, -3); - test(S("abcde"), 1, 1, S("abcde"), 2, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 1, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 1, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 1, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 1, S("abcde"), 4, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 1, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 1, S("abcde"), 5, 0, 1); - test(S("abcde"), 1, 1, S("abcde"), 5, 1, 1); - test(S("abcde"), 1, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 1, 0); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 4, -3); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 8, -7); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 9, -8); - test(S("abcde"), 1, 1, S("abcdefghij"), 1, 10, -8); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 1, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 1, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); +TEST_CONSTEXPR_CXX20 bool test7() { + test(S("abcde"), 1, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcde"), 1, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcde"), 1, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcde"), 1, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcde"), 1, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcde"), 1, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcde"), 1, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 1, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 1, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcde"), 1, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcde"), 1, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcde"), 1, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 1, S(""), 0, 0, 1); + test(S("abcde"), 1, 1, S(""), 0, 1, 1); + test(S("abcde"), 1, 1, S(""), 1, 0, 0); + test(S("abcde"), 1, 1, S("abcde"), 0, 0, 1); + test(S("abcde"), 1, 1, S("abcde"), 0, 1, 1); + test(S("abcde"), 1, 1, S("abcde"), 0, 2, 1); + test(S("abcde"), 1, 1, S("abcde"), 0, 4, 1); + test(S("abcde"), 1, 1, S("abcde"), 0, 5, 1); + test(S("abcde"), 1, 1, S("abcde"), 0, 6, 1); + test(S("abcde"), 1, 1, S("abcde"), 1, 0, 1); + test(S("abcde"), 1, 1, S("abcde"), 1, 1, 0); + test(S("abcde"), 1, 1, S("abcde"), 1, 2, -1); + test(S("abcde"), 1, 1, S("abcde"), 1, 3, -2); + test(S("abcde"), 1, 1, S("abcde"), 1, 4, -3); + test(S("abcde"), 1, 1, S("abcde"), 1, 5, -3); + test(S("abcde"), 1, 1, S("abcde"), 2, 0, 1); + test(S("abcde"), 1, 1, S("abcde"), 2, 1, -1); + test(S("abcde"), 1, 1, S("abcde"), 2, 2, -1); + test(S("abcde"), 1, 1, S("abcde"), 2, 3, -1); + test(S("abcde"), 1, 1, S("abcde"), 2, 4, -1); + test(S("abcde"), 1, 1, S("abcde"), 4, 0, 1); + test(S("abcde"), 1, 1, S("abcde"), 4, 1, -3); + test(S("abcde"), 1, 1, S("abcde"), 4, 2, -3); + test(S("abcde"), 1, 1, S("abcde"), 5, 0, 1); + test(S("abcde"), 1, 1, S("abcde"), 5, 1, 1); + test(S("abcde"), 1, 1, S("abcde"), 6, 0, 0); + test(S("abcde"), 1, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 1, 1, 0); + test(S("abcde"), 1, 1, S("abcdefghij"), 1, 4, -3); + test(S("abcde"), 1, 1, S("abcdefghij"), 1, 8, -7); + test(S("abcde"), 1, 1, S("abcdefghij"), 1, 9, -8); + test(S("abcde"), 1, 1, S("abcdefghij"), 1, 10, -8); + test(S("abcde"), 1, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 1, S("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 1, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 1, S("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 1, S("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 1, S("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcde"), 1, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test8() -{ - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 2, S(""), 0, 0, 2); - test(S("abcde"), 1, 2, S(""), 0, 1, 2); - test(S("abcde"), 1, 2, S(""), 1, 0, 0); - test(S("abcde"), 1, 2, S("abcde"), 0, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 2, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 2, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 2, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 2, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 2, S("abcde"), 1, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 1, 1, 1); - test(S("abcde"), 1, 2, S("abcde"), 1, 2, 0); - test(S("abcde"), 1, 2, S("abcde"), 1, 3, -1); - test(S("abcde"), 1, 2, S("abcde"), 1, 4, -2); - test(S("abcde"), 1, 2, S("abcde"), 1, 5, -2); - test(S("abcde"), 1, 2, S("abcde"), 2, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 2, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 2, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 2, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 2, S("abcde"), 4, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 2, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 2, S("abcde"), 5, 0, 2); - test(S("abcde"), 1, 2, S("abcde"), 5, 1, 2); - test(S("abcde"), 1, 2, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 4, -2); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 8, -6); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 9, -7); - test(S("abcde"), 1, 2, S("abcdefghij"), 1, 10, -7); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 2, S("abcdefghij"), 9, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 2, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 2, S("abcdefghij"), 10, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 10, 1, 2); - test(S("abcde"), 1, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 9, -7); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 18, -16); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 19, -17); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 20, -17); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 3, S(""), 0, 0, 3); - test(S("abcde"), 1, 3, S(""), 0, 1, 3); - test(S("abcde"), 1, 3, S(""), 1, 0, 0); - test(S("abcde"), 1, 3, S("abcde"), 0, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 3, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 3, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 3, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 3, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 3, S("abcde"), 1, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 1, 1, 2); - test(S("abcde"), 1, 3, S("abcde"), 1, 2, 1); +TEST_CONSTEXPR_CXX20 bool test8() { + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 2, S(""), 0, 0, 2); + test(S("abcde"), 1, 2, S(""), 0, 1, 2); + test(S("abcde"), 1, 2, S(""), 1, 0, 0); + test(S("abcde"), 1, 2, S("abcde"), 0, 0, 2); + test(S("abcde"), 1, 2, S("abcde"), 0, 1, 1); + test(S("abcde"), 1, 2, S("abcde"), 0, 2, 1); + test(S("abcde"), 1, 2, S("abcde"), 0, 4, 1); + test(S("abcde"), 1, 2, S("abcde"), 0, 5, 1); + test(S("abcde"), 1, 2, S("abcde"), 0, 6, 1); + test(S("abcde"), 1, 2, S("abcde"), 1, 0, 2); + test(S("abcde"), 1, 2, S("abcde"), 1, 1, 1); + test(S("abcde"), 1, 2, S("abcde"), 1, 2, 0); + test(S("abcde"), 1, 2, S("abcde"), 1, 3, -1); + test(S("abcde"), 1, 2, S("abcde"), 1, 4, -2); + test(S("abcde"), 1, 2, S("abcde"), 1, 5, -2); + test(S("abcde"), 1, 2, S("abcde"), 2, 0, 2); + test(S("abcde"), 1, 2, S("abcde"), 2, 1, -1); + test(S("abcde"), 1, 2, S("abcde"), 2, 2, -1); + test(S("abcde"), 1, 2, S("abcde"), 2, 3, -1); + test(S("abcde"), 1, 2, S("abcde"), 2, 4, -1); + test(S("abcde"), 1, 2, S("abcde"), 4, 0, 2); + test(S("abcde"), 1, 2, S("abcde"), 4, 1, -3); + test(S("abcde"), 1, 2, S("abcde"), 4, 2, -3); + test(S("abcde"), 1, 2, S("abcde"), 5, 0, 2); + test(S("abcde"), 1, 2, S("abcde"), 5, 1, 2); + test(S("abcde"), 1, 2, S("abcde"), 6, 0, 0); + test(S("abcde"), 1, 2, S("abcdefghij"), 0, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 2, S("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 2, S("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 2, S("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 2, S("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 2, S("abcdefghij"), 1, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghij"), 1, 1, 1); + test(S("abcde"), 1, 2, S("abcdefghij"), 1, 4, -2); + test(S("abcde"), 1, 2, S("abcdefghij"), 1, 8, -6); + test(S("abcde"), 1, 2, S("abcdefghij"), 1, 9, -7); + test(S("abcde"), 1, 2, S("abcdefghij"), 1, 10, -7); + test(S("abcde"), 1, 2, S("abcdefghij"), 5, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 2, S("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 2, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 2, S("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 2, S("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 2, S("abcdefghij"), 9, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 2, S("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 2, S("abcdefghij"), 10, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghij"), 10, 1, 2); + test(S("abcde"), 1, 2, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 9, -7); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 18, -16); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 19, -17); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 20, -17); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); + test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 3, S(""), 0, 0, 3); + test(S("abcde"), 1, 3, S(""), 0, 1, 3); + test(S("abcde"), 1, 3, S(""), 1, 0, 0); + test(S("abcde"), 1, 3, S("abcde"), 0, 0, 3); + test(S("abcde"), 1, 3, S("abcde"), 0, 1, 1); + test(S("abcde"), 1, 3, S("abcde"), 0, 2, 1); + test(S("abcde"), 1, 3, S("abcde"), 0, 4, 1); + test(S("abcde"), 1, 3, S("abcde"), 0, 5, 1); + test(S("abcde"), 1, 3, S("abcde"), 0, 6, 1); + test(S("abcde"), 1, 3, S("abcde"), 1, 0, 3); + test(S("abcde"), 1, 3, S("abcde"), 1, 1, 2); + test(S("abcde"), 1, 3, S("abcde"), 1, 2, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test9() -{ - test(S("abcde"), 1, 3, S("abcde"), 1, 3, 0); - test(S("abcde"), 1, 3, S("abcde"), 1, 4, -1); - test(S("abcde"), 1, 3, S("abcde"), 1, 5, -1); - test(S("abcde"), 1, 3, S("abcde"), 2, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 3, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 3, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 3, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 3, S("abcde"), 4, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 3, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 3, S("abcde"), 5, 0, 3); - test(S("abcde"), 1, 3, S("abcde"), 5, 1, 3); - test(S("abcde"), 1, 3, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 1, 2); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 4, -1); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 8, -5); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 9, -6); - test(S("abcde"), 1, 3, S("abcdefghij"), 1, 10, -6); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 3, S("abcdefghij"), 9, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 3, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 3, S("abcdefghij"), 10, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 10, 1, 3); - test(S("abcde"), 1, 3, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 1, 2); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 9, -6); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 18, -15); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 19, -16); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 20, -16); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 4, S(""), 0, 0, 4); - test(S("abcde"), 1, 4, S(""), 0, 1, 4); - test(S("abcde"), 1, 4, S(""), 1, 0, 0); - test(S("abcde"), 1, 4, S("abcde"), 0, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 4, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 4, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 4, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 4, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 4, S("abcde"), 1, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 1, 1, 3); - test(S("abcde"), 1, 4, S("abcde"), 1, 2, 2); - test(S("abcde"), 1, 4, S("abcde"), 1, 3, 1); - test(S("abcde"), 1, 4, S("abcde"), 1, 4, 0); - test(S("abcde"), 1, 4, S("abcde"), 1, 5, 0); - test(S("abcde"), 1, 4, S("abcde"), 2, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 4, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 4, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 4, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 4, S("abcde"), 4, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 4, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 4, S("abcde"), 5, 0, 4); - test(S("abcde"), 1, 4, S("abcde"), 5, 1, 4); - test(S("abcde"), 1, 4, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 1, 3); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 4, 0); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 8, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 9, -5); - test(S("abcde"), 1, 4, S("abcdefghij"), 1, 10, -5); +TEST_CONSTEXPR_CXX20 bool test9() { + test(S("abcde"), 1, 3, S("abcde"), 1, 3, 0); + test(S("abcde"), 1, 3, S("abcde"), 1, 4, -1); + test(S("abcde"), 1, 3, S("abcde"), 1, 5, -1); + test(S("abcde"), 1, 3, S("abcde"), 2, 0, 3); + test(S("abcde"), 1, 3, S("abcde"), 2, 1, -1); + test(S("abcde"), 1, 3, S("abcde"), 2, 2, -1); + test(S("abcde"), 1, 3, S("abcde"), 2, 3, -1); + test(S("abcde"), 1, 3, S("abcde"), 2, 4, -1); + test(S("abcde"), 1, 3, S("abcde"), 4, 0, 3); + test(S("abcde"), 1, 3, S("abcde"), 4, 1, -3); + test(S("abcde"), 1, 3, S("abcde"), 4, 2, -3); + test(S("abcde"), 1, 3, S("abcde"), 5, 0, 3); + test(S("abcde"), 1, 3, S("abcde"), 5, 1, 3); + test(S("abcde"), 1, 3, S("abcde"), 6, 0, 0); + test(S("abcde"), 1, 3, S("abcdefghij"), 0, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 3, S("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 3, S("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 3, S("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 3, S("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 3, S("abcdefghij"), 1, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghij"), 1, 1, 2); + test(S("abcde"), 1, 3, S("abcdefghij"), 1, 4, -1); + test(S("abcde"), 1, 3, S("abcdefghij"), 1, 8, -5); + test(S("abcde"), 1, 3, S("abcdefghij"), 1, 9, -6); + test(S("abcde"), 1, 3, S("abcdefghij"), 1, 10, -6); + test(S("abcde"), 1, 3, S("abcdefghij"), 5, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 3, S("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 3, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 3, S("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 3, S("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 3, S("abcdefghij"), 9, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 3, S("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 3, S("abcdefghij"), 10, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghij"), 10, 1, 3); + test(S("abcde"), 1, 3, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 1, 2); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 9, -6); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 18, -15); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 19, -16); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 20, -16); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 0, 3); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 1, 3); + test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 4, S(""), 0, 0, 4); + test(S("abcde"), 1, 4, S(""), 0, 1, 4); + test(S("abcde"), 1, 4, S(""), 1, 0, 0); + test(S("abcde"), 1, 4, S("abcde"), 0, 0, 4); + test(S("abcde"), 1, 4, S("abcde"), 0, 1, 1); + test(S("abcde"), 1, 4, S("abcde"), 0, 2, 1); + test(S("abcde"), 1, 4, S("abcde"), 0, 4, 1); + test(S("abcde"), 1, 4, S("abcde"), 0, 5, 1); + test(S("abcde"), 1, 4, S("abcde"), 0, 6, 1); + test(S("abcde"), 1, 4, S("abcde"), 1, 0, 4); + test(S("abcde"), 1, 4, S("abcde"), 1, 1, 3); + test(S("abcde"), 1, 4, S("abcde"), 1, 2, 2); + test(S("abcde"), 1, 4, S("abcde"), 1, 3, 1); + test(S("abcde"), 1, 4, S("abcde"), 1, 4, 0); + test(S("abcde"), 1, 4, S("abcde"), 1, 5, 0); + test(S("abcde"), 1, 4, S("abcde"), 2, 0, 4); + test(S("abcde"), 1, 4, S("abcde"), 2, 1, -1); + test(S("abcde"), 1, 4, S("abcde"), 2, 2, -1); + test(S("abcde"), 1, 4, S("abcde"), 2, 3, -1); + test(S("abcde"), 1, 4, S("abcde"), 2, 4, -1); + test(S("abcde"), 1, 4, S("abcde"), 4, 0, 4); + test(S("abcde"), 1, 4, S("abcde"), 4, 1, -3); + test(S("abcde"), 1, 4, S("abcde"), 4, 2, -3); + test(S("abcde"), 1, 4, S("abcde"), 5, 0, 4); + test(S("abcde"), 1, 4, S("abcde"), 5, 1, 4); + test(S("abcde"), 1, 4, S("abcde"), 6, 0, 0); + test(S("abcde"), 1, 4, S("abcdefghij"), 0, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 4, S("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 4, S("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 4, S("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 4, S("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 4, S("abcdefghij"), 1, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghij"), 1, 1, 3); + test(S("abcde"), 1, 4, S("abcdefghij"), 1, 4, 0); + test(S("abcde"), 1, 4, S("abcdefghij"), 1, 8, -4); + test(S("abcde"), 1, 4, S("abcdefghij"), 1, 9, -5); + test(S("abcde"), 1, 4, S("abcdefghij"), 1, 10, -5); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test10() -{ - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 4, S("abcdefghij"), 9, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 4, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 4, S("abcdefghij"), 10, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 10, 1, 4); - test(S("abcde"), 1, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 1, 5, S(""), 0, 0, 4); - test(S("abcde"), 1, 5, S(""), 0, 1, 4); - test(S("abcde"), 1, 5, S(""), 1, 0, 0); - test(S("abcde"), 1, 5, S("abcde"), 0, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 0, 1, 1); - test(S("abcde"), 1, 5, S("abcde"), 0, 2, 1); - test(S("abcde"), 1, 5, S("abcde"), 0, 4, 1); - test(S("abcde"), 1, 5, S("abcde"), 0, 5, 1); - test(S("abcde"), 1, 5, S("abcde"), 0, 6, 1); - test(S("abcde"), 1, 5, S("abcde"), 1, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 1, 1, 3); - test(S("abcde"), 1, 5, S("abcde"), 1, 2, 2); - test(S("abcde"), 1, 5, S("abcde"), 1, 3, 1); - test(S("abcde"), 1, 5, S("abcde"), 1, 4, 0); - test(S("abcde"), 1, 5, S("abcde"), 1, 5, 0); - test(S("abcde"), 1, 5, S("abcde"), 2, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 2, 1, -1); - test(S("abcde"), 1, 5, S("abcde"), 2, 2, -1); - test(S("abcde"), 1, 5, S("abcde"), 2, 3, -1); - test(S("abcde"), 1, 5, S("abcde"), 2, 4, -1); - test(S("abcde"), 1, 5, S("abcde"), 4, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 4, 1, -3); - test(S("abcde"), 1, 5, S("abcde"), 4, 2, -3); - test(S("abcde"), 1, 5, S("abcde"), 5, 0, 4); - test(S("abcde"), 1, 5, S("abcde"), 5, 1, 4); - test(S("abcde"), 1, 5, S("abcde"), 6, 0, 0); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 1, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 5, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 9, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 10, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 0, 11, 1); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 1, 3); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 4, 0); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 8, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 9, -5); - test(S("abcde"), 1, 5, S("abcdefghij"), 1, 10, -5); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 1, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 2, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 5, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 5, 6, -4); - test(S("abcde"), 1, 5, S("abcdefghij"), 9, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 9, 1, -8); - test(S("abcde"), 1, 5, S("abcdefghij"), 9, 2, -8); - test(S("abcde"), 1, 5, S("abcdefghij"), 10, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 10, 1, 4); - test(S("abcde"), 1, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 1, -9); +TEST_CONSTEXPR_CXX20 bool test10() { + test(S("abcde"), 1, 4, S("abcdefghij"), 5, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 4, S("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 4, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 4, S("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 4, S("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 4, S("abcdefghij"), 9, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 4, S("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 4, S("abcdefghij"), 10, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghij"), 10, 1, 4); + test(S("abcde"), 1, 4, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 1, 5, S(""), 0, 0, 4); + test(S("abcde"), 1, 5, S(""), 0, 1, 4); + test(S("abcde"), 1, 5, S(""), 1, 0, 0); + test(S("abcde"), 1, 5, S("abcde"), 0, 0, 4); + test(S("abcde"), 1, 5, S("abcde"), 0, 1, 1); + test(S("abcde"), 1, 5, S("abcde"), 0, 2, 1); + test(S("abcde"), 1, 5, S("abcde"), 0, 4, 1); + test(S("abcde"), 1, 5, S("abcde"), 0, 5, 1); + test(S("abcde"), 1, 5, S("abcde"), 0, 6, 1); + test(S("abcde"), 1, 5, S("abcde"), 1, 0, 4); + test(S("abcde"), 1, 5, S("abcde"), 1, 1, 3); + test(S("abcde"), 1, 5, S("abcde"), 1, 2, 2); + test(S("abcde"), 1, 5, S("abcde"), 1, 3, 1); + test(S("abcde"), 1, 5, S("abcde"), 1, 4, 0); + test(S("abcde"), 1, 5, S("abcde"), 1, 5, 0); + test(S("abcde"), 1, 5, S("abcde"), 2, 0, 4); + test(S("abcde"), 1, 5, S("abcde"), 2, 1, -1); + test(S("abcde"), 1, 5, S("abcde"), 2, 2, -1); + test(S("abcde"), 1, 5, S("abcde"), 2, 3, -1); + test(S("abcde"), 1, 5, S("abcde"), 2, 4, -1); + test(S("abcde"), 1, 5, S("abcde"), 4, 0, 4); + test(S("abcde"), 1, 5, S("abcde"), 4, 1, -3); + test(S("abcde"), 1, 5, S("abcde"), 4, 2, -3); + test(S("abcde"), 1, 5, S("abcde"), 5, 0, 4); + test(S("abcde"), 1, 5, S("abcde"), 5, 1, 4); + test(S("abcde"), 1, 5, S("abcde"), 6, 0, 0); + test(S("abcde"), 1, 5, S("abcdefghij"), 0, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghij"), 0, 1, 1); + test(S("abcde"), 1, 5, S("abcdefghij"), 0, 5, 1); + test(S("abcde"), 1, 5, S("abcdefghij"), 0, 9, 1); + test(S("abcde"), 1, 5, S("abcdefghij"), 0, 10, 1); + test(S("abcde"), 1, 5, S("abcdefghij"), 0, 11, 1); + test(S("abcde"), 1, 5, S("abcdefghij"), 1, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghij"), 1, 1, 3); + test(S("abcde"), 1, 5, S("abcdefghij"), 1, 4, 0); + test(S("abcde"), 1, 5, S("abcdefghij"), 1, 8, -4); + test(S("abcde"), 1, 5, S("abcdefghij"), 1, 9, -5); + test(S("abcde"), 1, 5, S("abcdefghij"), 1, 10, -5); + test(S("abcde"), 1, 5, S("abcdefghij"), 5, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghij"), 5, 1, -4); + test(S("abcde"), 1, 5, S("abcdefghij"), 5, 2, -4); + test(S("abcde"), 1, 5, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 1, 5, S("abcdefghij"), 5, 5, -4); + test(S("abcde"), 1, 5, S("abcdefghij"), 5, 6, -4); + test(S("abcde"), 1, 5, S("abcdefghij"), 9, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghij"), 9, 1, -8); + test(S("abcde"), 1, 5, S("abcdefghij"), 9, 2, -8); + test(S("abcde"), 1, 5, S("abcdefghij"), 10, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghij"), 10, 1, 4); + test(S("abcde"), 1, 5, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 9, -5); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 18, -14); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 19, -15); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 20, -15); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 1, -9); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test11() -{ - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 0, S(""), 0, 0, 0); - test(S("abcde"), 2, 0, S(""), 0, 1, 0); - test(S("abcde"), 2, 0, S(""), 1, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 2, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 2, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 2, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 2, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 2, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 2, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 2, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 2, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 2, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 2, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 2, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 2, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 2, 0, S("abcde"), 2, 4, -3); - test(S("abcde"), 2, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 2, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 2, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 2, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 2, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 2, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 2, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 2, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 2, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 2, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 2, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 1, S(""), 0, 0, 1); - test(S("abcde"), 2, 1, S(""), 0, 1, 1); - test(S("abcde"), 2, 1, S(""), 1, 0, 0); - test(S("abcde"), 2, 1, S("abcde"), 0, 0, 1); - test(S("abcde"), 2, 1, S("abcde"), 0, 1, 2); - test(S("abcde"), 2, 1, S("abcde"), 0, 2, 2); - test(S("abcde"), 2, 1, S("abcde"), 0, 4, 2); - test(S("abcde"), 2, 1, S("abcde"), 0, 5, 2); - test(S("abcde"), 2, 1, S("abcde"), 0, 6, 2); - test(S("abcde"), 2, 1, S("abcde"), 1, 0, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 1, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 2, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 3, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 4, 1); - test(S("abcde"), 2, 1, S("abcde"), 1, 5, 1); - test(S("abcde"), 2, 1, S("abcde"), 2, 0, 1); +TEST_CONSTEXPR_CXX20 bool test11() { + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 0, S(""), 0, 0, 0); + test(S("abcde"), 2, 0, S(""), 0, 1, 0); + test(S("abcde"), 2, 0, S(""), 1, 0, 0); + test(S("abcde"), 2, 0, S("abcde"), 0, 0, 0); + test(S("abcde"), 2, 0, S("abcde"), 0, 1, -1); + test(S("abcde"), 2, 0, S("abcde"), 0, 2, -2); + test(S("abcde"), 2, 0, S("abcde"), 0, 4, -4); + test(S("abcde"), 2, 0, S("abcde"), 0, 5, -5); + test(S("abcde"), 2, 0, S("abcde"), 0, 6, -5); + test(S("abcde"), 2, 0, S("abcde"), 1, 0, 0); + test(S("abcde"), 2, 0, S("abcde"), 1, 1, -1); + test(S("abcde"), 2, 0, S("abcde"), 1, 2, -2); + test(S("abcde"), 2, 0, S("abcde"), 1, 3, -3); + test(S("abcde"), 2, 0, S("abcde"), 1, 4, -4); + test(S("abcde"), 2, 0, S("abcde"), 1, 5, -4); + test(S("abcde"), 2, 0, S("abcde"), 2, 0, 0); + test(S("abcde"), 2, 0, S("abcde"), 2, 1, -1); + test(S("abcde"), 2, 0, S("abcde"), 2, 2, -2); + test(S("abcde"), 2, 0, S("abcde"), 2, 3, -3); + test(S("abcde"), 2, 0, S("abcde"), 2, 4, -3); + test(S("abcde"), 2, 0, S("abcde"), 4, 0, 0); + test(S("abcde"), 2, 0, S("abcde"), 4, 1, -1); + test(S("abcde"), 2, 0, S("abcde"), 4, 2, -1); + test(S("abcde"), 2, 0, S("abcde"), 5, 0, 0); + test(S("abcde"), 2, 0, S("abcde"), 5, 1, 0); + test(S("abcde"), 2, 0, S("abcde"), 6, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcde"), 2, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcde"), 2, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcde"), 2, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcde"), 2, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcde"), 2, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 2, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcde"), 2, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcde"), 2, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcde"), 2, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcde"), 2, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcde"), 2, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcde"), 2, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 2, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 2, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 2, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcde"), 2, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcde"), 2, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcde"), 2, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 1, S(""), 0, 0, 1); + test(S("abcde"), 2, 1, S(""), 0, 1, 1); + test(S("abcde"), 2, 1, S(""), 1, 0, 0); + test(S("abcde"), 2, 1, S("abcde"), 0, 0, 1); + test(S("abcde"), 2, 1, S("abcde"), 0, 1, 2); + test(S("abcde"), 2, 1, S("abcde"), 0, 2, 2); + test(S("abcde"), 2, 1, S("abcde"), 0, 4, 2); + test(S("abcde"), 2, 1, S("abcde"), 0, 5, 2); + test(S("abcde"), 2, 1, S("abcde"), 0, 6, 2); + test(S("abcde"), 2, 1, S("abcde"), 1, 0, 1); + test(S("abcde"), 2, 1, S("abcde"), 1, 1, 1); + test(S("abcde"), 2, 1, S("abcde"), 1, 2, 1); + test(S("abcde"), 2, 1, S("abcde"), 1, 3, 1); + test(S("abcde"), 2, 1, S("abcde"), 1, 4, 1); + test(S("abcde"), 2, 1, S("abcde"), 1, 5, 1); + test(S("abcde"), 2, 1, S("abcde"), 2, 0, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test12() -{ - test(S("abcde"), 2, 1, S("abcde"), 2, 1, 0); - test(S("abcde"), 2, 1, S("abcde"), 2, 2, -1); - test(S("abcde"), 2, 1, S("abcde"), 2, 3, -2); - test(S("abcde"), 2, 1, S("abcde"), 2, 4, -2); - test(S("abcde"), 2, 1, S("abcde"), 4, 0, 1); - test(S("abcde"), 2, 1, S("abcde"), 4, 1, -2); - test(S("abcde"), 2, 1, S("abcde"), 4, 2, -2); - test(S("abcde"), 2, 1, S("abcde"), 5, 0, 1); - test(S("abcde"), 2, 1, S("abcde"), 5, 1, 1); - test(S("abcde"), 2, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 1, S("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 2, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 2, S(""), 0, 0, 2); - test(S("abcde"), 2, 2, S(""), 0, 1, 2); - test(S("abcde"), 2, 2, S(""), 1, 0, 0); - test(S("abcde"), 2, 2, S("abcde"), 0, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 1, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 2, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 4, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 5, 2); - test(S("abcde"), 2, 2, S("abcde"), 0, 6, 2); - test(S("abcde"), 2, 2, S("abcde"), 1, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 1, 1, 1); - test(S("abcde"), 2, 2, S("abcde"), 1, 2, 1); - test(S("abcde"), 2, 2, S("abcde"), 1, 3, 1); - test(S("abcde"), 2, 2, S("abcde"), 1, 4, 1); - test(S("abcde"), 2, 2, S("abcde"), 1, 5, 1); - test(S("abcde"), 2, 2, S("abcde"), 2, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 2, 1, 1); - test(S("abcde"), 2, 2, S("abcde"), 2, 2, 0); - test(S("abcde"), 2, 2, S("abcde"), 2, 3, -1); - test(S("abcde"), 2, 2, S("abcde"), 2, 4, -1); - test(S("abcde"), 2, 2, S("abcde"), 4, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 4, 1, -2); - test(S("abcde"), 2, 2, S("abcde"), 4, 2, -2); - test(S("abcde"), 2, 2, S("abcde"), 5, 0, 2); - test(S("abcde"), 2, 2, S("abcde"), 5, 1, 2); - test(S("abcde"), 2, 2, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 4, -3); +TEST_CONSTEXPR_CXX20 bool test12() { + test(S("abcde"), 2, 1, S("abcde"), 2, 1, 0); + test(S("abcde"), 2, 1, S("abcde"), 2, 2, -1); + test(S("abcde"), 2, 1, S("abcde"), 2, 3, -2); + test(S("abcde"), 2, 1, S("abcde"), 2, 4, -2); + test(S("abcde"), 2, 1, S("abcde"), 4, 0, 1); + test(S("abcde"), 2, 1, S("abcde"), 4, 1, -2); + test(S("abcde"), 2, 1, S("abcde"), 4, 2, -2); + test(S("abcde"), 2, 1, S("abcde"), 5, 0, 1); + test(S("abcde"), 2, 1, S("abcde"), 5, 1, 1); + test(S("abcde"), 2, 1, S("abcde"), 6, 0, 0); + test(S("abcde"), 2, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 0, 1, 2); + test(S("abcde"), 2, 1, S("abcdefghij"), 0, 5, 2); + test(S("abcde"), 2, 1, S("abcdefghij"), 0, 9, 2); + test(S("abcde"), 2, 1, S("abcdefghij"), 0, 10, 2); + test(S("abcde"), 2, 1, S("abcdefghij"), 0, 11, 2); + test(S("abcde"), 2, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 1, 1, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 1, 4, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 1, 8, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 1, 9, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 1, 10, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 5, 1, -3); + test(S("abcde"), 2, 1, S("abcdefghij"), 5, 2, -3); + test(S("abcde"), 2, 1, S("abcdefghij"), 5, 4, -3); + test(S("abcde"), 2, 1, S("abcdefghij"), 5, 5, -3); + test(S("abcde"), 2, 1, S("abcdefghij"), 5, 6, -3); + test(S("abcde"), 2, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 9, 1, -7); + test(S("abcde"), 2, 1, S("abcdefghij"), 9, 2, -7); + test(S("abcde"), 2, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcde"), 2, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 1, 2); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 10, 2); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 19, 2); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 20, 2); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 21, 2); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 9, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 19, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 20, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 1, -8); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 5, -8); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 10, -8); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 11, -8); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 1, -17); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 2, -17); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 2, S(""), 0, 0, 2); + test(S("abcde"), 2, 2, S(""), 0, 1, 2); + test(S("abcde"), 2, 2, S(""), 1, 0, 0); + test(S("abcde"), 2, 2, S("abcde"), 0, 0, 2); + test(S("abcde"), 2, 2, S("abcde"), 0, 1, 2); + test(S("abcde"), 2, 2, S("abcde"), 0, 2, 2); + test(S("abcde"), 2, 2, S("abcde"), 0, 4, 2); + test(S("abcde"), 2, 2, S("abcde"), 0, 5, 2); + test(S("abcde"), 2, 2, S("abcde"), 0, 6, 2); + test(S("abcde"), 2, 2, S("abcde"), 1, 0, 2); + test(S("abcde"), 2, 2, S("abcde"), 1, 1, 1); + test(S("abcde"), 2, 2, S("abcde"), 1, 2, 1); + test(S("abcde"), 2, 2, S("abcde"), 1, 3, 1); + test(S("abcde"), 2, 2, S("abcde"), 1, 4, 1); + test(S("abcde"), 2, 2, S("abcde"), 1, 5, 1); + test(S("abcde"), 2, 2, S("abcde"), 2, 0, 2); + test(S("abcde"), 2, 2, S("abcde"), 2, 1, 1); + test(S("abcde"), 2, 2, S("abcde"), 2, 2, 0); + test(S("abcde"), 2, 2, S("abcde"), 2, 3, -1); + test(S("abcde"), 2, 2, S("abcde"), 2, 4, -1); + test(S("abcde"), 2, 2, S("abcde"), 4, 0, 2); + test(S("abcde"), 2, 2, S("abcde"), 4, 1, -2); + test(S("abcde"), 2, 2, S("abcde"), 4, 2, -2); + test(S("abcde"), 2, 2, S("abcde"), 5, 0, 2); + test(S("abcde"), 2, 2, S("abcde"), 5, 1, 2); + test(S("abcde"), 2, 2, S("abcde"), 6, 0, 0); + test(S("abcde"), 2, 2, S("abcdefghij"), 0, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 0, 1, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 0, 5, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 0, 9, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 0, 10, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 0, 11, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 1, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 1, 1, 1); + test(S("abcde"), 2, 2, S("abcdefghij"), 1, 4, 1); + test(S("abcde"), 2, 2, S("abcdefghij"), 1, 8, 1); + test(S("abcde"), 2, 2, S("abcdefghij"), 1, 9, 1); + test(S("abcde"), 2, 2, S("abcdefghij"), 1, 10, 1); + test(S("abcde"), 2, 2, S("abcdefghij"), 5, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 5, 1, -3); + test(S("abcde"), 2, 2, S("abcdefghij"), 5, 2, -3); + test(S("abcde"), 2, 2, S("abcdefghij"), 5, 4, -3); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test13() -{ - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 2, S("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 2, S("abcdefghij"), 9, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 2, S("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 2, S("abcdefghij"), 10, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 10, 1, 2); - test(S("abcde"), 2, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 3, S(""), 0, 0, 3); - test(S("abcde"), 2, 3, S(""), 0, 1, 3); - test(S("abcde"), 2, 3, S(""), 1, 0, 0); - test(S("abcde"), 2, 3, S("abcde"), 0, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 0, 1, 2); - test(S("abcde"), 2, 3, S("abcde"), 0, 2, 2); - test(S("abcde"), 2, 3, S("abcde"), 0, 4, 2); - test(S("abcde"), 2, 3, S("abcde"), 0, 5, 2); - test(S("abcde"), 2, 3, S("abcde"), 0, 6, 2); - test(S("abcde"), 2, 3, S("abcde"), 1, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 1, 1, 1); - test(S("abcde"), 2, 3, S("abcde"), 1, 2, 1); - test(S("abcde"), 2, 3, S("abcde"), 1, 3, 1); - test(S("abcde"), 2, 3, S("abcde"), 1, 4, 1); - test(S("abcde"), 2, 3, S("abcde"), 1, 5, 1); - test(S("abcde"), 2, 3, S("abcde"), 2, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 2, 1, 2); - test(S("abcde"), 2, 3, S("abcde"), 2, 2, 1); - test(S("abcde"), 2, 3, S("abcde"), 2, 3, 0); - test(S("abcde"), 2, 3, S("abcde"), 2, 4, 0); - test(S("abcde"), 2, 3, S("abcde"), 4, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 4, 1, -2); - test(S("abcde"), 2, 3, S("abcde"), 4, 2, -2); - test(S("abcde"), 2, 3, S("abcde"), 5, 0, 3); - test(S("abcde"), 2, 3, S("abcde"), 5, 1, 3); - test(S("abcde"), 2, 3, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 3, S("abcdefghij"), 9, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 3, S("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 3, S("abcdefghij"), 10, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 10, 1, 3); - test(S("abcde"), 2, 3, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 11, -8); +TEST_CONSTEXPR_CXX20 bool test13() { + test(S("abcde"), 2, 2, S("abcdefghij"), 5, 5, -3); + test(S("abcde"), 2, 2, S("abcdefghij"), 5, 6, -3); + test(S("abcde"), 2, 2, S("abcdefghij"), 9, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 9, 1, -7); + test(S("abcde"), 2, 2, S("abcdefghij"), 9, 2, -7); + test(S("abcde"), 2, 2, S("abcdefghij"), 10, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 10, 1, 2); + test(S("abcde"), 2, 2, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 1, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 10, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 19, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 20, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 21, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 9, 1); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 19, 1); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 20, 1); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 1, -8); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 5, -8); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 10, -8); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 11, -8); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 1, -17); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 2, -17); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); + test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 3, S(""), 0, 0, 3); + test(S("abcde"), 2, 3, S(""), 0, 1, 3); + test(S("abcde"), 2, 3, S(""), 1, 0, 0); + test(S("abcde"), 2, 3, S("abcde"), 0, 0, 3); + test(S("abcde"), 2, 3, S("abcde"), 0, 1, 2); + test(S("abcde"), 2, 3, S("abcde"), 0, 2, 2); + test(S("abcde"), 2, 3, S("abcde"), 0, 4, 2); + test(S("abcde"), 2, 3, S("abcde"), 0, 5, 2); + test(S("abcde"), 2, 3, S("abcde"), 0, 6, 2); + test(S("abcde"), 2, 3, S("abcde"), 1, 0, 3); + test(S("abcde"), 2, 3, S("abcde"), 1, 1, 1); + test(S("abcde"), 2, 3, S("abcde"), 1, 2, 1); + test(S("abcde"), 2, 3, S("abcde"), 1, 3, 1); + test(S("abcde"), 2, 3, S("abcde"), 1, 4, 1); + test(S("abcde"), 2, 3, S("abcde"), 1, 5, 1); + test(S("abcde"), 2, 3, S("abcde"), 2, 0, 3); + test(S("abcde"), 2, 3, S("abcde"), 2, 1, 2); + test(S("abcde"), 2, 3, S("abcde"), 2, 2, 1); + test(S("abcde"), 2, 3, S("abcde"), 2, 3, 0); + test(S("abcde"), 2, 3, S("abcde"), 2, 4, 0); + test(S("abcde"), 2, 3, S("abcde"), 4, 0, 3); + test(S("abcde"), 2, 3, S("abcde"), 4, 1, -2); + test(S("abcde"), 2, 3, S("abcde"), 4, 2, -2); + test(S("abcde"), 2, 3, S("abcde"), 5, 0, 3); + test(S("abcde"), 2, 3, S("abcde"), 5, 1, 3); + test(S("abcde"), 2, 3, S("abcde"), 6, 0, 0); + test(S("abcde"), 2, 3, S("abcdefghij"), 0, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghij"), 0, 1, 2); + test(S("abcde"), 2, 3, S("abcdefghij"), 0, 5, 2); + test(S("abcde"), 2, 3, S("abcdefghij"), 0, 9, 2); + test(S("abcde"), 2, 3, S("abcdefghij"), 0, 10, 2); + test(S("abcde"), 2, 3, S("abcdefghij"), 0, 11, 2); + test(S("abcde"), 2, 3, S("abcdefghij"), 1, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghij"), 1, 1, 1); + test(S("abcde"), 2, 3, S("abcdefghij"), 1, 4, 1); + test(S("abcde"), 2, 3, S("abcdefghij"), 1, 8, 1); + test(S("abcde"), 2, 3, S("abcdefghij"), 1, 9, 1); + test(S("abcde"), 2, 3, S("abcdefghij"), 1, 10, 1); + test(S("abcde"), 2, 3, S("abcdefghij"), 5, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghij"), 5, 1, -3); + test(S("abcde"), 2, 3, S("abcdefghij"), 5, 2, -3); + test(S("abcde"), 2, 3, S("abcdefghij"), 5, 4, -3); + test(S("abcde"), 2, 3, S("abcdefghij"), 5, 5, -3); + test(S("abcde"), 2, 3, S("abcdefghij"), 5, 6, -3); + test(S("abcde"), 2, 3, S("abcdefghij"), 9, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghij"), 9, 1, -7); + test(S("abcde"), 2, 3, S("abcdefghij"), 9, 2, -7); + test(S("abcde"), 2, 3, S("abcdefghij"), 10, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghij"), 10, 1, 3); + test(S("abcde"), 2, 3, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 1, 2); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 10, 2); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 19, 2); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 20, 2); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 21, 2); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 9, 1); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 19, 1); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 20, 1); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 1, -8); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 5, -8); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 10, -8); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 11, -8); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test14() -{ - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 2, 4, S(""), 0, 0, 3); - test(S("abcde"), 2, 4, S(""), 0, 1, 3); - test(S("abcde"), 2, 4, S(""), 1, 0, 0); - test(S("abcde"), 2, 4, S("abcde"), 0, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 0, 1, 2); - test(S("abcde"), 2, 4, S("abcde"), 0, 2, 2); - test(S("abcde"), 2, 4, S("abcde"), 0, 4, 2); - test(S("abcde"), 2, 4, S("abcde"), 0, 5, 2); - test(S("abcde"), 2, 4, S("abcde"), 0, 6, 2); - test(S("abcde"), 2, 4, S("abcde"), 1, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 1, 1, 1); - test(S("abcde"), 2, 4, S("abcde"), 1, 2, 1); - test(S("abcde"), 2, 4, S("abcde"), 1, 3, 1); - test(S("abcde"), 2, 4, S("abcde"), 1, 4, 1); - test(S("abcde"), 2, 4, S("abcde"), 1, 5, 1); - test(S("abcde"), 2, 4, S("abcde"), 2, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 2, 1, 2); - test(S("abcde"), 2, 4, S("abcde"), 2, 2, 1); - test(S("abcde"), 2, 4, S("abcde"), 2, 3, 0); - test(S("abcde"), 2, 4, S("abcde"), 2, 4, 0); - test(S("abcde"), 2, 4, S("abcde"), 4, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 4, 1, -2); - test(S("abcde"), 2, 4, S("abcde"), 4, 2, -2); - test(S("abcde"), 2, 4, S("abcde"), 5, 0, 3); - test(S("abcde"), 2, 4, S("abcde"), 5, 1, 3); - test(S("abcde"), 2, 4, S("abcde"), 6, 0, 0); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 1, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 5, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 9, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 10, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 0, 11, 2); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 1, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 4, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 8, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 9, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 1, 10, 1); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 1, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 2, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 4, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 5, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 5, 6, -3); - test(S("abcde"), 2, 4, S("abcdefghij"), 9, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 9, 1, -7); - test(S("abcde"), 2, 4, S("abcdefghij"), 9, 2, -7); - test(S("abcde"), 2, 4, S("abcdefghij"), 10, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 10, 1, 3); - test(S("abcde"), 2, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 1, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 10, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 19, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 20, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 21, 2); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 1, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 9, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 19, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 20, 1); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 1, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 5, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 10, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 11, -8); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 1, -17); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 2, -17); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 0, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 1, 3); - test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 0, S(""), 0, 0, 0); - test(S("abcde"), 4, 0, S(""), 0, 1, 0); - test(S("abcde"), 4, 0, S(""), 1, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 4, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 4, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 4, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 4, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 4, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 4, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 4, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 4, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 4, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 4, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 4, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 4, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 4, 0, S("abcde"), 2, 4, -3); +TEST_CONSTEXPR_CXX20 bool test14() { + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 1, -17); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 2, -17); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 0, 3); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 1, 3); + test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 2, 4, S(""), 0, 0, 3); + test(S("abcde"), 2, 4, S(""), 0, 1, 3); + test(S("abcde"), 2, 4, S(""), 1, 0, 0); + test(S("abcde"), 2, 4, S("abcde"), 0, 0, 3); + test(S("abcde"), 2, 4, S("abcde"), 0, 1, 2); + test(S("abcde"), 2, 4, S("abcde"), 0, 2, 2); + test(S("abcde"), 2, 4, S("abcde"), 0, 4, 2); + test(S("abcde"), 2, 4, S("abcde"), 0, 5, 2); + test(S("abcde"), 2, 4, S("abcde"), 0, 6, 2); + test(S("abcde"), 2, 4, S("abcde"), 1, 0, 3); + test(S("abcde"), 2, 4, S("abcde"), 1, 1, 1); + test(S("abcde"), 2, 4, S("abcde"), 1, 2, 1); + test(S("abcde"), 2, 4, S("abcde"), 1, 3, 1); + test(S("abcde"), 2, 4, S("abcde"), 1, 4, 1); + test(S("abcde"), 2, 4, S("abcde"), 1, 5, 1); + test(S("abcde"), 2, 4, S("abcde"), 2, 0, 3); + test(S("abcde"), 2, 4, S("abcde"), 2, 1, 2); + test(S("abcde"), 2, 4, S("abcde"), 2, 2, 1); + test(S("abcde"), 2, 4, S("abcde"), 2, 3, 0); + test(S("abcde"), 2, 4, S("abcde"), 2, 4, 0); + test(S("abcde"), 2, 4, S("abcde"), 4, 0, 3); + test(S("abcde"), 2, 4, S("abcde"), 4, 1, -2); + test(S("abcde"), 2, 4, S("abcde"), 4, 2, -2); + test(S("abcde"), 2, 4, S("abcde"), 5, 0, 3); + test(S("abcde"), 2, 4, S("abcde"), 5, 1, 3); + test(S("abcde"), 2, 4, S("abcde"), 6, 0, 0); + test(S("abcde"), 2, 4, S("abcdefghij"), 0, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghij"), 0, 1, 2); + test(S("abcde"), 2, 4, S("abcdefghij"), 0, 5, 2); + test(S("abcde"), 2, 4, S("abcdefghij"), 0, 9, 2); + test(S("abcde"), 2, 4, S("abcdefghij"), 0, 10, 2); + test(S("abcde"), 2, 4, S("abcdefghij"), 0, 11, 2); + test(S("abcde"), 2, 4, S("abcdefghij"), 1, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghij"), 1, 1, 1); + test(S("abcde"), 2, 4, S("abcdefghij"), 1, 4, 1); + test(S("abcde"), 2, 4, S("abcdefghij"), 1, 8, 1); + test(S("abcde"), 2, 4, S("abcdefghij"), 1, 9, 1); + test(S("abcde"), 2, 4, S("abcdefghij"), 1, 10, 1); + test(S("abcde"), 2, 4, S("abcdefghij"), 5, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghij"), 5, 1, -3); + test(S("abcde"), 2, 4, S("abcdefghij"), 5, 2, -3); + test(S("abcde"), 2, 4, S("abcdefghij"), 5, 4, -3); + test(S("abcde"), 2, 4, S("abcdefghij"), 5, 5, -3); + test(S("abcde"), 2, 4, S("abcdefghij"), 5, 6, -3); + test(S("abcde"), 2, 4, S("abcdefghij"), 9, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghij"), 9, 1, -7); + test(S("abcde"), 2, 4, S("abcdefghij"), 9, 2, -7); + test(S("abcde"), 2, 4, S("abcdefghij"), 10, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghij"), 10, 1, 3); + test(S("abcde"), 2, 4, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 1, 2); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 10, 2); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 19, 2); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 20, 2); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 21, 2); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 1, 1); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 9, 1); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 19, 1); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 20, 1); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 1, -8); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 5, -8); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 10, -8); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 11, -8); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 1, -17); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 2, -17); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 0, 3); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 1, 3); + test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 4, 0, S(""), 0, 0, 0); + test(S("abcde"), 4, 0, S(""), 0, 1, 0); + test(S("abcde"), 4, 0, S(""), 1, 0, 0); + test(S("abcde"), 4, 0, S("abcde"), 0, 0, 0); + test(S("abcde"), 4, 0, S("abcde"), 0, 1, -1); + test(S("abcde"), 4, 0, S("abcde"), 0, 2, -2); + test(S("abcde"), 4, 0, S("abcde"), 0, 4, -4); + test(S("abcde"), 4, 0, S("abcde"), 0, 5, -5); + test(S("abcde"), 4, 0, S("abcde"), 0, 6, -5); + test(S("abcde"), 4, 0, S("abcde"), 1, 0, 0); + test(S("abcde"), 4, 0, S("abcde"), 1, 1, -1); + test(S("abcde"), 4, 0, S("abcde"), 1, 2, -2); + test(S("abcde"), 4, 0, S("abcde"), 1, 3, -3); + test(S("abcde"), 4, 0, S("abcde"), 1, 4, -4); + test(S("abcde"), 4, 0, S("abcde"), 1, 5, -4); + test(S("abcde"), 4, 0, S("abcde"), 2, 0, 0); + test(S("abcde"), 4, 0, S("abcde"), 2, 1, -1); + test(S("abcde"), 4, 0, S("abcde"), 2, 2, -2); + test(S("abcde"), 4, 0, S("abcde"), 2, 3, -3); + test(S("abcde"), 4, 0, S("abcde"), 2, 4, -3); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test15() -{ - test(S("abcde"), 4, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 4, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 4, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 4, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 4, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 4, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 4, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 4, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 4, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 4, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 4, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 1, S(""), 0, 0, 1); - test(S("abcde"), 4, 1, S(""), 0, 1, 1); - test(S("abcde"), 4, 1, S(""), 1, 0, 0); - test(S("abcde"), 4, 1, S("abcde"), 0, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 0, 1, 4); - test(S("abcde"), 4, 1, S("abcde"), 0, 2, 4); - test(S("abcde"), 4, 1, S("abcde"), 0, 4, 4); - test(S("abcde"), 4, 1, S("abcde"), 0, 5, 4); - test(S("abcde"), 4, 1, S("abcde"), 0, 6, 4); - test(S("abcde"), 4, 1, S("abcde"), 1, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 1, 1, 3); - test(S("abcde"), 4, 1, S("abcde"), 1, 2, 3); - test(S("abcde"), 4, 1, S("abcde"), 1, 3, 3); - test(S("abcde"), 4, 1, S("abcde"), 1, 4, 3); - test(S("abcde"), 4, 1, S("abcde"), 1, 5, 3); - test(S("abcde"), 4, 1, S("abcde"), 2, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 2, 1, 2); - test(S("abcde"), 4, 1, S("abcde"), 2, 2, 2); - test(S("abcde"), 4, 1, S("abcde"), 2, 3, 2); - test(S("abcde"), 4, 1, S("abcde"), 2, 4, 2); - test(S("abcde"), 4, 1, S("abcde"), 4, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 4, 1, 0); - test(S("abcde"), 4, 1, S("abcde"), 4, 2, 0); - test(S("abcde"), 4, 1, S("abcde"), 5, 0, 1); - test(S("abcde"), 4, 1, S("abcde"), 5, 1, 1); - test(S("abcde"), 4, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 1, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 5, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 9, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 10, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 0, 11, 4); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 1, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 4, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 8, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 9, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 1, 10, 3); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 2, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 4, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 5, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 5, 6, -1); - test(S("abcde"), 4, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 9, 1, -5); +TEST_CONSTEXPR_CXX20 bool test15() { + test(S("abcde"), 4, 0, S("abcde"), 4, 0, 0); + test(S("abcde"), 4, 0, S("abcde"), 4, 1, -1); + test(S("abcde"), 4, 0, S("abcde"), 4, 2, -1); + test(S("abcde"), 4, 0, S("abcde"), 5, 0, 0); + test(S("abcde"), 4, 0, S("abcde"), 5, 1, 0); + test(S("abcde"), 4, 0, S("abcde"), 6, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcde"), 4, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcde"), 4, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcde"), 4, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcde"), 4, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcde"), 4, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 4, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcde"), 4, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcde"), 4, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcde"), 4, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcde"), 4, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcde"), 4, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcde"), 4, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 4, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 4, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 4, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcde"), 4, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcde"), 4, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcde"), 4, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 4, 1, S(""), 0, 0, 1); + test(S("abcde"), 4, 1, S(""), 0, 1, 1); + test(S("abcde"), 4, 1, S(""), 1, 0, 0); + test(S("abcde"), 4, 1, S("abcde"), 0, 0, 1); + test(S("abcde"), 4, 1, S("abcde"), 0, 1, 4); + test(S("abcde"), 4, 1, S("abcde"), 0, 2, 4); + test(S("abcde"), 4, 1, S("abcde"), 0, 4, 4); + test(S("abcde"), 4, 1, S("abcde"), 0, 5, 4); + test(S("abcde"), 4, 1, S("abcde"), 0, 6, 4); + test(S("abcde"), 4, 1, S("abcde"), 1, 0, 1); + test(S("abcde"), 4, 1, S("abcde"), 1, 1, 3); + test(S("abcde"), 4, 1, S("abcde"), 1, 2, 3); + test(S("abcde"), 4, 1, S("abcde"), 1, 3, 3); + test(S("abcde"), 4, 1, S("abcde"), 1, 4, 3); + test(S("abcde"), 4, 1, S("abcde"), 1, 5, 3); + test(S("abcde"), 4, 1, S("abcde"), 2, 0, 1); + test(S("abcde"), 4, 1, S("abcde"), 2, 1, 2); + test(S("abcde"), 4, 1, S("abcde"), 2, 2, 2); + test(S("abcde"), 4, 1, S("abcde"), 2, 3, 2); + test(S("abcde"), 4, 1, S("abcde"), 2, 4, 2); + test(S("abcde"), 4, 1, S("abcde"), 4, 0, 1); + test(S("abcde"), 4, 1, S("abcde"), 4, 1, 0); + test(S("abcde"), 4, 1, S("abcde"), 4, 2, 0); + test(S("abcde"), 4, 1, S("abcde"), 5, 0, 1); + test(S("abcde"), 4, 1, S("abcde"), 5, 1, 1); + test(S("abcde"), 4, 1, S("abcde"), 6, 0, 0); + test(S("abcde"), 4, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghij"), 0, 1, 4); + test(S("abcde"), 4, 1, S("abcdefghij"), 0, 5, 4); + test(S("abcde"), 4, 1, S("abcdefghij"), 0, 9, 4); + test(S("abcde"), 4, 1, S("abcdefghij"), 0, 10, 4); + test(S("abcde"), 4, 1, S("abcdefghij"), 0, 11, 4); + test(S("abcde"), 4, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghij"), 1, 1, 3); + test(S("abcde"), 4, 1, S("abcdefghij"), 1, 4, 3); + test(S("abcde"), 4, 1, S("abcdefghij"), 1, 8, 3); + test(S("abcde"), 4, 1, S("abcdefghij"), 1, 9, 3); + test(S("abcde"), 4, 1, S("abcdefghij"), 1, 10, 3); + test(S("abcde"), 4, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghij"), 5, 1, -1); + test(S("abcde"), 4, 1, S("abcdefghij"), 5, 2, -1); + test(S("abcde"), 4, 1, S("abcdefghij"), 5, 4, -1); + test(S("abcde"), 4, 1, S("abcdefghij"), 5, 5, -1); + test(S("abcde"), 4, 1, S("abcdefghij"), 5, 6, -1); + test(S("abcde"), 4, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghij"), 9, 1, -5); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test16() -{ - test(S("abcde"), 4, 1, S("abcdefghij"), 9, 2, -5); - test(S("abcde"), 4, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 4, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 10, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 19, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 20, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 21, 4); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 9, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 18, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 19, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 20, 3); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 1, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 5, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 9, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 10, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 11, -6); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 1, -15); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 2, -15); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 4, 2, S(""), 0, 0, 1); - test(S("abcde"), 4, 2, S(""), 0, 1, 1); - test(S("abcde"), 4, 2, S(""), 1, 0, 0); - test(S("abcde"), 4, 2, S("abcde"), 0, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 0, 1, 4); - test(S("abcde"), 4, 2, S("abcde"), 0, 2, 4); - test(S("abcde"), 4, 2, S("abcde"), 0, 4, 4); - test(S("abcde"), 4, 2, S("abcde"), 0, 5, 4); - test(S("abcde"), 4, 2, S("abcde"), 0, 6, 4); - test(S("abcde"), 4, 2, S("abcde"), 1, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 1, 1, 3); - test(S("abcde"), 4, 2, S("abcde"), 1, 2, 3); - test(S("abcde"), 4, 2, S("abcde"), 1, 3, 3); - test(S("abcde"), 4, 2, S("abcde"), 1, 4, 3); - test(S("abcde"), 4, 2, S("abcde"), 1, 5, 3); - test(S("abcde"), 4, 2, S("abcde"), 2, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 2, 1, 2); - test(S("abcde"), 4, 2, S("abcde"), 2, 2, 2); - test(S("abcde"), 4, 2, S("abcde"), 2, 3, 2); - test(S("abcde"), 4, 2, S("abcde"), 2, 4, 2); - test(S("abcde"), 4, 2, S("abcde"), 4, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 4, 1, 0); - test(S("abcde"), 4, 2, S("abcde"), 4, 2, 0); - test(S("abcde"), 4, 2, S("abcde"), 5, 0, 1); - test(S("abcde"), 4, 2, S("abcde"), 5, 1, 1); - test(S("abcde"), 4, 2, S("abcde"), 6, 0, 0); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 1, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 5, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 9, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 10, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 0, 11, 4); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 1, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 4, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 8, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 9, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 1, 10, 3); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 2, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 4, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 5, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 5, 6, -1); - test(S("abcde"), 4, 2, S("abcdefghij"), 9, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 9, 1, -5); - test(S("abcde"), 4, 2, S("abcdefghij"), 9, 2, -5); - test(S("abcde"), 4, 2, S("abcdefghij"), 10, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 10, 1, 1); - test(S("abcde"), 4, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 10, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 19, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 20, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 21, 4); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 9, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 18, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 19, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 20, 3); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 1, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 5, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 9, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 10, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 11, -6); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 1, -15); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 2, -15); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); +TEST_CONSTEXPR_CXX20 bool test16() { + test(S("abcde"), 4, 1, S("abcdefghij"), 9, 2, -5); + test(S("abcde"), 4, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcde"), 4, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 10, 4); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 19, 4); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 20, 4); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 21, 4); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 9, 3); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 18, 3); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 19, 3); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 20, 3); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 1, -6); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 5, -6); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 9, -6); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 10, -6); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 11, -6); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 1, -15); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 2, -15); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 4, 2, S(""), 0, 0, 1); + test(S("abcde"), 4, 2, S(""), 0, 1, 1); + test(S("abcde"), 4, 2, S(""), 1, 0, 0); + test(S("abcde"), 4, 2, S("abcde"), 0, 0, 1); + test(S("abcde"), 4, 2, S("abcde"), 0, 1, 4); + test(S("abcde"), 4, 2, S("abcde"), 0, 2, 4); + test(S("abcde"), 4, 2, S("abcde"), 0, 4, 4); + test(S("abcde"), 4, 2, S("abcde"), 0, 5, 4); + test(S("abcde"), 4, 2, S("abcde"), 0, 6, 4); + test(S("abcde"), 4, 2, S("abcde"), 1, 0, 1); + test(S("abcde"), 4, 2, S("abcde"), 1, 1, 3); + test(S("abcde"), 4, 2, S("abcde"), 1, 2, 3); + test(S("abcde"), 4, 2, S("abcde"), 1, 3, 3); + test(S("abcde"), 4, 2, S("abcde"), 1, 4, 3); + test(S("abcde"), 4, 2, S("abcde"), 1, 5, 3); + test(S("abcde"), 4, 2, S("abcde"), 2, 0, 1); + test(S("abcde"), 4, 2, S("abcde"), 2, 1, 2); + test(S("abcde"), 4, 2, S("abcde"), 2, 2, 2); + test(S("abcde"), 4, 2, S("abcde"), 2, 3, 2); + test(S("abcde"), 4, 2, S("abcde"), 2, 4, 2); + test(S("abcde"), 4, 2, S("abcde"), 4, 0, 1); + test(S("abcde"), 4, 2, S("abcde"), 4, 1, 0); + test(S("abcde"), 4, 2, S("abcde"), 4, 2, 0); + test(S("abcde"), 4, 2, S("abcde"), 5, 0, 1); + test(S("abcde"), 4, 2, S("abcde"), 5, 1, 1); + test(S("abcde"), 4, 2, S("abcde"), 6, 0, 0); + test(S("abcde"), 4, 2, S("abcdefghij"), 0, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghij"), 0, 1, 4); + test(S("abcde"), 4, 2, S("abcdefghij"), 0, 5, 4); + test(S("abcde"), 4, 2, S("abcdefghij"), 0, 9, 4); + test(S("abcde"), 4, 2, S("abcdefghij"), 0, 10, 4); + test(S("abcde"), 4, 2, S("abcdefghij"), 0, 11, 4); + test(S("abcde"), 4, 2, S("abcdefghij"), 1, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghij"), 1, 1, 3); + test(S("abcde"), 4, 2, S("abcdefghij"), 1, 4, 3); + test(S("abcde"), 4, 2, S("abcdefghij"), 1, 8, 3); + test(S("abcde"), 4, 2, S("abcdefghij"), 1, 9, 3); + test(S("abcde"), 4, 2, S("abcdefghij"), 1, 10, 3); + test(S("abcde"), 4, 2, S("abcdefghij"), 5, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghij"), 5, 1, -1); + test(S("abcde"), 4, 2, S("abcdefghij"), 5, 2, -1); + test(S("abcde"), 4, 2, S("abcdefghij"), 5, 4, -1); + test(S("abcde"), 4, 2, S("abcdefghij"), 5, 5, -1); + test(S("abcde"), 4, 2, S("abcdefghij"), 5, 6, -1); + test(S("abcde"), 4, 2, S("abcdefghij"), 9, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghij"), 9, 1, -5); + test(S("abcde"), 4, 2, S("abcdefghij"), 9, 2, -5); + test(S("abcde"), 4, 2, S("abcdefghij"), 10, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghij"), 10, 1, 1); + test(S("abcde"), 4, 2, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 10, 4); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 19, 4); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 20, 4); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 21, 4); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 9, 3); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 18, 3); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 19, 3); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 20, 3); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 1, -6); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 5, -6); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 9, -6); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 10, -6); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 11, -6); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 1, -15); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 2, -15); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test17() -{ - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 5, 0, S(""), 0, 0, 0); - test(S("abcde"), 5, 0, S(""), 0, 1, 0); - test(S("abcde"), 5, 0, S(""), 1, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 0, 1, -1); - test(S("abcde"), 5, 0, S("abcde"), 0, 2, -2); - test(S("abcde"), 5, 0, S("abcde"), 0, 4, -4); - test(S("abcde"), 5, 0, S("abcde"), 0, 5, -5); - test(S("abcde"), 5, 0, S("abcde"), 0, 6, -5); - test(S("abcde"), 5, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 1, 1, -1); - test(S("abcde"), 5, 0, S("abcde"), 1, 2, -2); - test(S("abcde"), 5, 0, S("abcde"), 1, 3, -3); - test(S("abcde"), 5, 0, S("abcde"), 1, 4, -4); - test(S("abcde"), 5, 0, S("abcde"), 1, 5, -4); - test(S("abcde"), 5, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 2, 1, -1); - test(S("abcde"), 5, 0, S("abcde"), 2, 2, -2); - test(S("abcde"), 5, 0, S("abcde"), 2, 3, -3); - test(S("abcde"), 5, 0, S("abcde"), 2, 4, -3); - test(S("abcde"), 5, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 4, 1, -1); - test(S("abcde"), 5, 0, S("abcde"), 4, 2, -1); - test(S("abcde"), 5, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 5, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 5, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 5, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 5, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 5, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 5, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 5, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 5, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 5, 1, S(""), 0, 0, 0); - test(S("abcde"), 5, 1, S(""), 0, 1, 0); - test(S("abcde"), 5, 1, S(""), 1, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 0, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 0, 1, -1); - test(S("abcde"), 5, 1, S("abcde"), 0, 2, -2); - test(S("abcde"), 5, 1, S("abcde"), 0, 4, -4); - test(S("abcde"), 5, 1, S("abcde"), 0, 5, -5); - test(S("abcde"), 5, 1, S("abcde"), 0, 6, -5); - test(S("abcde"), 5, 1, S("abcde"), 1, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 1, 1, -1); - test(S("abcde"), 5, 1, S("abcde"), 1, 2, -2); - test(S("abcde"), 5, 1, S("abcde"), 1, 3, -3); - test(S("abcde"), 5, 1, S("abcde"), 1, 4, -4); - test(S("abcde"), 5, 1, S("abcde"), 1, 5, -4); - test(S("abcde"), 5, 1, S("abcde"), 2, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 2, 1, -1); - test(S("abcde"), 5, 1, S("abcde"), 2, 2, -2); - test(S("abcde"), 5, 1, S("abcde"), 2, 3, -3); - test(S("abcde"), 5, 1, S("abcde"), 2, 4, -3); - test(S("abcde"), 5, 1, S("abcde"), 4, 0, 0); - test(S("abcde"), 5, 1, S("abcde"), 4, 1, -1); - test(S("abcde"), 5, 1, S("abcde"), 4, 2, -1); - test(S("abcde"), 5, 1, S("abcde"), 5, 0, 0); +TEST_CONSTEXPR_CXX20 bool test17() { + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 5, 0, S(""), 0, 0, 0); + test(S("abcde"), 5, 0, S(""), 0, 1, 0); + test(S("abcde"), 5, 0, S(""), 1, 0, 0); + test(S("abcde"), 5, 0, S("abcde"), 0, 0, 0); + test(S("abcde"), 5, 0, S("abcde"), 0, 1, -1); + test(S("abcde"), 5, 0, S("abcde"), 0, 2, -2); + test(S("abcde"), 5, 0, S("abcde"), 0, 4, -4); + test(S("abcde"), 5, 0, S("abcde"), 0, 5, -5); + test(S("abcde"), 5, 0, S("abcde"), 0, 6, -5); + test(S("abcde"), 5, 0, S("abcde"), 1, 0, 0); + test(S("abcde"), 5, 0, S("abcde"), 1, 1, -1); + test(S("abcde"), 5, 0, S("abcde"), 1, 2, -2); + test(S("abcde"), 5, 0, S("abcde"), 1, 3, -3); + test(S("abcde"), 5, 0, S("abcde"), 1, 4, -4); + test(S("abcde"), 5, 0, S("abcde"), 1, 5, -4); + test(S("abcde"), 5, 0, S("abcde"), 2, 0, 0); + test(S("abcde"), 5, 0, S("abcde"), 2, 1, -1); + test(S("abcde"), 5, 0, S("abcde"), 2, 2, -2); + test(S("abcde"), 5, 0, S("abcde"), 2, 3, -3); + test(S("abcde"), 5, 0, S("abcde"), 2, 4, -3); + test(S("abcde"), 5, 0, S("abcde"), 4, 0, 0); + test(S("abcde"), 5, 0, S("abcde"), 4, 1, -1); + test(S("abcde"), 5, 0, S("abcde"), 4, 2, -1); + test(S("abcde"), 5, 0, S("abcde"), 5, 0, 0); + test(S("abcde"), 5, 0, S("abcde"), 5, 1, 0); + test(S("abcde"), 5, 0, S("abcde"), 6, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcde"), 5, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcde"), 5, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcde"), 5, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcde"), 5, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcde"), 5, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 5, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcde"), 5, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcde"), 5, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcde"), 5, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcde"), 5, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcde"), 5, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcde"), 5, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 5, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 5, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 5, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcde"), 5, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcde"), 5, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcde"), 5, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 5, 1, S(""), 0, 0, 0); + test(S("abcde"), 5, 1, S(""), 0, 1, 0); + test(S("abcde"), 5, 1, S(""), 1, 0, 0); + test(S("abcde"), 5, 1, S("abcde"), 0, 0, 0); + test(S("abcde"), 5, 1, S("abcde"), 0, 1, -1); + test(S("abcde"), 5, 1, S("abcde"), 0, 2, -2); + test(S("abcde"), 5, 1, S("abcde"), 0, 4, -4); + test(S("abcde"), 5, 1, S("abcde"), 0, 5, -5); + test(S("abcde"), 5, 1, S("abcde"), 0, 6, -5); + test(S("abcde"), 5, 1, S("abcde"), 1, 0, 0); + test(S("abcde"), 5, 1, S("abcde"), 1, 1, -1); + test(S("abcde"), 5, 1, S("abcde"), 1, 2, -2); + test(S("abcde"), 5, 1, S("abcde"), 1, 3, -3); + test(S("abcde"), 5, 1, S("abcde"), 1, 4, -4); + test(S("abcde"), 5, 1, S("abcde"), 1, 5, -4); + test(S("abcde"), 5, 1, S("abcde"), 2, 0, 0); + test(S("abcde"), 5, 1, S("abcde"), 2, 1, -1); + test(S("abcde"), 5, 1, S("abcde"), 2, 2, -2); + test(S("abcde"), 5, 1, S("abcde"), 2, 3, -3); + test(S("abcde"), 5, 1, S("abcde"), 2, 4, -3); + test(S("abcde"), 5, 1, S("abcde"), 4, 0, 0); + test(S("abcde"), 5, 1, S("abcde"), 4, 1, -1); + test(S("abcde"), 5, 1, S("abcde"), 4, 2, -1); + test(S("abcde"), 5, 1, S("abcde"), 5, 0, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test18() -{ - test(S("abcde"), 5, 1, S("abcde"), 5, 1, 0); - test(S("abcde"), 5, 1, S("abcde"), 6, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 5, -5); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 9, -9); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 10, -10); - test(S("abcde"), 5, 1, S("abcdefghij"), 0, 11, -10); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 4, -4); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 8, -8); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 9, -9); - test(S("abcde"), 5, 1, S("abcdefghij"), 1, 10, -9); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 2, -2); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcde"), 5, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcde"), 5, 1, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 9, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 9, 2, -1); - test(S("abcde"), 5, 1, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 5, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcde"), 6, 0, S(""), 0, 0, 0); - test(S("abcde"), 6, 0, S(""), 0, 1, 0); - test(S("abcde"), 6, 0, S(""), 1, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 2, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 4, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 5, 0); - test(S("abcde"), 6, 0, S("abcde"), 0, 6, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 2, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 3, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 4, 0); - test(S("abcde"), 6, 0, S("abcde"), 1, 5, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 2, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 3, 0); - test(S("abcde"), 6, 0, S("abcde"), 2, 4, 0); - test(S("abcde"), 6, 0, S("abcde"), 4, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 4, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 4, 2, 0); - test(S("abcde"), 6, 0, S("abcde"), 5, 0, 0); - test(S("abcde"), 6, 0, S("abcde"), 5, 1, 0); - test(S("abcde"), 6, 0, S("abcde"), 6, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 5, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 9, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 10, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 0, 11, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 4, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 8, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 9, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 1, 10, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 2, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 4, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 5, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 5, 6, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 9, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 9, 2, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghij"), 11, 0, 0); +TEST_CONSTEXPR_CXX20 bool test18() { + test(S("abcde"), 5, 1, S("abcde"), 5, 1, 0); + test(S("abcde"), 5, 1, S("abcde"), 6, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghij"), 0, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghij"), 0, 1, -1); + test(S("abcde"), 5, 1, S("abcdefghij"), 0, 5, -5); + test(S("abcde"), 5, 1, S("abcdefghij"), 0, 9, -9); + test(S("abcde"), 5, 1, S("abcdefghij"), 0, 10, -10); + test(S("abcde"), 5, 1, S("abcdefghij"), 0, 11, -10); + test(S("abcde"), 5, 1, S("abcdefghij"), 1, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghij"), 1, 1, -1); + test(S("abcde"), 5, 1, S("abcdefghij"), 1, 4, -4); + test(S("abcde"), 5, 1, S("abcdefghij"), 1, 8, -8); + test(S("abcde"), 5, 1, S("abcdefghij"), 1, 9, -9); + test(S("abcde"), 5, 1, S("abcdefghij"), 1, 10, -9); + test(S("abcde"), 5, 1, S("abcdefghij"), 5, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghij"), 5, 1, -1); + test(S("abcde"), 5, 1, S("abcdefghij"), 5, 2, -2); + test(S("abcde"), 5, 1, S("abcdefghij"), 5, 4, -4); + test(S("abcde"), 5, 1, S("abcdefghij"), 5, 5, -5); + test(S("abcde"), 5, 1, S("abcdefghij"), 5, 6, -5); + test(S("abcde"), 5, 1, S("abcdefghij"), 9, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghij"), 9, 1, -1); + test(S("abcde"), 5, 1, S("abcdefghij"), 9, 2, -1); + test(S("abcde"), 5, 1, S("abcdefghij"), 10, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghij"), 10, 1, 0); + test(S("abcde"), 5, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcde"), 6, 0, S(""), 0, 0, 0); + test(S("abcde"), 6, 0, S(""), 0, 1, 0); + test(S("abcde"), 6, 0, S(""), 1, 0, 0); + test(S("abcde"), 6, 0, S("abcde"), 0, 0, 0); + test(S("abcde"), 6, 0, S("abcde"), 0, 1, 0); + test(S("abcde"), 6, 0, S("abcde"), 0, 2, 0); + test(S("abcde"), 6, 0, S("abcde"), 0, 4, 0); + test(S("abcde"), 6, 0, S("abcde"), 0, 5, 0); + test(S("abcde"), 6, 0, S("abcde"), 0, 6, 0); + test(S("abcde"), 6, 0, S("abcde"), 1, 0, 0); + test(S("abcde"), 6, 0, S("abcde"), 1, 1, 0); + test(S("abcde"), 6, 0, S("abcde"), 1, 2, 0); + test(S("abcde"), 6, 0, S("abcde"), 1, 3, 0); + test(S("abcde"), 6, 0, S("abcde"), 1, 4, 0); + test(S("abcde"), 6, 0, S("abcde"), 1, 5, 0); + test(S("abcde"), 6, 0, S("abcde"), 2, 0, 0); + test(S("abcde"), 6, 0, S("abcde"), 2, 1, 0); + test(S("abcde"), 6, 0, S("abcde"), 2, 2, 0); + test(S("abcde"), 6, 0, S("abcde"), 2, 3, 0); + test(S("abcde"), 6, 0, S("abcde"), 2, 4, 0); + test(S("abcde"), 6, 0, S("abcde"), 4, 0, 0); + test(S("abcde"), 6, 0, S("abcde"), 4, 1, 0); + test(S("abcde"), 6, 0, S("abcde"), 4, 2, 0); + test(S("abcde"), 6, 0, S("abcde"), 5, 0, 0); + test(S("abcde"), 6, 0, S("abcde"), 5, 1, 0); + test(S("abcde"), 6, 0, S("abcde"), 6, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 0, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 0, 5, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 0, 9, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 0, 10, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 0, 11, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 1, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 1, 4, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 1, 8, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 1, 9, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 1, 10, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 5, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 5, 2, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 5, 4, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 5, 5, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 5, 6, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 9, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 9, 2, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghij"), 11, 0, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test19() -{ - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 0, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 0, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 0, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 0, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 0, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 0, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 0, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 0, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 1, S(""), 0, 0, 1); - test(S("abcdefghij"), 0, 1, S(""), 0, 1, 1); +TEST_CONSTEXPR_CXX20 bool test19() { + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 0, S(""), 0, 0, 0); + test(S("abcdefghij"), 0, 0, S(""), 0, 1, 0); + test(S("abcdefghij"), 0, 0, S(""), 1, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghij"), 0, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghij"), 0, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghij"), 0, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghij"), 0, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghij"), 0, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghij"), 0, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghij"), 0, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghij"), 0, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghij"), 0, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghij"), 0, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghij"), 0, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghij"), 0, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 1, S(""), 0, 0, 1); + test(S("abcdefghij"), 0, 1, S(""), 0, 1, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test20() -{ - test(S("abcdefghij"), 0, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 2, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 4, -3); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 5, -4); - test(S("abcdefghij"), 0, 1, S("abcde"), 0, 6, -4); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 1, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 1, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 0, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 5, -4); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 9, -8); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 10, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 11, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 5, S(""), 0, 0, 5); - test(S("abcdefghij"), 0, 5, S(""), 0, 1, 5); - test(S("abcdefghij"), 0, 5, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 1, 4); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 2, 3); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 5, 0); - test(S("abcdefghij"), 0, 5, S("abcde"), 0, 6, 0); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 5, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 5, S("abcde"), 4, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 5, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 5, S("abcde"), 5, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 5, 1, 5); - test(S("abcdefghij"), 0, 5, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 1, 4); +TEST_CONSTEXPR_CXX20 bool test20() { + test(S("abcdefghij"), 0, 1, S(""), 1, 0, 0); + test(S("abcdefghij"), 0, 1, S("abcde"), 0, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcde"), 0, 1, 0); + test(S("abcdefghij"), 0, 1, S("abcde"), 0, 2, -1); + test(S("abcdefghij"), 0, 1, S("abcde"), 0, 4, -3); + test(S("abcdefghij"), 0, 1, S("abcde"), 0, 5, -4); + test(S("abcdefghij"), 0, 1, S("abcde"), 0, 6, -4); + test(S("abcdefghij"), 0, 1, S("abcde"), 1, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 1, S("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 1, S("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 1, S("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 1, S("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 1, S("abcde"), 2, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 1, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 1, S("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 1, S("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 1, S("abcde"), 4, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 1, S("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 1, S("abcde"), 5, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcde"), 5, 1, 1); + test(S("abcdefghij"), 0, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 1, 0); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 5, -4); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 9, -8); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 10, -9); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 11, -9); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 5, S(""), 0, 0, 5); + test(S("abcdefghij"), 0, 5, S(""), 0, 1, 5); + test(S("abcdefghij"), 0, 5, S(""), 1, 0, 0); + test(S("abcdefghij"), 0, 5, S("abcde"), 0, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcde"), 0, 1, 4); + test(S("abcdefghij"), 0, 5, S("abcde"), 0, 2, 3); + test(S("abcdefghij"), 0, 5, S("abcde"), 0, 4, 1); + test(S("abcdefghij"), 0, 5, S("abcde"), 0, 5, 0); + test(S("abcdefghij"), 0, 5, S("abcde"), 0, 6, 0); + test(S("abcdefghij"), 0, 5, S("abcde"), 1, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 5, S("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 5, S("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 5, S("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 5, S("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 5, S("abcde"), 2, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 5, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 5, S("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 5, S("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 5, S("abcde"), 4, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 5, S("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 5, S("abcde"), 5, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcde"), 5, 1, 5); + test(S("abcdefghij"), 0, 5, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 1, 4); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test21() -{ - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 5, 0); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 9, -4); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 10, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 11, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 9, S(""), 0, 0, 9); - test(S("abcdefghij"), 0, 9, S(""), 0, 1, 9); - test(S("abcdefghij"), 0, 9, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 2, 7); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 5, 4); - test(S("abcdefghij"), 0, 9, S("abcde"), 0, 6, 4); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 9, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 9, S("abcde"), 4, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 9, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 9, S("abcde"), 5, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 5, 1, 9); - test(S("abcdefghij"), 0, 9, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 5, 4); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 9, 0); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 10, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 11, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 1, 8); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 10, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 19, -10); +TEST_CONSTEXPR_CXX20 bool test21() { + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 5, 0); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 9, -4); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 10, -5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 11, -5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 1, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 9, S(""), 0, 0, 9); + test(S("abcdefghij"), 0, 9, S(""), 0, 1, 9); + test(S("abcdefghij"), 0, 9, S(""), 1, 0, 0); + test(S("abcdefghij"), 0, 9, S("abcde"), 0, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcde"), 0, 1, 8); + test(S("abcdefghij"), 0, 9, S("abcde"), 0, 2, 7); + test(S("abcdefghij"), 0, 9, S("abcde"), 0, 4, 5); + test(S("abcdefghij"), 0, 9, S("abcde"), 0, 5, 4); + test(S("abcdefghij"), 0, 9, S("abcde"), 0, 6, 4); + test(S("abcdefghij"), 0, 9, S("abcde"), 1, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 9, S("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 9, S("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 9, S("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 9, S("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 9, S("abcde"), 2, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 9, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 9, S("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 9, S("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 9, S("abcde"), 4, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 9, S("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 9, S("abcde"), 5, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcde"), 5, 1, 9); + test(S("abcdefghij"), 0, 9, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 1, 8); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 5, 4); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 9, 0); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 10, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 11, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 1, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 1, 8); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 10, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 19, -10); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test22() -{ - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 20, -11); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 21, -11); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 10, S(""), 0, 0, 10); - test(S("abcdefghij"), 0, 10, S(""), 0, 1, 10); - test(S("abcdefghij"), 0, 10, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 2, 8); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 4, 6); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 0, 10, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 10, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 10, S("abcde"), 4, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 10, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 10, S("abcde"), 5, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 5, 1, 10); - test(S("abcdefghij"), 0, 10, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 0, 11, S(""), 0, 0, 10); - test(S("abcdefghij"), 0, 11, S(""), 0, 1, 10); - test(S("abcdefghij"), 0, 11, S(""), 1, 0, 0); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 2, 8); +TEST_CONSTEXPR_CXX20 bool test22() { + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 20, -11); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 21, -11); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 10, S(""), 0, 0, 10); + test(S("abcdefghij"), 0, 10, S(""), 0, 1, 10); + test(S("abcdefghij"), 0, 10, S(""), 1, 0, 0); + test(S("abcdefghij"), 0, 10, S("abcde"), 0, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcde"), 0, 1, 9); + test(S("abcdefghij"), 0, 10, S("abcde"), 0, 2, 8); + test(S("abcdefghij"), 0, 10, S("abcde"), 0, 4, 6); + test(S("abcdefghij"), 0, 10, S("abcde"), 0, 5, 5); + test(S("abcdefghij"), 0, 10, S("abcde"), 0, 6, 5); + test(S("abcdefghij"), 0, 10, S("abcde"), 1, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 10, S("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 10, S("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 10, S("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 10, S("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 10, S("abcde"), 2, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 10, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 10, S("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 10, S("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 10, S("abcde"), 4, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 10, S("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 10, S("abcde"), 5, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcde"), 5, 1, 10); + test(S("abcdefghij"), 0, 10, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 1, 9); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 10, 0); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 11, 0); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 1, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 0, 11, S(""), 0, 0, 10); + test(S("abcdefghij"), 0, 11, S(""), 0, 1, 10); + test(S("abcdefghij"), 0, 11, S(""), 1, 0, 0); + test(S("abcdefghij"), 0, 11, S("abcde"), 0, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcde"), 0, 1, 9); + test(S("abcdefghij"), 0, 11, S("abcde"), 0, 2, 8); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test23() -{ - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 4, 6); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 0, 11, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 3, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 4, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 1, 5, -1); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 1, -2); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 3, -2); - test(S("abcdefghij"), 0, 11, S("abcde"), 2, 4, -2); - test(S("abcdefghij"), 0, 11, S("abcde"), 4, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 4, 1, -4); - test(S("abcdefghij"), 0, 11, S("abcde"), 4, 2, -4); - test(S("abcdefghij"), 0, 11, S("abcde"), 5, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 5, 1, 10); - test(S("abcdefghij"), 0, 11, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 1, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 1, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 1, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 1, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 1, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 1, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 1, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 1, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 11, -10); +TEST_CONSTEXPR_CXX20 bool test23() { + test(S("abcdefghij"), 0, 11, S("abcde"), 0, 4, 6); + test(S("abcdefghij"), 0, 11, S("abcde"), 0, 5, 5); + test(S("abcdefghij"), 0, 11, S("abcde"), 0, 6, 5); + test(S("abcdefghij"), 0, 11, S("abcde"), 1, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 0, 11, S("abcde"), 1, 2, -1); + test(S("abcdefghij"), 0, 11, S("abcde"), 1, 3, -1); + test(S("abcdefghij"), 0, 11, S("abcde"), 1, 4, -1); + test(S("abcdefghij"), 0, 11, S("abcde"), 1, 5, -1); + test(S("abcdefghij"), 0, 11, S("abcde"), 2, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcde"), 2, 1, -2); + test(S("abcdefghij"), 0, 11, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 0, 11, S("abcde"), 2, 3, -2); + test(S("abcdefghij"), 0, 11, S("abcde"), 2, 4, -2); + test(S("abcdefghij"), 0, 11, S("abcde"), 4, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcde"), 4, 1, -4); + test(S("abcdefghij"), 0, 11, S("abcde"), 4, 2, -4); + test(S("abcdefghij"), 0, 11, S("abcde"), 5, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcde"), 5, 1, 10); + test(S("abcdefghij"), 0, 11, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 1, 9); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 10, 0); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 11, 0); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 1, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 1, 9); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 19, -9); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 20, -10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 21, -10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 0, S(""), 0, 0, 0); + test(S("abcdefghij"), 1, 0, S(""), 0, 1, 0); + test(S("abcdefghij"), 1, 0, S(""), 1, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghij"), 1, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghij"), 1, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghij"), 1, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghij"), 1, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghij"), 1, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghij"), 1, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghij"), 1, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghij"), 1, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 1, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghij"), 1, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghij"), 1, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghij"), 1, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghij"), 1, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 11, -10); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test24() -{ - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 1, S(""), 0, 0, 1); - test(S("abcdefghij"), 1, 1, S(""), 0, 1, 1); - test(S("abcdefghij"), 1, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 1, 0); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 2, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 3, -2); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 4, -3); - test(S("abcdefghij"), 1, 1, S("abcde"), 1, 5, -3); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 1, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 1, 0); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 4, -3); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 8, -7); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 9, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 10, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); +TEST_CONSTEXPR_CXX20 bool test24() { + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 1, S(""), 0, 0, 1); + test(S("abcdefghij"), 1, 1, S(""), 0, 1, 1); + test(S("abcdefghij"), 1, 1, S(""), 1, 0, 0); + test(S("abcdefghij"), 1, 1, S("abcde"), 0, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 1, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 1, 1, 0); + test(S("abcdefghij"), 1, 1, S("abcde"), 1, 2, -1); + test(S("abcdefghij"), 1, 1, S("abcde"), 1, 3, -2); + test(S("abcdefghij"), 1, 1, S("abcde"), 1, 4, -3); + test(S("abcdefghij"), 1, 1, S("abcde"), 1, 5, -3); + test(S("abcdefghij"), 1, 1, S("abcde"), 2, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 1, S("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 1, S("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 1, S("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 1, S("abcde"), 4, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 1, S("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 1, S("abcde"), 5, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 5, 1, 1); + test(S("abcdefghij"), 1, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 1, 0); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 4, -3); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 8, -7); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 9, -8); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 10, -8); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test25() -{ - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 4, S(""), 0, 0, 4); - test(S("abcdefghij"), 1, 4, S(""), 0, 1, 4); - test(S("abcdefghij"), 1, 4, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 2, 2); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 3, 1); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 4, 0); - test(S("abcdefghij"), 1, 4, S("abcde"), 1, 5, 0); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 4, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 4, S("abcde"), 4, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 4, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 4, S("abcde"), 5, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 5, 1, 4); - test(S("abcdefghij"), 1, 4, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 4, 0); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 8, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 9, -5); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 10, -5); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 1, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 8, S(""), 0, 0, 8); - test(S("abcdefghij"), 1, 8, S(""), 0, 1, 8); - test(S("abcdefghij"), 1, 8, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 0, 8); +TEST_CONSTEXPR_CXX20 bool test25() { + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 4, S(""), 0, 0, 4); + test(S("abcdefghij"), 1, 4, S(""), 0, 1, 4); + test(S("abcdefghij"), 1, 4, S(""), 1, 0, 0); + test(S("abcdefghij"), 1, 4, S("abcde"), 0, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 4, S("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 4, S("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 4, S("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 4, S("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 4, S("abcde"), 1, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcde"), 1, 1, 3); + test(S("abcdefghij"), 1, 4, S("abcde"), 1, 2, 2); + test(S("abcdefghij"), 1, 4, S("abcde"), 1, 3, 1); + test(S("abcdefghij"), 1, 4, S("abcde"), 1, 4, 0); + test(S("abcdefghij"), 1, 4, S("abcde"), 1, 5, 0); + test(S("abcdefghij"), 1, 4, S("abcde"), 2, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 4, S("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 4, S("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 4, S("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 4, S("abcde"), 4, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 4, S("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 4, S("abcde"), 5, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcde"), 5, 1, 4); + test(S("abcdefghij"), 1, 4, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 1, 3); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 4, 0); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 8, -4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 9, -5); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 10, -5); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 1, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 8, S(""), 0, 0, 8); + test(S("abcdefghij"), 1, 8, S(""), 0, 1, 8); + test(S("abcdefghij"), 1, 8, S(""), 1, 0, 0); + test(S("abcdefghij"), 1, 8, S("abcde"), 0, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 8, S("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 8, S("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 8, S("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 8, S("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 8, S("abcde"), 1, 0, 8); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test26() -{ - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 2, 6); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 3, 5); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 1, 8, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 8, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 8, S("abcde"), 4, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 8, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 8, S("abcde"), 5, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 5, 1, 8); - test(S("abcdefghij"), 1, 8, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 8, 0); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 1, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 1, 7); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 18, -10); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 19, -11); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 20, -11); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 0, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 1, 8); - test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 9, S(""), 0, 0, 9); - test(S("abcdefghij"), 1, 9, S(""), 0, 1, 9); - test(S("abcdefghij"), 1, 9, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 2, 7); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 3, 6); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 4, 5); - test(S("abcdefghij"), 1, 9, S("abcde"), 1, 5, 5); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 9, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 9, S("abcde"), 4, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 9, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 9, S("abcde"), 5, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 5, 1, 9); - test(S("abcdefghij"), 1, 9, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 4, 5); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 8, 1); +TEST_CONSTEXPR_CXX20 bool test26() { + test(S("abcdefghij"), 1, 8, S("abcde"), 1, 1, 7); + test(S("abcdefghij"), 1, 8, S("abcde"), 1, 2, 6); + test(S("abcdefghij"), 1, 8, S("abcde"), 1, 3, 5); + test(S("abcdefghij"), 1, 8, S("abcde"), 1, 4, 4); + test(S("abcdefghij"), 1, 8, S("abcde"), 1, 5, 4); + test(S("abcdefghij"), 1, 8, S("abcde"), 2, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 8, S("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 8, S("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 8, S("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 8, S("abcde"), 4, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 8, S("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 8, S("abcde"), 5, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcde"), 5, 1, 8); + test(S("abcdefghij"), 1, 8, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 1, 7); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 8, 0); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 1, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 1, 7); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 18, -10); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 19, -11); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 20, -11); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 0, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 1, 8); + test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 9, S(""), 0, 0, 9); + test(S("abcdefghij"), 1, 9, S(""), 0, 1, 9); + test(S("abcdefghij"), 1, 9, S(""), 1, 0, 0); + test(S("abcdefghij"), 1, 9, S("abcde"), 0, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 9, S("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 9, S("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 9, S("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 9, S("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 9, S("abcde"), 1, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcde"), 1, 1, 8); + test(S("abcdefghij"), 1, 9, S("abcde"), 1, 2, 7); + test(S("abcdefghij"), 1, 9, S("abcde"), 1, 3, 6); + test(S("abcdefghij"), 1, 9, S("abcde"), 1, 4, 5); + test(S("abcdefghij"), 1, 9, S("abcde"), 1, 5, 5); + test(S("abcdefghij"), 1, 9, S("abcde"), 2, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 9, S("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 9, S("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 9, S("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 9, S("abcde"), 4, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 9, S("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 9, S("abcde"), 5, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcde"), 5, 1, 9); + test(S("abcdefghij"), 1, 9, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 1, 8); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 4, 5); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 8, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test27() -{ - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 1, 10, S(""), 0, 0, 9); - test(S("abcdefghij"), 1, 10, S(""), 0, 1, 9); - test(S("abcdefghij"), 1, 10, S(""), 1, 0, 0); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 2, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 4, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 5, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 0, 6, 1); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 2, 7); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 3, 6); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 4, 5); - test(S("abcdefghij"), 1, 10, S("abcde"), 1, 5, 5); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 2, -1); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 3, -1); - test(S("abcdefghij"), 1, 10, S("abcde"), 2, 4, -1); - test(S("abcdefghij"), 1, 10, S("abcde"), 4, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 4, 1, -3); - test(S("abcdefghij"), 1, 10, S("abcde"), 4, 2, -3); - test(S("abcdefghij"), 1, 10, S("abcde"), 5, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 5, 1, 9); - test(S("abcdefghij"), 1, 10, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 4, 5); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 8, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 20, -10); +TEST_CONSTEXPR_CXX20 bool test27() { + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 9, 0); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 10, 0); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 1, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 1, 10, S(""), 0, 0, 9); + test(S("abcdefghij"), 1, 10, S(""), 0, 1, 9); + test(S("abcdefghij"), 1, 10, S(""), 1, 0, 0); + test(S("abcdefghij"), 1, 10, S("abcde"), 0, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcde"), 0, 1, 1); + test(S("abcdefghij"), 1, 10, S("abcde"), 0, 2, 1); + test(S("abcdefghij"), 1, 10, S("abcde"), 0, 4, 1); + test(S("abcdefghij"), 1, 10, S("abcde"), 0, 5, 1); + test(S("abcdefghij"), 1, 10, S("abcde"), 0, 6, 1); + test(S("abcdefghij"), 1, 10, S("abcde"), 1, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcde"), 1, 1, 8); + test(S("abcdefghij"), 1, 10, S("abcde"), 1, 2, 7); + test(S("abcdefghij"), 1, 10, S("abcde"), 1, 3, 6); + test(S("abcdefghij"), 1, 10, S("abcde"), 1, 4, 5); + test(S("abcdefghij"), 1, 10, S("abcde"), 1, 5, 5); + test(S("abcdefghij"), 1, 10, S("abcde"), 2, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 1, 10, S("abcde"), 2, 2, -1); + test(S("abcdefghij"), 1, 10, S("abcde"), 2, 3, -1); + test(S("abcdefghij"), 1, 10, S("abcde"), 2, 4, -1); + test(S("abcdefghij"), 1, 10, S("abcde"), 4, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcde"), 4, 1, -3); + test(S("abcdefghij"), 1, 10, S("abcde"), 4, 2, -3); + test(S("abcdefghij"), 1, 10, S("abcde"), 5, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcde"), 5, 1, 9); + test(S("abcdefghij"), 1, 10, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 1, 8); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 4, 5); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 8, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 9, 0); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 10, 0); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 1, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 18, -9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 19, -10); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 20, -10); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test28() -{ - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 5, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 5, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 5, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 5, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 5, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 5, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 5, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 5, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 1, S(""), 0, 0, 1); - test(S("abcdefghij"), 5, 1, S(""), 0, 1, 1); - test(S("abcdefghij"), 5, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 4, 4); +TEST_CONSTEXPR_CXX20 bool test28() { + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 0, S(""), 0, 0, 0); + test(S("abcdefghij"), 5, 0, S(""), 0, 1, 0); + test(S("abcdefghij"), 5, 0, S(""), 1, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghij"), 5, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghij"), 5, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghij"), 5, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghij"), 5, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghij"), 5, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghij"), 5, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghij"), 5, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghij"), 5, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 5, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghij"), 5, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghij"), 5, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghij"), 5, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghij"), 5, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 1, S(""), 0, 0, 1); + test(S("abcdefghij"), 5, 1, S(""), 0, 1, 1); + test(S("abcdefghij"), 5, 1, S(""), 1, 0, 0); + test(S("abcdefghij"), 5, 1, S("abcde"), 0, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 1, S("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 1, S("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 1, S("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 1, S("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 1, S("abcde"), 1, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 1, S("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 1, S("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 1, S("abcde"), 1, 4, 4); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test29() -{ - test(S("abcdefghij"), 5, 1, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 1, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 5, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 1, 0); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 2, -1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 4, -3); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 2, S(""), 0, 0, 2); - test(S("abcdefghij"), 5, 2, S(""), 0, 1, 2); - test(S("abcdefghij"), 5, 2, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 2, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 2, S("abcde"), 4, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 2, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 2, S("abcde"), 5, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 5, 1, 2); - test(S("abcdefghij"), 5, 2, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 1, 1); +TEST_CONSTEXPR_CXX20 bool test29() { + test(S("abcdefghij"), 5, 1, S("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 1, S("abcde"), 2, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 1, S("abcde"), 2, 2, 3); + test(S("abcdefghij"), 5, 1, S("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 1, S("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 1, S("abcde"), 4, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 5, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 5, 1, 1); + test(S("abcdefghij"), 5, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 1, 0); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 2, -1); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 4, -3); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 2, S(""), 0, 0, 2); + test(S("abcdefghij"), 5, 2, S(""), 0, 1, 2); + test(S("abcdefghij"), 5, 2, S(""), 1, 0, 0); + test(S("abcdefghij"), 5, 2, S("abcde"), 0, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 2, S("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 2, S("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 2, S("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 2, S("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 2, S("abcde"), 1, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 2, S("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 2, S("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 2, S("abcde"), 1, 4, 4); + test(S("abcdefghij"), 5, 2, S("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 2, S("abcde"), 2, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 2, S("abcde"), 2, 2, 3); + test(S("abcdefghij"), 5, 2, S("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 2, S("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 2, S("abcde"), 4, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 2, S("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 2, S("abcde"), 5, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcde"), 5, 1, 2); + test(S("abcdefghij"), 5, 2, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 1, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test30() -{ - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 2, 0); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 4, -2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 5, -3); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 6, -3); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 1, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); - test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 4, S(""), 0, 0, 4); - test(S("abcdefghij"), 5, 4, S(""), 0, 1, 4); - test(S("abcdefghij"), 5, 4, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 4, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 4, S("abcde"), 4, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 4, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 4, S("abcde"), 5, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 5, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 1, 3); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 2, 2); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 4, 0); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 5, -1); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 6, -1); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 9, -5); +TEST_CONSTEXPR_CXX20 bool test30() { + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 2, 0); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 4, -2); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 5, -3); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 6, -3); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 1, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 9, -5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 0, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 1, 2); + test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 4, S(""), 0, 0, 4); + test(S("abcdefghij"), 5, 4, S(""), 0, 1, 4); + test(S("abcdefghij"), 5, 4, S(""), 1, 0, 0); + test(S("abcdefghij"), 5, 4, S("abcde"), 0, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 4, S("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 4, S("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 4, S("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 4, S("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 4, S("abcde"), 1, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 1, 4, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 2, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 4, S("abcde"), 2, 2, 3); + test(S("abcdefghij"), 5, 4, S("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 4, S("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 4, S("abcde"), 4, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 4, S("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 4, S("abcde"), 5, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 5, 1, 4); + test(S("abcdefghij"), 5, 4, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 1, 3); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 2, 2); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 4, 0); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 5, -1); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 6, -1); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 1, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 9, -5); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test31() -{ - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); - test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 5, S(""), 0, 0, 5); - test(S("abcdefghij"), 5, 5, S(""), 0, 1, 5); - test(S("abcdefghij"), 5, 5, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 2, 3); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 5, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 5, S("abcde"), 4, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 5, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 5, S("abcde"), 5, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 5, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 2, 3); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 4, 1); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 5, 6, S(""), 0, 0, 5); - test(S("abcdefghij"), 5, 6, S(""), 0, 1, 5); - test(S("abcdefghij"), 5, 6, S(""), 1, 0, 0); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 2, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 4, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 5, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 0, 6, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 2, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 3, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 4, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 1, 5, 4); - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 1, 3); - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 2, 3); +TEST_CONSTEXPR_CXX20 bool test31() { + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 0, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 1, 4); + test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 5, S(""), 0, 0, 5); + test(S("abcdefghij"), 5, 5, S(""), 0, 1, 5); + test(S("abcdefghij"), 5, 5, S(""), 1, 0, 0); + test(S("abcdefghij"), 5, 5, S("abcde"), 0, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 1, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 5, S("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 5, S("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 5, S("abcde"), 1, 4, 4); + test(S("abcdefghij"), 5, 5, S("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 5, S("abcde"), 2, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 5, S("abcde"), 2, 2, 3); + test(S("abcdefghij"), 5, 5, S("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 5, S("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 5, S("abcde"), 4, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 5, S("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 5, S("abcde"), 5, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 5, 1, 5); + test(S("abcdefghij"), 5, 5, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 1, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 2, 3); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 4, 1); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 5, 0); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 6, 0); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 1, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 9, -5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 5, 6, S(""), 0, 0, 5); + test(S("abcdefghij"), 5, 6, S(""), 0, 1, 5); + test(S("abcdefghij"), 5, 6, S(""), 1, 0, 0); + test(S("abcdefghij"), 5, 6, S("abcde"), 0, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 0, 1, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 0, 2, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 0, 4, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 0, 5, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 0, 6, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 1, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 1, 1, 4); + test(S("abcdefghij"), 5, 6, S("abcde"), 1, 2, 4); + test(S("abcdefghij"), 5, 6, S("abcde"), 1, 3, 4); + test(S("abcdefghij"), 5, 6, S("abcde"), 1, 4, 4); + test(S("abcdefghij"), 5, 6, S("abcde"), 1, 5, 4); + test(S("abcdefghij"), 5, 6, S("abcde"), 2, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 2, 1, 3); + test(S("abcdefghij"), 5, 6, S("abcde"), 2, 2, 3); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test32() -{ - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 3, 3); - test(S("abcdefghij"), 5, 6, S("abcde"), 2, 4, 3); - test(S("abcdefghij"), 5, 6, S("abcde"), 4, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 4, 1, 1); - test(S("abcdefghij"), 5, 6, S("abcde"), 4, 2, 1); - test(S("abcdefghij"), 5, 6, S("abcde"), 5, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 5, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 9, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 10, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 11, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 4, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 8, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 9, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 10, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 2, 3); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 4, 1); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 1, -4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 2, -4); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 10, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 19, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 20, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 21, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 1, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 9, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 18, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 19, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 20, 4); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 1, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 9, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 1, -14); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 2, -14); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 9, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 9, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 9, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 9, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 9, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 9, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 9, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 9, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 6, -5); +TEST_CONSTEXPR_CXX20 bool test32() { + test(S("abcdefghij"), 5, 6, S("abcde"), 2, 3, 3); + test(S("abcdefghij"), 5, 6, S("abcde"), 2, 4, 3); + test(S("abcdefghij"), 5, 6, S("abcde"), 4, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 4, 1, 1); + test(S("abcdefghij"), 5, 6, S("abcde"), 4, 2, 1); + test(S("abcdefghij"), 5, 6, S("abcde"), 5, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 5, 1, 5); + test(S("abcdefghij"), 5, 6, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 1, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 5, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 9, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 10, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 11, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 1, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 4, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 8, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 9, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 10, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 1, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 2, 3); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 4, 1); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 5, 0); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 6, 0); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 1, -4); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 2, -4); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 1, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 1, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 10, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 19, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 20, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 21, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 1, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 9, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 18, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 19, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 20, 4); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 1, -5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 9, -5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 1, -14); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 2, -14); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 9, 0, S(""), 0, 0, 0); + test(S("abcdefghij"), 9, 0, S(""), 0, 1, 0); + test(S("abcdefghij"), 9, 0, S(""), 1, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghij"), 9, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghij"), 9, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghij"), 9, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghij"), 9, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghij"), 9, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghij"), 9, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghij"), 9, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghij"), 9, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 9, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghij"), 9, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghij"), 9, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghij"), 9, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghij"), 9, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 6, -5); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test33() -{ - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 1, S(""), 0, 0, 1); - test(S("abcdefghij"), 9, 1, S(""), 0, 1, 1); - test(S("abcdefghij"), 9, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 2, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 4, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 5, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 0, 6, 9); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 2, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 3, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 4, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 1, 5, 8); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 1, 7); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 2, 7); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 3, 7); - test(S("abcdefghij"), 9, 1, S("abcde"), 2, 4, 7); - test(S("abcdefghij"), 9, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 4, 1, 5); - test(S("abcdefghij"), 9, 1, S("abcde"), 4, 2, 5); - test(S("abcdefghij"), 9, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 9, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 5, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 9, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 10, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 11, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 4, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 8, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 9, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 10, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 2, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 4, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 5, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 6, 4); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 19, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 20, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 21, 9); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 9, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 18, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 19, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 20, 8); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 5, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 9, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 1, -10); +TEST_CONSTEXPR_CXX20 bool test33() { + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 9, 1, S(""), 0, 0, 1); + test(S("abcdefghij"), 9, 1, S(""), 0, 1, 1); + test(S("abcdefghij"), 9, 1, S(""), 1, 0, 0); + test(S("abcdefghij"), 9, 1, S("abcde"), 0, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcde"), 0, 1, 9); + test(S("abcdefghij"), 9, 1, S("abcde"), 0, 2, 9); + test(S("abcdefghij"), 9, 1, S("abcde"), 0, 4, 9); + test(S("abcdefghij"), 9, 1, S("abcde"), 0, 5, 9); + test(S("abcdefghij"), 9, 1, S("abcde"), 0, 6, 9); + test(S("abcdefghij"), 9, 1, S("abcde"), 1, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcde"), 1, 1, 8); + test(S("abcdefghij"), 9, 1, S("abcde"), 1, 2, 8); + test(S("abcdefghij"), 9, 1, S("abcde"), 1, 3, 8); + test(S("abcdefghij"), 9, 1, S("abcde"), 1, 4, 8); + test(S("abcdefghij"), 9, 1, S("abcde"), 1, 5, 8); + test(S("abcdefghij"), 9, 1, S("abcde"), 2, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcde"), 2, 1, 7); + test(S("abcdefghij"), 9, 1, S("abcde"), 2, 2, 7); + test(S("abcdefghij"), 9, 1, S("abcde"), 2, 3, 7); + test(S("abcdefghij"), 9, 1, S("abcde"), 2, 4, 7); + test(S("abcdefghij"), 9, 1, S("abcde"), 4, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcde"), 4, 1, 5); + test(S("abcdefghij"), 9, 1, S("abcde"), 4, 2, 5); + test(S("abcdefghij"), 9, 1, S("abcde"), 5, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcde"), 5, 1, 1); + test(S("abcdefghij"), 9, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 1, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 5, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 9, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 10, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 11, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 1, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 4, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 8, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 9, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 10, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 1, 4); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 2, 4); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 4, 4); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 5, 4); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 6, 4); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 1, 0); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 2, 0); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 1, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 10, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 19, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 20, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 21, 9); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 9, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 18, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 19, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 20, 8); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 5, -1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 9, -1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 10, -1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 11, -1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 1, -10); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test34() -{ - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 2, -10); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 9, 2, S(""), 0, 0, 1); - test(S("abcdefghij"), 9, 2, S(""), 0, 1, 1); - test(S("abcdefghij"), 9, 2, S(""), 1, 0, 0); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 2, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 4, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 5, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 0, 6, 9); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 2, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 3, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 4, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 1, 5, 8); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 1, 7); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 2, 7); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 3, 7); - test(S("abcdefghij"), 9, 2, S("abcde"), 2, 4, 7); - test(S("abcdefghij"), 9, 2, S("abcde"), 4, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 4, 1, 5); - test(S("abcdefghij"), 9, 2, S("abcde"), 4, 2, 5); - test(S("abcdefghij"), 9, 2, S("abcde"), 5, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 5, 1, 1); - test(S("abcdefghij"), 9, 2, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 5, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 9, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 10, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 11, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 4, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 8, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 9, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 10, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 1, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 2, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 4, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 5, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 6, 4); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 1, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 19, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 20, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 21, 9); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 9, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 18, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 19, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 20, 8); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 5, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 9, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 1, -10); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 2, -10); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 10, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 10, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 10, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 10, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 10, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 10, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 10, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 4, 1, -1); +TEST_CONSTEXPR_CXX20 bool test34() { + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 2, -10); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 9, 2, S(""), 0, 0, 1); + test(S("abcdefghij"), 9, 2, S(""), 0, 1, 1); + test(S("abcdefghij"), 9, 2, S(""), 1, 0, 0); + test(S("abcdefghij"), 9, 2, S("abcde"), 0, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcde"), 0, 1, 9); + test(S("abcdefghij"), 9, 2, S("abcde"), 0, 2, 9); + test(S("abcdefghij"), 9, 2, S("abcde"), 0, 4, 9); + test(S("abcdefghij"), 9, 2, S("abcde"), 0, 5, 9); + test(S("abcdefghij"), 9, 2, S("abcde"), 0, 6, 9); + test(S("abcdefghij"), 9, 2, S("abcde"), 1, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcde"), 1, 1, 8); + test(S("abcdefghij"), 9, 2, S("abcde"), 1, 2, 8); + test(S("abcdefghij"), 9, 2, S("abcde"), 1, 3, 8); + test(S("abcdefghij"), 9, 2, S("abcde"), 1, 4, 8); + test(S("abcdefghij"), 9, 2, S("abcde"), 1, 5, 8); + test(S("abcdefghij"), 9, 2, S("abcde"), 2, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcde"), 2, 1, 7); + test(S("abcdefghij"), 9, 2, S("abcde"), 2, 2, 7); + test(S("abcdefghij"), 9, 2, S("abcde"), 2, 3, 7); + test(S("abcdefghij"), 9, 2, S("abcde"), 2, 4, 7); + test(S("abcdefghij"), 9, 2, S("abcde"), 4, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcde"), 4, 1, 5); + test(S("abcdefghij"), 9, 2, S("abcde"), 4, 2, 5); + test(S("abcdefghij"), 9, 2, S("abcde"), 5, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcde"), 5, 1, 1); + test(S("abcdefghij"), 9, 2, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 1, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 5, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 9, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 10, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 11, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 1, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 4, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 8, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 9, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 10, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 1, 4); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 2, 4); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 4, 4); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 5, 4); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 6, 4); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 1, 0); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 2, 0); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 1, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 10, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 19, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 20, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 21, 9); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 9, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 18, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 19, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 20, 8); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 5, -1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 9, -1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 10, -1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 11, -1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 1, -10); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 2, -10); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 10, 0, S(""), 0, 0, 0); + test(S("abcdefghij"), 10, 0, S(""), 0, 1, 0); + test(S("abcdefghij"), 10, 0, S(""), 1, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghij"), 10, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghij"), 10, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghij"), 10, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghij"), 10, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghij"), 10, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghij"), 10, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghij"), 10, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghij"), 10, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 10, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghij"), 10, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghij"), 10, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcde"), 4, 1, -1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test35() -{ - test(S("abcdefghij"), 10, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 10, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 10, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 10, 1, S(""), 0, 0, 0); - test(S("abcdefghij"), 10, 1, S(""), 0, 1, 0); - test(S("abcdefghij"), 10, 1, S(""), 1, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 2, -2); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 4, -4); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 5, -5); - test(S("abcdefghij"), 10, 1, S("abcde"), 0, 6, -5); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 2, -2); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 3, -3); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 4, -4); - test(S("abcdefghij"), 10, 1, S("abcde"), 1, 5, -4); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 2, -2); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 3, -3); - test(S("abcdefghij"), 10, 1, S("abcde"), 2, 4, -3); - test(S("abcdefghij"), 10, 1, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 4, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 4, 2, -1); - test(S("abcdefghij"), 10, 1, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 10, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 0, 0); +TEST_CONSTEXPR_CXX20 bool test35() { + test(S("abcdefghij"), 10, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghij"), 10, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghij"), 10, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 10, 1, S(""), 0, 0, 0); + test(S("abcdefghij"), 10, 1, S(""), 0, 1, 0); + test(S("abcdefghij"), 10, 1, S(""), 1, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcde"), 0, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcde"), 0, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcde"), 0, 2, -2); + test(S("abcdefghij"), 10, 1, S("abcde"), 0, 4, -4); + test(S("abcdefghij"), 10, 1, S("abcde"), 0, 5, -5); + test(S("abcdefghij"), 10, 1, S("abcde"), 0, 6, -5); + test(S("abcdefghij"), 10, 1, S("abcde"), 1, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcde"), 1, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcde"), 1, 2, -2); + test(S("abcdefghij"), 10, 1, S("abcde"), 1, 3, -3); + test(S("abcdefghij"), 10, 1, S("abcde"), 1, 4, -4); + test(S("abcdefghij"), 10, 1, S("abcde"), 1, 5, -4); + test(S("abcdefghij"), 10, 1, S("abcde"), 2, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcde"), 2, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcde"), 2, 2, -2); + test(S("abcdefghij"), 10, 1, S("abcde"), 2, 3, -3); + test(S("abcdefghij"), 10, 1, S("abcde"), 2, 4, -3); + test(S("abcdefghij"), 10, 1, S("abcde"), 4, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcde"), 4, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcde"), 4, 2, -1); + test(S("abcdefghij"), 10, 1, S("abcde"), 5, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcde"), 5, 1, 0); + test(S("abcdefghij"), 10, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 0, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test36() -{ - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghij"), 11, 0, S(""), 0, 0, 0); - test(S("abcdefghij"), 11, 0, S(""), 0, 1, 0); - test(S("abcdefghij"), 11, 0, S(""), 1, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 0, 6, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 3, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 1, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 3, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 2, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 4, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 4, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 9, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 8, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 4, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 6, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); +TEST_CONSTEXPR_CXX20 bool test36() { + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghij"), 11, 0, S(""), 0, 0, 0); + test(S("abcdefghij"), 11, 0, S(""), 0, 1, 0); + test(S("abcdefghij"), 11, 0, S(""), 1, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 0, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 0, 2, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 0, 4, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 0, 5, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 0, 6, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 1, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 1, 2, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 1, 3, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 1, 4, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 1, 5, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 2, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 2, 2, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 2, 3, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 2, 4, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 4, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 4, 2, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 5, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 9, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 10, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 11, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 4, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 8, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 9, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 10, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 2, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 4, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 5, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 6, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 2, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test37() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 4, -3); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 6, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 6, 0, 0); +TEST_CONSTEXPR_CXX20 bool test37() { + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 4, -3); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 5, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 6, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 6, 0, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test38() -{ - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 5, -4); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 9, -8); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 11, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 2, 8); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 4, 6); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 6, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 5, 5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9); +TEST_CONSTEXPR_CXX20 bool test38() { + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 5, -4); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 9, -8); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 10, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 11, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 1, 9); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 2, 8); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 4, 6); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 5, 5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 6, 5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 1, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 1, 9); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 5, 5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 10, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 11, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 1, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test39() -{ - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 2, 17); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 4, 15); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 6, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 5, 14); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 11, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 10, 9); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 21, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 0, 20); +TEST_CONSTEXPR_CXX20 bool test39() { + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 2, 17); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 4, 15); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 5, 14); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 6, 14); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 5, 14); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 10, 9); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 11, 9); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 1, 18); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 10, 9); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 19, 0); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 21, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 0, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 0, 20); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test40() -{ - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 6, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 9, 11); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 2, 18); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 4, 16); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 6, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 3, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 5, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 1, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 3, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 4, -2); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 1, -4); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 2, -4); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 5, 15); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 9, 11); +TEST_CONSTEXPR_CXX20 bool test40() { + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 2, 18); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 4, 16); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 6, 15); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 9, 11); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 2, 18); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 4, 16); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 6, 15); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 3, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 5, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 1, -2); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 3, -2); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 4, -2); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 1, -4); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 2, -4); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 5, 15); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 9, 11); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test41() -{ - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 4, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 8, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 10, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 1, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 2, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 4, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 1, -9); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 2, -9); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 9, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 18, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 1, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 5, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 9, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 1, -19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 2, -19); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 0, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 1, 20); - test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); +TEST_CONSTEXPR_CXX20 bool test41() { + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 4, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 8, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 10, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 1, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 2, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 4, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 1, -9); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 2, -9); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 9, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 18, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 1, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 5, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 9, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 1, -19); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 2, -19); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 0, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 1, 20); + test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test42() -{ - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 3, -2); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 5, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 4, -3); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 8, -7); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 9, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 10, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 5, 1); +TEST_CONSTEXPR_CXX20 bool test42() { + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 3, -2); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 4, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 5, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 4, -3); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 8, -7); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 9, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 10, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 1, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 5, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test43() -{ - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 2, 7); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 3, 6); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 4, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 5, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 4, 5); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 8, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 1, 17); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 2, 16); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 3, 15); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 4, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 5, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 1, 17); +TEST_CONSTEXPR_CXX20 bool test43() { + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 1, 8); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 2, 7); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 3, 6); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 4, 5); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 5, 5); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 1, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 1, 8); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 4, 5); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 8, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 9, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 10, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 1, 17); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 2, 16); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 3, 15); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 4, 14); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 5, 14); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 1, 17); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test44() -{ - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 4, 14); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 8, 10); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 1, 17); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 19, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 20, -1); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 0, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 2, 17); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 3, 16); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 5, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 8, 11); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 10, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 18, 1); +TEST_CONSTEXPR_CXX20 bool test44() { + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 4, 14); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 8, 10); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 1, 17); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 18, 0); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 19, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 20, -1); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 0, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 2, 17); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 3, 16); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 4, 15); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 5, 15); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 4, 15); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 8, 11); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 9, 10); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 10, 10); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 9, 10); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 18, 1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test45() -{ - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 2, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 4, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 6, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 2, 17); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 3, 16); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 5, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 2, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 3, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 4, -1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 1, -3); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 2, -3); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 5, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 9, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 11, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 4, 15); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 8, 11); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 10, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 1, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 2, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 5, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 6, -4); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 1, -8); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 2, -8); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 10, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 19, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 20, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 21, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 9, 10); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 18, 1); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 1, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 5, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 1, -18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 2, -18); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 0, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 1, 19); - test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 2, -2); +TEST_CONSTEXPR_CXX20 bool test45() { + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 2, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 4, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 6, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 2, 17); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 3, 16); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 4, 15); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 5, 15); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 2, -1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 3, -1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 4, -1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 1, -3); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 2, -3); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 5, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 9, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 11, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 4, 15); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 8, 11); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 9, 10); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 10, 10); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 1, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 2, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 5, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 6, -4); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 1, -8); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 2, -8); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 10, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 19, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 20, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 21, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 9, 10); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 18, 1); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 1, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 5, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 1, -18); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 2, -18); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 0, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 1, 19); + test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 2, -2); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test46() -{ - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 10, 9); +TEST_CONSTEXPR_CXX20 bool test46() { + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 10, 9); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test47() -{ - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -4); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -8); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 1, 4); +TEST_CONSTEXPR_CXX20 bool test47() { + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 4, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -4); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -8); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 4, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 1, 4); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test48() -{ - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 9, -4); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 10, -5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 11, -5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 5, 4); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 10, -1); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 11, -1); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 0, 10); +TEST_CONSTEXPR_CXX20 bool test48() { + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 5, 0); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 9, -4); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 10, -5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 11, -5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 0, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 4, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 5, 4); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 9, 0); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 10, -1); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 11, -1); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 0, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 0, 10); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test49() -{ - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 4, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 9, 1); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 2, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 4, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 6, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 2, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 3, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 5, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 1, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 2, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 3, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 4, 8); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 1, 6); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 2, 6); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 5, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 9, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 11, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 4, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 8, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 10, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 1, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 2, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 4, 5); +TEST_CONSTEXPR_CXX20 bool test49() { + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 4, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 9, 1); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 2, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 4, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 6, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 2, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 3, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 5, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 1, 8); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 2, 8); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 3, 8); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 4, 8); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 1, 6); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 2, 6); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 5, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 9, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 11, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 4, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 8, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 10, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 1, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 2, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 4, 5); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test50() -{ - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 6, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 1, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 2, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 10, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 19, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 20, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 21, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 9, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 18, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 19, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 20, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 5, 5); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 9, 1); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 1, -9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 2, -9); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 0, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 1, 10); - test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); +TEST_CONSTEXPR_CXX20 bool test50() { + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 6, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 1, 1); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 2, 1); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 10, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 19, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 20, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 21, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 9, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 18, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 19, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 20, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 5, 5); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 9, 1); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 1, -9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 2, -9); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 0, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 1, 10); + test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test51() -{ - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 6, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 2, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 3, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 5, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 1, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 2, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 3, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 4, 17); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 1, 15); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 2, 15); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 11, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 8, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 10, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 1, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 2, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 4, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 5, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 6, 14); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 1, 10); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 2, 10); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 21, 19); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 18, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 19, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 20, 18); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 5, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 9, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 10, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 11, 9); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 2, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 4, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 6, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 2, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 3, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 5, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 1, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 2, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 3, 17); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 4, 17); +TEST_CONSTEXPR_CXX20 bool test51() { + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 2, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 4, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 6, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 2, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 3, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 4, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 5, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 1, 17); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 2, 17); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 3, 17); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 4, 17); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 1, 15); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 2, 15); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 9, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 11, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 4, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 8, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 9, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 10, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 1, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 2, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 4, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 5, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 6, 14); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 1, 10); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 2, 10); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 19, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 20, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 21, 19); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 9, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 18, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 19, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 20, 18); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 5, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 9, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 10, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 11, 9); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 2, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 4, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 6, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 2, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 3, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 4, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 5, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 1, 17); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 2, 17); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 3, 17); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 4, 17); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test52() -{ - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 1, 15); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 2, 15); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 5, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 9, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 11, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 4, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 8, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 10, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 1, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 2, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 4, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 5, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 6, 14); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 1, 10); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 2, 10); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 1, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 10, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 19, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 20, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 21, 19); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 1, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 9, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 18, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 19, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 20, 18); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 1, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 5, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 9, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 10, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 11, 9); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); - test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 1, -1); +TEST_CONSTEXPR_CXX20 bool test52() { + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 1, 15); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 2, 15); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 5, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 9, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 11, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 4, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 8, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 9, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 10, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 1, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 2, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 4, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 5, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 6, 14); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 1, 10); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 2, 10); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 1, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 10, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 19, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 20, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 21, 19); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 1, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 9, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 18, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 19, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 20, 18); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 1, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 5, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 9, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 10, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 11, 9); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 0, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 1, 1); + test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 1, -1); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test53() -{ - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 5, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 3, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 4, -3); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 8, -8); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 10, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 2, -2); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 4, -4); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 6, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); +TEST_CONSTEXPR_CXX20 bool test53() { + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 6, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 3, -3); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 5, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 3, -3); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 4, -3); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 11, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 8, -8); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 10, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 2, -2); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 4, -4); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 6, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 20, -20); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 21, -20); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 18, -18); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 19, -19); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 20, -19); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 5, -5); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 9, -9); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 10, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 11, -10); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 1, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 2, -1); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 0, 0); - return true; + return true; } template -TEST_CONSTEXPR_CXX20 bool test54() -{ - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 6, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 3, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 3, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 6, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 11, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 8, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 4, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 6, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 11, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); - test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); +TEST_CONSTEXPR_CXX20 bool test54() { + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 21, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 6, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 3, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 3, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 6, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 11, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 8, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 4, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 6, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 11, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 19, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 20, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 21, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 18, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 19, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 20, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 5, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 9, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 10, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 11, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 2, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 0, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 1, 0); + test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 21, 0, 0); - return true; + return true; } -template -TEST_CONSTEXPR_CXX20 bool test55() -{ - test_npos(S(""), 0, 0, S(""), 0, 0); - test_npos(S(""), 0, 0, S("abcde"), 0, -5); - test_npos(S("abcde"), 0, 0, S("abcdefghij"), 0, -10); - test_npos(S("abcde"), 0, 0, S("abcdefghij"), 1, -9); - test_npos(S("abcde"), 0, 0, S("abcdefghij"), 5, -5); +template +TEST_CONSTEXPR_CXX20 bool test55() { + test_npos(S(""), 0, 0, S(""), 0, 0); + test_npos(S(""), 0, 0, S("abcde"), 0, -5); + test_npos(S("abcde"), 0, 0, S("abcdefghij"), 0, -10); + test_npos(S("abcde"), 0, 0, S("abcdefghij"), 1, -9); + test_npos(S("abcde"), 0, 0, S("abcdefghij"), 5, -5); - return true; + return true; } template @@ -6069,8 +6006,7 @@ #endif } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER >= 11 test, min_allocator>>(); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/size_size_string_view.pass.cpp @@ -18,347 +18,336 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::size_type pos1, typename S::size_type n1, - SV sv, int x) -{ - if (pos1 <= s.size()) - assert(sign(s.compare(pos1, n1, sv)) == sign(x)); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::size_type pos1, typename S::size_type n1, SV sv, int x) { + if (pos1 <= s.size()) + assert(sign(s.compare(pos1, n1, sv)) == sign(x)); #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos1 > s.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + TEST_IGNORE_NODISCARD s.compare(pos1, n1, sv); + assert(false); + } catch (std::out_of_range&) { + assert(pos1 > s.size()); } + } #endif } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), 0, 0, SV(""), 0); - test(S(""), 0, 0, SV("abcde"), -5); - test(S(""), 0, 0, SV("abcdefghij"), -10); - test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), -20); - test(S(""), 0, 1, SV(""), 0); - test(S(""), 0, 1, SV("abcde"), -5); - test(S(""), 0, 1, SV("abcdefghij"), -10); - test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), -20); - test(S(""), 1, 0, SV(""), 0); - test(S(""), 1, 0, SV("abcde"), 0); - test(S(""), 1, 0, SV("abcdefghij"), 0); - test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0); - test(S("abcde"), 0, 0, SV(""), 0); - test(S("abcde"), 0, 0, SV("abcde"), -5); - test(S("abcde"), 0, 0, SV("abcdefghij"), -10); - test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 0, 1, SV(""), 1); - test(S("abcde"), 0, 1, SV("abcde"), -4); - test(S("abcde"), 0, 1, SV("abcdefghij"), -9); - test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), -19); - test(S("abcde"), 0, 2, SV(""), 2); - test(S("abcde"), 0, 2, SV("abcde"), -3); - test(S("abcde"), 0, 2, SV("abcdefghij"), -8); - test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), -18); - test(S("abcde"), 0, 4, SV(""), 4); - test(S("abcde"), 0, 4, SV("abcde"), -1); - test(S("abcde"), 0, 4, SV("abcdefghij"), -6); - test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), -16); - test(S("abcde"), 0, 5, SV(""), 5); - test(S("abcde"), 0, 5, SV("abcde"), 0); - test(S("abcde"), 0, 5, SV("abcdefghij"), -5); - test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), -15); - test(S("abcde"), 0, 6, SV(""), 5); - test(S("abcde"), 0, 6, SV("abcde"), 0); - test(S("abcde"), 0, 6, SV("abcdefghij"), -5); - test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), -15); - test(S("abcde"), 1, 0, SV(""), 0); - test(S("abcde"), 1, 0, SV("abcde"), -5); - test(S("abcde"), 1, 0, SV("abcdefghij"), -10); - test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 1, 1, SV(""), 1); - test(S("abcde"), 1, 1, SV("abcde"), 1); - test(S("abcde"), 1, 1, SV("abcdefghij"), 1); - test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 2, SV(""), 2); - test(S("abcde"), 1, 2, SV("abcde"), 1); - test(S("abcde"), 1, 2, SV("abcdefghij"), 1); - test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 3, SV(""), 3); - test(S("abcde"), 1, 3, SV("abcde"), 1); - test(S("abcde"), 1, 3, SV("abcdefghij"), 1); - test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 4, SV(""), 4); - test(S("abcde"), 1, 4, SV("abcde"), 1); - test(S("abcde"), 1, 4, SV("abcdefghij"), 1); - test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 1, 5, SV(""), 4); - test(S("abcde"), 1, 5, SV("abcde"), 1); - test(S("abcde"), 1, 5, SV("abcdefghij"), 1); - test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1); - test(S("abcde"), 2, 0, SV(""), 0); - test(S("abcde"), 2, 0, SV("abcde"), -5); - test(S("abcde"), 2, 0, SV("abcdefghij"), -10); - test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 2, 1, SV(""), 1); - test(S("abcde"), 2, 1, SV("abcde"), 2); - test(S("abcde"), 2, 1, SV("abcdefghij"), 2); - test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 2, SV(""), 2); - test(S("abcde"), 2, 2, SV("abcde"), 2); - test(S("abcde"), 2, 2, SV("abcdefghij"), 2); - test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 3, SV(""), 3); - test(S("abcde"), 2, 3, SV("abcde"), 2); - test(S("abcde"), 2, 3, SV("abcdefghij"), 2); - test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 2, 4, SV(""), 3); - test(S("abcde"), 2, 4, SV("abcde"), 2); - test(S("abcde"), 2, 4, SV("abcdefghij"), 2); - test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 2); - test(S("abcde"), 4, 0, SV(""), 0); - test(S("abcde"), 4, 0, SV("abcde"), -5); - test(S("abcde"), 4, 0, SV("abcdefghij"), -10); - test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 4, 1, SV(""), 1); - test(S("abcde"), 4, 1, SV("abcde"), 4); - test(S("abcde"), 4, 1, SV("abcdefghij"), 4); - test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 4); - test(S("abcde"), 4, 2, SV(""), 1); - test(S("abcde"), 4, 2, SV("abcde"), 4); - test(S("abcde"), 4, 2, SV("abcdefghij"), 4); - test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 4); - test(S("abcde"), 5, 0, SV(""), 0); - test(S("abcde"), 5, 0, SV("abcde"), -5); - test(S("abcde"), 5, 0, SV("abcdefghij"), -10); - test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcde"), 5, 1, SV(""), 0); - test(S("abcde"), 5, 1, SV("abcde"), -5); - test(S("abcde"), 5, 1, SV("abcdefghij"), -10); - test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), -20); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), 0, 0, SV(""), 0); + test(S(""), 0, 0, SV("abcde"), -5); + test(S(""), 0, 0, SV("abcdefghij"), -10); + test(S(""), 0, 0, SV("abcdefghijklmnopqrst"), -20); + test(S(""), 0, 1, SV(""), 0); + test(S(""), 0, 1, SV("abcde"), -5); + test(S(""), 0, 1, SV("abcdefghij"), -10); + test(S(""), 0, 1, SV("abcdefghijklmnopqrst"), -20); + test(S(""), 1, 0, SV(""), 0); + test(S(""), 1, 0, SV("abcde"), 0); + test(S(""), 1, 0, SV("abcdefghij"), 0); + test(S(""), 1, 0, SV("abcdefghijklmnopqrst"), 0); + test(S("abcde"), 0, 0, SV(""), 0); + test(S("abcde"), 0, 0, SV("abcde"), -5); + test(S("abcde"), 0, 0, SV("abcdefghij"), -10); + test(S("abcde"), 0, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 0, 1, SV(""), 1); + test(S("abcde"), 0, 1, SV("abcde"), -4); + test(S("abcde"), 0, 1, SV("abcdefghij"), -9); + test(S("abcde"), 0, 1, SV("abcdefghijklmnopqrst"), -19); + test(S("abcde"), 0, 2, SV(""), 2); + test(S("abcde"), 0, 2, SV("abcde"), -3); + test(S("abcde"), 0, 2, SV("abcdefghij"), -8); + test(S("abcde"), 0, 2, SV("abcdefghijklmnopqrst"), -18); + test(S("abcde"), 0, 4, SV(""), 4); + test(S("abcde"), 0, 4, SV("abcde"), -1); + test(S("abcde"), 0, 4, SV("abcdefghij"), -6); + test(S("abcde"), 0, 4, SV("abcdefghijklmnopqrst"), -16); + test(S("abcde"), 0, 5, SV(""), 5); + test(S("abcde"), 0, 5, SV("abcde"), 0); + test(S("abcde"), 0, 5, SV("abcdefghij"), -5); + test(S("abcde"), 0, 5, SV("abcdefghijklmnopqrst"), -15); + test(S("abcde"), 0, 6, SV(""), 5); + test(S("abcde"), 0, 6, SV("abcde"), 0); + test(S("abcde"), 0, 6, SV("abcdefghij"), -5); + test(S("abcde"), 0, 6, SV("abcdefghijklmnopqrst"), -15); + test(S("abcde"), 1, 0, SV(""), 0); + test(S("abcde"), 1, 0, SV("abcde"), -5); + test(S("abcde"), 1, 0, SV("abcdefghij"), -10); + test(S("abcde"), 1, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 1, 1, SV(""), 1); + test(S("abcde"), 1, 1, SV("abcde"), 1); + test(S("abcde"), 1, 1, SV("abcdefghij"), 1); + test(S("abcde"), 1, 1, SV("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 1, 2, SV(""), 2); + test(S("abcde"), 1, 2, SV("abcde"), 1); + test(S("abcde"), 1, 2, SV("abcdefghij"), 1); + test(S("abcde"), 1, 2, SV("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 1, 3, SV(""), 3); + test(S("abcde"), 1, 3, SV("abcde"), 1); + test(S("abcde"), 1, 3, SV("abcdefghij"), 1); + test(S("abcde"), 1, 3, SV("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 1, 4, SV(""), 4); + test(S("abcde"), 1, 4, SV("abcde"), 1); + test(S("abcde"), 1, 4, SV("abcdefghij"), 1); + test(S("abcde"), 1, 4, SV("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 1, 5, SV(""), 4); + test(S("abcde"), 1, 5, SV("abcde"), 1); + test(S("abcde"), 1, 5, SV("abcdefghij"), 1); + test(S("abcde"), 1, 5, SV("abcdefghijklmnopqrst"), 1); + test(S("abcde"), 2, 0, SV(""), 0); + test(S("abcde"), 2, 0, SV("abcde"), -5); + test(S("abcde"), 2, 0, SV("abcdefghij"), -10); + test(S("abcde"), 2, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 2, 1, SV(""), 1); + test(S("abcde"), 2, 1, SV("abcde"), 2); + test(S("abcde"), 2, 1, SV("abcdefghij"), 2); + test(S("abcde"), 2, 1, SV("abcdefghijklmnopqrst"), 2); + test(S("abcde"), 2, 2, SV(""), 2); + test(S("abcde"), 2, 2, SV("abcde"), 2); + test(S("abcde"), 2, 2, SV("abcdefghij"), 2); + test(S("abcde"), 2, 2, SV("abcdefghijklmnopqrst"), 2); + test(S("abcde"), 2, 3, SV(""), 3); + test(S("abcde"), 2, 3, SV("abcde"), 2); + test(S("abcde"), 2, 3, SV("abcdefghij"), 2); + test(S("abcde"), 2, 3, SV("abcdefghijklmnopqrst"), 2); + test(S("abcde"), 2, 4, SV(""), 3); + test(S("abcde"), 2, 4, SV("abcde"), 2); + test(S("abcde"), 2, 4, SV("abcdefghij"), 2); + test(S("abcde"), 2, 4, SV("abcdefghijklmnopqrst"), 2); + test(S("abcde"), 4, 0, SV(""), 0); + test(S("abcde"), 4, 0, SV("abcde"), -5); + test(S("abcde"), 4, 0, SV("abcdefghij"), -10); + test(S("abcde"), 4, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 4, 1, SV(""), 1); + test(S("abcde"), 4, 1, SV("abcde"), 4); + test(S("abcde"), 4, 1, SV("abcdefghij"), 4); + test(S("abcde"), 4, 1, SV("abcdefghijklmnopqrst"), 4); + test(S("abcde"), 4, 2, SV(""), 1); + test(S("abcde"), 4, 2, SV("abcde"), 4); + test(S("abcde"), 4, 2, SV("abcdefghij"), 4); + test(S("abcde"), 4, 2, SV("abcdefghijklmnopqrst"), 4); + test(S("abcde"), 5, 0, SV(""), 0); + test(S("abcde"), 5, 0, SV("abcde"), -5); + test(S("abcde"), 5, 0, SV("abcdefghij"), -10); + test(S("abcde"), 5, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcde"), 5, 1, SV(""), 0); + test(S("abcde"), 5, 1, SV("abcde"), -5); + test(S("abcde"), 5, 1, SV("abcdefghij"), -10); + test(S("abcde"), 5, 1, SV("abcdefghijklmnopqrst"), -20); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("abcde"), 6, 0, SV(""), 0); - test(S("abcde"), 6, 0, SV("abcde"), 0); - test(S("abcde"), 6, 0, SV("abcdefghij"), 0); - test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0); - test(S("abcdefghij"), 0, 0, SV(""), 0); - test(S("abcdefghij"), 0, 0, SV("abcde"), -5); - test(S("abcdefghij"), 0, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 0, 1, SV(""), 1); - test(S("abcdefghij"), 0, 1, SV("abcde"), -4); - test(S("abcdefghij"), 0, 1, SV("abcdefghij"), -9); - test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), -19); - test(S("abcdefghij"), 0, 5, SV(""), 5); - test(S("abcdefghij"), 0, 5, SV("abcde"), 0); - test(S("abcdefghij"), 0, 5, SV("abcdefghij"), -5); - test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), -15); - test(S("abcdefghij"), 0, 9, SV(""), 9); - test(S("abcdefghij"), 0, 9, SV("abcde"), 4); - test(S("abcdefghij"), 0, 9, SV("abcdefghij"), -1); - test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), -11); - test(S("abcdefghij"), 0, 10, SV(""), 10); - test(S("abcdefghij"), 0, 10, SV("abcde"), 5); - test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0); - test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), -10); - test(S("abcdefghij"), 0, 11, SV(""), 10); - test(S("abcdefghij"), 0, 11, SV("abcde"), 5); - test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0); - test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), -10); - test(S("abcdefghij"), 1, 0, SV(""), 0); - test(S("abcdefghij"), 1, 0, SV("abcde"), -5); - test(S("abcdefghij"), 1, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 1, 1, SV(""), 1); - test(S("abcdefghij"), 1, 1, SV("abcde"), 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 4, SV(""), 4); - test(S("abcdefghij"), 1, 4, SV("abcde"), 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 8, SV(""), 8); - test(S("abcdefghij"), 1, 8, SV("abcde"), 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 9, SV(""), 9); - test(S("abcdefghij"), 1, 9, SV("abcde"), 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 1, 10, SV(""), 9); - test(S("abcdefghij"), 1, 10, SV("abcde"), 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1); - test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghij"), 5, 0, SV(""), 0); - test(S("abcdefghij"), 5, 0, SV("abcde"), -5); - test(S("abcdefghij"), 5, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 5, 1, SV(""), 1); - test(S("abcdefghij"), 5, 1, SV("abcde"), 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 2, SV(""), 2); - test(S("abcdefghij"), 5, 2, SV("abcde"), 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 4, SV(""), 4); - test(S("abcdefghij"), 5, 4, SV("abcde"), 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 5, SV(""), 5); - test(S("abcdefghij"), 5, 5, SV("abcde"), 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 5, 6, SV(""), 5); - test(S("abcdefghij"), 5, 6, SV("abcde"), 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5); - test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 5); - test(S("abcdefghij"), 9, 0, SV(""), 0); - test(S("abcdefghij"), 9, 0, SV("abcde"), -5); - test(S("abcdefghij"), 9, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 9, 1, SV(""), 1); - test(S("abcdefghij"), 9, 1, SV("abcde"), 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9); - test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 9); - test(S("abcdefghij"), 9, 2, SV(""), 1); - test(S("abcdefghij"), 9, 2, SV("abcde"), 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9); - test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 9); - test(S("abcdefghij"), 10, 0, SV(""), 0); - test(S("abcdefghij"), 10, 0, SV("abcde"), -5); - test(S("abcdefghij"), 10, 0, SV("abcdefghij"), -10); - test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 10, 1, SV(""), 0); - test(S("abcdefghij"), 10, 1, SV("abcde"), -5); - test(S("abcdefghij"), 10, 1, SV("abcdefghij"), -10); - test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghij"), 11, 0, SV(""), 0); - test(S("abcdefghij"), 11, 0, SV("abcde"), 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0); - test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("abcde"), 6, 0, SV(""), 0); + test(S("abcde"), 6, 0, SV("abcde"), 0); + test(S("abcde"), 6, 0, SV("abcdefghij"), 0); + test(S("abcde"), 6, 0, SV("abcdefghijklmnopqrst"), 0); + test(S("abcdefghij"), 0, 0, SV(""), 0); + test(S("abcdefghij"), 0, 0, SV("abcde"), -5); + test(S("abcdefghij"), 0, 0, SV("abcdefghij"), -10); + test(S("abcdefghij"), 0, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 0, 1, SV(""), 1); + test(S("abcdefghij"), 0, 1, SV("abcde"), -4); + test(S("abcdefghij"), 0, 1, SV("abcdefghij"), -9); + test(S("abcdefghij"), 0, 1, SV("abcdefghijklmnopqrst"), -19); + test(S("abcdefghij"), 0, 5, SV(""), 5); + test(S("abcdefghij"), 0, 5, SV("abcde"), 0); + test(S("abcdefghij"), 0, 5, SV("abcdefghij"), -5); + test(S("abcdefghij"), 0, 5, SV("abcdefghijklmnopqrst"), -15); + test(S("abcdefghij"), 0, 9, SV(""), 9); + test(S("abcdefghij"), 0, 9, SV("abcde"), 4); + test(S("abcdefghij"), 0, 9, SV("abcdefghij"), -1); + test(S("abcdefghij"), 0, 9, SV("abcdefghijklmnopqrst"), -11); + test(S("abcdefghij"), 0, 10, SV(""), 10); + test(S("abcdefghij"), 0, 10, SV("abcde"), 5); + test(S("abcdefghij"), 0, 10, SV("abcdefghij"), 0); + test(S("abcdefghij"), 0, 10, SV("abcdefghijklmnopqrst"), -10); + test(S("abcdefghij"), 0, 11, SV(""), 10); + test(S("abcdefghij"), 0, 11, SV("abcde"), 5); + test(S("abcdefghij"), 0, 11, SV("abcdefghij"), 0); + test(S("abcdefghij"), 0, 11, SV("abcdefghijklmnopqrst"), -10); + test(S("abcdefghij"), 1, 0, SV(""), 0); + test(S("abcdefghij"), 1, 0, SV("abcde"), -5); + test(S("abcdefghij"), 1, 0, SV("abcdefghij"), -10); + test(S("abcdefghij"), 1, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 1, 1, SV(""), 1); + test(S("abcdefghij"), 1, 1, SV("abcde"), 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghij"), 1); + test(S("abcdefghij"), 1, 1, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 1, 4, SV(""), 4); + test(S("abcdefghij"), 1, 4, SV("abcde"), 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghij"), 1); + test(S("abcdefghij"), 1, 4, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 1, 8, SV(""), 8); + test(S("abcdefghij"), 1, 8, SV("abcde"), 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghij"), 1); + test(S("abcdefghij"), 1, 8, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 1, 9, SV(""), 9); + test(S("abcdefghij"), 1, 9, SV("abcde"), 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghij"), 1); + test(S("abcdefghij"), 1, 9, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 1, 10, SV(""), 9); + test(S("abcdefghij"), 1, 10, SV("abcde"), 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghij"), 1); + test(S("abcdefghij"), 1, 10, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghij"), 5, 0, SV(""), 0); + test(S("abcdefghij"), 5, 0, SV("abcde"), -5); + test(S("abcdefghij"), 5, 0, SV("abcdefghij"), -10); + test(S("abcdefghij"), 5, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 5, 1, SV(""), 1); + test(S("abcdefghij"), 5, 1, SV("abcde"), 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghij"), 5); + test(S("abcdefghij"), 5, 1, SV("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 5, 2, SV(""), 2); + test(S("abcdefghij"), 5, 2, SV("abcde"), 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghij"), 5); + test(S("abcdefghij"), 5, 2, SV("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 5, 4, SV(""), 4); + test(S("abcdefghij"), 5, 4, SV("abcde"), 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghij"), 5); + test(S("abcdefghij"), 5, 4, SV("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 5, 5, SV(""), 5); + test(S("abcdefghij"), 5, 5, SV("abcde"), 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghij"), 5); + test(S("abcdefghij"), 5, 5, SV("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 5, 6, SV(""), 5); + test(S("abcdefghij"), 5, 6, SV("abcde"), 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghij"), 5); + test(S("abcdefghij"), 5, 6, SV("abcdefghijklmnopqrst"), 5); + test(S("abcdefghij"), 9, 0, SV(""), 0); + test(S("abcdefghij"), 9, 0, SV("abcde"), -5); + test(S("abcdefghij"), 9, 0, SV("abcdefghij"), -10); + test(S("abcdefghij"), 9, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 9, 1, SV(""), 1); + test(S("abcdefghij"), 9, 1, SV("abcde"), 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghij"), 9); + test(S("abcdefghij"), 9, 1, SV("abcdefghijklmnopqrst"), 9); + test(S("abcdefghij"), 9, 2, SV(""), 1); + test(S("abcdefghij"), 9, 2, SV("abcde"), 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghij"), 9); + test(S("abcdefghij"), 9, 2, SV("abcdefghijklmnopqrst"), 9); + test(S("abcdefghij"), 10, 0, SV(""), 0); + test(S("abcdefghij"), 10, 0, SV("abcde"), -5); + test(S("abcdefghij"), 10, 0, SV("abcdefghij"), -10); + test(S("abcdefghij"), 10, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 10, 1, SV(""), 0); + test(S("abcdefghij"), 10, 1, SV("abcde"), -5); + test(S("abcdefghij"), 10, 1, SV("abcdefghij"), -10); + test(S("abcdefghij"), 10, 1, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghij"), 11, 0, SV(""), 0); + test(S("abcdefghij"), 11, 0, SV("abcde"), 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghij"), 0); + test(S("abcdefghij"), 11, 0, SV("abcdefghijklmnopqrst"), 0); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), -4); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), -9); - test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), -19); - test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 10); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0); - test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), -10); - test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 19); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 14); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9); - test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), -1); - test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 20); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 15); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0); - test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 20); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 15); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 9); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 18); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 19); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 19); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1); - test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1); - test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 5); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 9); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10); - test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 19); - test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 19); - test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19); - test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), -5); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), -10); - test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), -20); - test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0); - test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("abcdefghijklmnopqrst"), 0, 0, SV(""), 0); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 0, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 0, 1, SV(""), 1); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcde"), -4); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghij"), -9); + test(S("abcdefghijklmnopqrst"), 0, 1, SV("abcdefghijklmnopqrst"), -19); + test(S("abcdefghijklmnopqrst"), 0, 10, SV(""), 10); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcde"), 5); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghij"), 0); + test(S("abcdefghijklmnopqrst"), 0, 10, SV("abcdefghijklmnopqrst"), -10); + test(S("abcdefghijklmnopqrst"), 0, 19, SV(""), 19); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcde"), 14); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghij"), 9); + test(S("abcdefghijklmnopqrst"), 0, 19, SV("abcdefghijklmnopqrst"), -1); + test(S("abcdefghijklmnopqrst"), 0, 20, SV(""), 20); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcde"), 15); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 0, 20, SV("abcdefghijklmnopqrst"), 0); + test(S("abcdefghijklmnopqrst"), 0, 21, SV(""), 20); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcde"), 15); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 0, 21, SV("abcdefghijklmnopqrst"), 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV(""), 0); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 1, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 1, 1, SV(""), 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 1, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV(""), 9); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 9, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV(""), 18); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 18, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV(""), 19); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 19, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV(""), 19); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcde"), 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghij"), 1); + test(S("abcdefghijklmnopqrst"), 1, 20, SV("abcdefghijklmnopqrst"), 1); + test(S("abcdefghijklmnopqrst"), 10, 0, SV(""), 0); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 10, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 10, 1, SV(""), 1); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 1, SV("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV(""), 5); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 5, SV("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV(""), 9); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 9, SV("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV(""), 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 10, SV("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV(""), 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcde"), 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghij"), 10); + test(S("abcdefghijklmnopqrst"), 10, 11, SV("abcdefghijklmnopqrst"), 10); + test(S("abcdefghijklmnopqrst"), 19, 0, SV(""), 0); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 19, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 19, 1, SV(""), 1); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcde"), 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghij"), 19); + test(S("abcdefghijklmnopqrst"), 19, 1, SV("abcdefghijklmnopqrst"), 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV(""), 1); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcde"), 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghij"), 19); + test(S("abcdefghijklmnopqrst"), 19, 2, SV("abcdefghijklmnopqrst"), 19); + test(S("abcdefghijklmnopqrst"), 20, 0, SV(""), 0); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 20, 0, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 20, 1, SV(""), 0); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcde"), -5); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghij"), -10); + test(S("abcdefghijklmnopqrst"), 20, 1, SV("abcdefghijklmnopqrst"), -20); + test(S("abcdefghijklmnopqrst"), 21, 0, SV(""), 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcde"), 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghij"), 0); + test(S("abcdefghijklmnopqrst"), 21, 0, SV("abcdefghijklmnopqrst"), 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -382,8 +371,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/string.pass.cpp @@ -16,21 +16,18 @@ #include "test_macros.h" #include "min_allocator.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, int x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.compare(str)); - assert(sign(s.compare(str)) == sign(x)); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, int x) { + LIBCPP_ASSERT_NOEXCEPT(s.compare(str)); + assert(sign(s.compare(str)) == sign(x)); } TEST_CONSTEXPR_CXX20 bool test() { @@ -85,8 +82,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_compare/string_view.pass.cpp @@ -16,21 +16,18 @@ #include "test_macros.h" #include "min_allocator.h" -TEST_CONSTEXPR_CXX20 int sign(int x) -{ - if (x == 0) - return 0; - if (x < 0) - return -1; - return 1; +TEST_CONSTEXPR_CXX20 int sign(int x) { + if (x == 0) + return 0; + if (x < 0) + return -1; + return 1; } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, int x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.compare(sv)); - assert(sign(s.compare(sv)) == sign(x)); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, int x) { + LIBCPP_ASSERT_NOEXCEPT(s.compare(sv)); + assert(sign(s.compare(sv)) == sign(x)); } TEST_CONSTEXPR_CXX20 bool test() { @@ -80,8 +77,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/char_size.pass.cpp @@ -18,23 +18,19 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(c, pos)); - assert(s.find_first_not_of(c, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(c, pos)); + assert(s.find_first_not_of(c, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(c)); - assert(s.find_first_not_of(c) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(c)); + assert(s.find_first_not_of(c) == x); + if (x != S::npos) + assert(x < s.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -104,8 +100,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size.pass.cpp @@ -18,128 +18,122 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos)); - assert(s.find_first_not_of(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos)); + assert(s.find_first_not_of(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - assert(s.find_first_not_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + assert(s.find_first_not_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, S::npos); - test(S(""), "laenf", 0, S::npos); - test(S(""), "pqlnkmbdjo", 0, S::npos); - test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "bjaht", 1, S::npos); - test(S(""), "hjlcmgpket", 1, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); - test(S("fodgq"), "", 0, 0); - test(S("qanej"), "dfkap", 0, 0); - test(S("clbao"), "ihqrfebgad", 0, 0); - test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, S::npos); - test(S("srdfq"), "", 1, 1); - test(S("oemth"), "ikcrq", 1, 1); - test(S("cdaih"), "dmajblfhsg", 1, 3); - test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, S::npos); - test(S("cshmd"), "", 2, 2); - test(S("lhcdo"), "oebqi", 2, 2); - test(S("qnsoh"), "kojhpmbsfe", 2, S::npos); - test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, S::npos); - test(S("fmtsp"), "", 4, 4); - test(S("khbpm"), "aobjd", 4, 4); - test(S("pbsji"), "pcbahntsje", 4, 4); - test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, S::npos); - test(S("eqmpa"), "", 5, S::npos); - test(S("omigs"), "kocgb", 5, S::npos); - test(S("onmje"), "fbslrjiqkm", 5, S::npos); - test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); - test(S("schfa"), "", 6, S::npos); - test(S("igdsc"), "qngpd", 6, S::npos); - test(S("brqgo"), "rodhqklgmb", 6, S::npos); - test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); - test(S("hcjitbfapl"), "", 0, 0); - test(S("daiprenocl"), "ashjd", 0, 2); - test(S("litpcfdghe"), "mgojkldsqh", 0, 1); - test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, S::npos); - test(S("qpghtfbaji"), "", 1, 1); - test(S("gfshlcmdjr"), "nadkh", 1, 1); - test(S("nkodajteqp"), "ofdrqmkebl", 1, 4); - test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, S::npos); - test(S("crnklpmegd"), "", 5, 5); - test(S("jsbtafedoc"), "prqgn", 5, 5); - test(S("qnmodrtkeb"), "pejafmnokr", 5, 6); - test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, S::npos); - test(S("lmofqdhpki"), "", 9, 9); - test(S("hnefkqimca"), "rtjpa", 9, S::npos); - test(S("drtasbgmfp"), "ktsrmnqagd", 9, 9); - test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, S::npos); - test(S("elgofjmbrq"), "", 10, S::npos); - test(S("mjqdgalkpc"), "dplqa", 10, S::npos); - test(S("kthqnfcerm"), "dkacjoptns", 10, S::npos); - test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); - test(S("eqsgalomhb"), "", 11, S::npos); - test(S("akiteljmoh"), "lofbc", 11, S::npos); - test(S("hlbdfreqjo"), "astoegbfpn", 11, S::npos); - test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), "", 0, 0); - test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 0); - test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 1); - test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), "", 1, 1); - test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 3); - test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), "", 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 11); - test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 13); - test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, S::npos); - test(S("niptglfbosehkamrdqcj"), "", 19, 19); - test(S("copqdhstbingamjfkler"), "djkqc", 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, S::npos); - test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); - test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, S::npos); + test(S(""), "laenf", 0, S::npos); + test(S(""), "pqlnkmbdjo", 0, S::npos); + test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "bjaht", 1, S::npos); + test(S(""), "hjlcmgpket", 1, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); + test(S("fodgq"), "", 0, 0); + test(S("qanej"), "dfkap", 0, 0); + test(S("clbao"), "ihqrfebgad", 0, 0); + test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, S::npos); + test(S("srdfq"), "", 1, 1); + test(S("oemth"), "ikcrq", 1, 1); + test(S("cdaih"), "dmajblfhsg", 1, 3); + test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, S::npos); + test(S("cshmd"), "", 2, 2); + test(S("lhcdo"), "oebqi", 2, 2); + test(S("qnsoh"), "kojhpmbsfe", 2, S::npos); + test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, S::npos); + test(S("fmtsp"), "", 4, 4); + test(S("khbpm"), "aobjd", 4, 4); + test(S("pbsji"), "pcbahntsje", 4, 4); + test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, S::npos); + test(S("eqmpa"), "", 5, S::npos); + test(S("omigs"), "kocgb", 5, S::npos); + test(S("onmje"), "fbslrjiqkm", 5, S::npos); + test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); + test(S("schfa"), "", 6, S::npos); + test(S("igdsc"), "qngpd", 6, S::npos); + test(S("brqgo"), "rodhqklgmb", 6, S::npos); + test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); + test(S("hcjitbfapl"), "", 0, 0); + test(S("daiprenocl"), "ashjd", 0, 2); + test(S("litpcfdghe"), "mgojkldsqh", 0, 1); + test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, S::npos); + test(S("qpghtfbaji"), "", 1, 1); + test(S("gfshlcmdjr"), "nadkh", 1, 1); + test(S("nkodajteqp"), "ofdrqmkebl", 1, 4); + test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, S::npos); + test(S("crnklpmegd"), "", 5, 5); + test(S("jsbtafedoc"), "prqgn", 5, 5); + test(S("qnmodrtkeb"), "pejafmnokr", 5, 6); + test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, S::npos); + test(S("lmofqdhpki"), "", 9, 9); + test(S("hnefkqimca"), "rtjpa", 9, S::npos); + test(S("drtasbgmfp"), "ktsrmnqagd", 9, 9); + test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, S::npos); + test(S("elgofjmbrq"), "", 10, S::npos); + test(S("mjqdgalkpc"), "dplqa", 10, S::npos); + test(S("kthqnfcerm"), "dkacjoptns", 10, S::npos); + test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); + test(S("eqsgalomhb"), "", 11, S::npos); + test(S("akiteljmoh"), "lofbc", 11, S::npos); + test(S("hlbdfreqjo"), "astoegbfpn", 11, S::npos); + test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), "", 0, 0); + test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 0); + test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 1); + test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), "", 1, 1); + test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 3); + test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), "", 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 11); + test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 13); + test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, S::npos); + test(S("niptglfbosehkamrdqcj"), "", 19, 19); + test(S("copqdhstbingamjfkler"), "djkqc", 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, S::npos); + test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); + test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), "", S::npos); - test(S(""), "laenf", S::npos); - test(S(""), "pqlnkmbdjo", S::npos); - test(S(""), "qkamfogpnljdcshbreti", S::npos); - test(S("nhmko"), "", 0); - test(S("lahfb"), "irkhs", 0); - test(S("gmfhd"), "kantesmpgj", 2); - test(S("odaft"), "oknlrstdpiqmjbaghcfe", S::npos); - test(S("eolhfgpjqk"), "", 0); - test(S("nbatdlmekr"), "bnrpe", 2); - test(S("jdmciepkaq"), "jtdaefblso", 2); - test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", S::npos); - test(S("gprdcokbnjhlsfmtieqa"), "", 0); - test(S("qjghlnftcaismkropdeb"), "bjaht", 0); - test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 1); - test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), "", S::npos); + test(S(""), "laenf", S::npos); + test(S(""), "pqlnkmbdjo", S::npos); + test(S(""), "qkamfogpnljdcshbreti", S::npos); + test(S("nhmko"), "", 0); + test(S("lahfb"), "irkhs", 0); + test(S("gmfhd"), "kantesmpgj", 2); + test(S("odaft"), "oknlrstdpiqmjbaghcfe", S::npos); + test(S("eolhfgpjqk"), "", 0); + test(S("nbatdlmekr"), "bnrpe", 2); + test(S("jdmciepkaq"), "jtdaefblso", 2); + test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", S::npos); + test(S("gprdcokbnjhlsfmtieqa"), "", 0); + test(S("qjghlnftcaismkropdeb"), "bjaht", 0); + test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 1); + test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -159,8 +153,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/pointer_size_size.pass.cpp @@ -18,353 +18,351 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos, n)); - assert(s.find_first_not_of(str, pos, n) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos, n)); + assert(s.find_first_not_of(str, pos, n) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, 0, S::npos); - test(S(""), "irkhs", 0, 0, S::npos); - test(S(""), "kante", 0, 1, S::npos); - test(S(""), "oknlr", 0, 2, S::npos); - test(S(""), "pcdro", 0, 4, S::npos); - test(S(""), "bnrpe", 0, 5, S::npos); - test(S(""), "jtdaefblso", 0, 0, S::npos); - test(S(""), "oselktgbca", 0, 1, S::npos); - test(S(""), "eqgaplhckj", 0, 5, S::npos); - test(S(""), "bjahtcmnlp", 0, 9, S::npos); - test(S(""), "hjlcmgpket", 0, 10, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); - test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); - test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); - test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); - test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "lbtqd", 1, 0, S::npos); - test(S(""), "tboim", 1, 1, S::npos); - test(S(""), "slcer", 1, 2, S::npos); - test(S(""), "cbjfs", 1, 4, S::npos); - test(S(""), "aqibs", 1, 5, S::npos); - test(S(""), "gtfblmqinc", 1, 0, S::npos); - test(S(""), "mkqpbtdalg", 1, 1, S::npos); - test(S(""), "kphatlimcd", 1, 5, S::npos); - test(S(""), "pblasqogic", 1, 9, S::npos); - test(S(""), "arosdhcfme", 1, 10, S::npos); - test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); - test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); - test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); - test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); - test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); - test(S("eaint"), "", 0, 0, 0); - test(S("binja"), "gfsrt", 0, 0, 0); - test(S("latkm"), "pfsoc", 0, 1, 0); - test(S("lecfr"), "tpflm", 0, 2, 0); - test(S("eqkst"), "sgkec", 0, 4, 1); - test(S("cdafr"), "romds", 0, 5, 0); - test(S("prbhe"), "qhjistlgmr", 0, 0, 0); - test(S("lbisk"), "pedfirsglo", 0, 1, 0); - test(S("hrlpd"), "aqcoslgrmk", 0, 5, 0); - test(S("ehmja"), "dabckmepqj", 0, 9, 1); - test(S("mhqgd"), "pqscrjthli", 0, 10, 0); - test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0); - test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0); - test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0); - test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos); - test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos); - test(S("clrgb"), "", 1, 0, 1); - test(S("tjmek"), "osmia", 1, 0, 1); - test(S("bgstp"), "ckonl", 1, 1, 1); - test(S("hstrk"), "ilcaj", 1, 2, 1); - test(S("kmspj"), "lasiq", 1, 4, 1); - test(S("tjboh"), "kfqmr", 1, 5, 1); - test(S("ilbcj"), "klnitfaobg", 1, 0, 1); - test(S("jkngf"), "gjhmdlqikp", 1, 1, 1); - test(S("gfcql"), "skbgtahqej", 1, 5, 1); - test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1); - test(S("bthpg"), "bjgfmnlkio", 1, 10, 1); - test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1); - test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1); - test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 3); - test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos); - test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos); - test(S("ndrhl"), "", 2, 0, 2); - test(S("mrecp"), "otkgb", 2, 0, 2); - test(S("qlasf"), "cqsjl", 2, 1, 2); - test(S("smaqd"), "dpifl", 2, 2, 2); - test(S("hjeni"), "oapht", 2, 4, 2); - test(S("ocmfj"), "cifts", 2, 5, 2); - test(S("hmftq"), "nmsckbgalo", 2, 0, 2); - test(S("fklad"), "tpksqhamle", 2, 1, 2); - test(S("dirnm"), "tpdrchmkji", 2, 5, 3); - test(S("hrgdc"), "ijagfkblst", 2, 9, 3); - test(S("ifakg"), "kpocsignjb", 2, 10, 2); - test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2); - test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2); - test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2); - test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos); - test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos); - test(S("cjgao"), "", 4, 0, 4); - test(S("kjplq"), "mabns", 4, 0, 4); - test(S("herni"), "bdnrp", 4, 1, 4); - test(S("tadrb"), "scidp", 4, 2, 4); - test(S("pkfeo"), "agbjl", 4, 4, 4); - test(S("hoser"), "jfmpr", 4, 5, S::npos); - test(S("kgrsp"), "rbpefghsmj", 4, 0, 4); - test(S("pgejb"), "apsfntdoqc", 4, 1, 4); - test(S("thlnq"), "ndkjeisgcl", 4, 5, 4); - test(S("nbmit"), "rnfpqatdeo", 4, 9, S::npos); - test(S("jgmib"), "bntjlqrfik", 4, 10, S::npos); - test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4); - test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4); - test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, S::npos); - test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, S::npos); - test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos); - test(S("klopi"), "", 5, 0, S::npos); - test(S("dajhn"), "psthd", 5, 0, S::npos); - test(S("jbgno"), "rpmjd", 5, 1, S::npos); - test(S("hkjae"), "dfsmk", 5, 2, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, 0, S::npos); + test(S(""), "irkhs", 0, 0, S::npos); + test(S(""), "kante", 0, 1, S::npos); + test(S(""), "oknlr", 0, 2, S::npos); + test(S(""), "pcdro", 0, 4, S::npos); + test(S(""), "bnrpe", 0, 5, S::npos); + test(S(""), "jtdaefblso", 0, 0, S::npos); + test(S(""), "oselktgbca", 0, 1, S::npos); + test(S(""), "eqgaplhckj", 0, 5, S::npos); + test(S(""), "bjahtcmnlp", 0, 9, S::npos); + test(S(""), "hjlcmgpket", 0, 10, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); + test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); + test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); + test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); + test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "lbtqd", 1, 0, S::npos); + test(S(""), "tboim", 1, 1, S::npos); + test(S(""), "slcer", 1, 2, S::npos); + test(S(""), "cbjfs", 1, 4, S::npos); + test(S(""), "aqibs", 1, 5, S::npos); + test(S(""), "gtfblmqinc", 1, 0, S::npos); + test(S(""), "mkqpbtdalg", 1, 1, S::npos); + test(S(""), "kphatlimcd", 1, 5, S::npos); + test(S(""), "pblasqogic", 1, 9, S::npos); + test(S(""), "arosdhcfme", 1, 10, S::npos); + test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); + test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); + test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); + test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); + test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); + test(S("eaint"), "", 0, 0, 0); + test(S("binja"), "gfsrt", 0, 0, 0); + test(S("latkm"), "pfsoc", 0, 1, 0); + test(S("lecfr"), "tpflm", 0, 2, 0); + test(S("eqkst"), "sgkec", 0, 4, 1); + test(S("cdafr"), "romds", 0, 5, 0); + test(S("prbhe"), "qhjistlgmr", 0, 0, 0); + test(S("lbisk"), "pedfirsglo", 0, 1, 0); + test(S("hrlpd"), "aqcoslgrmk", 0, 5, 0); + test(S("ehmja"), "dabckmepqj", 0, 9, 1); + test(S("mhqgd"), "pqscrjthli", 0, 10, 0); + test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0); + test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0); + test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0); + test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos); + test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos); + test(S("clrgb"), "", 1, 0, 1); + test(S("tjmek"), "osmia", 1, 0, 1); + test(S("bgstp"), "ckonl", 1, 1, 1); + test(S("hstrk"), "ilcaj", 1, 2, 1); + test(S("kmspj"), "lasiq", 1, 4, 1); + test(S("tjboh"), "kfqmr", 1, 5, 1); + test(S("ilbcj"), "klnitfaobg", 1, 0, 1); + test(S("jkngf"), "gjhmdlqikp", 1, 1, 1); + test(S("gfcql"), "skbgtahqej", 1, 5, 1); + test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1); + test(S("bthpg"), "bjgfmnlkio", 1, 10, 1); + test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1); + test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1); + test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 3); + test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos); + test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos); + test(S("ndrhl"), "", 2, 0, 2); + test(S("mrecp"), "otkgb", 2, 0, 2); + test(S("qlasf"), "cqsjl", 2, 1, 2); + test(S("smaqd"), "dpifl", 2, 2, 2); + test(S("hjeni"), "oapht", 2, 4, 2); + test(S("ocmfj"), "cifts", 2, 5, 2); + test(S("hmftq"), "nmsckbgalo", 2, 0, 2); + test(S("fklad"), "tpksqhamle", 2, 1, 2); + test(S("dirnm"), "tpdrchmkji", 2, 5, 3); + test(S("hrgdc"), "ijagfkblst", 2, 9, 3); + test(S("ifakg"), "kpocsignjb", 2, 10, 2); + test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2); + test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2); + test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2); + test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos); + test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos); + test(S("cjgao"), "", 4, 0, 4); + test(S("kjplq"), "mabns", 4, 0, 4); + test(S("herni"), "bdnrp", 4, 1, 4); + test(S("tadrb"), "scidp", 4, 2, 4); + test(S("pkfeo"), "agbjl", 4, 4, 4); + test(S("hoser"), "jfmpr", 4, 5, S::npos); + test(S("kgrsp"), "rbpefghsmj", 4, 0, 4); + test(S("pgejb"), "apsfntdoqc", 4, 1, 4); + test(S("thlnq"), "ndkjeisgcl", 4, 5, 4); + test(S("nbmit"), "rnfpqatdeo", 4, 9, S::npos); + test(S("jgmib"), "bntjlqrfik", 4, 10, S::npos); + test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4); + test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4); + test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, S::npos); + test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, S::npos); + test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos); + test(S("klopi"), "", 5, 0, S::npos); + test(S("dajhn"), "psthd", 5, 0, S::npos); + test(S("jbgno"), "rpmjd", 5, 1, S::npos); + test(S("hkjae"), "dfsmk", 5, 2, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("gbhqo"), "skqne", 5, 4, S::npos); - test(S("ktdor"), "kipnf", 5, 5, S::npos); - test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); - test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); - test(S("armql"), "pcdgltbrfj", 5, 5, S::npos); - test(S("cdhjo"), "aekfctpirg", 5, 9, S::npos); - test(S("jcons"), "ledihrsgpf", 5, 10, S::npos); - test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); - test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); - test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos); - test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos); - test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); - test(S("gajqn"), "", 6, 0, S::npos); - test(S("stedk"), "hrnat", 6, 0, S::npos); - test(S("tjkaf"), "gsqdt", 6, 1, S::npos); - test(S("dthpe"), "bspkd", 6, 2, S::npos); - test(S("klhde"), "ohcmb", 6, 4, S::npos); - test(S("bhlki"), "heatr", 6, 5, S::npos); - test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); - test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); - test(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos); - test(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos); - test(S("jblqp"), "njolbmspac", 6, 10, S::npos); - test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); - test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); - test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos); - test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); - test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); - test(S("jnkrfhotgl"), "", 0, 0, 0); - test(S("dltjfngbko"), "rqegt", 0, 0, 0); - test(S("bmjlpkiqde"), "dashm", 0, 1, 0); - test(S("skrflobnqm"), "jqirk", 0, 2, 0); - test(S("jkpldtshrm"), "rckeg", 0, 4, 0); - test(S("ghasdbnjqo"), "jscie", 0, 5, 0); - test(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0); - test(S("ikthdgcamf"), "gdicosleja", 0, 1, 0); - test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 2); - test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 4); - test(S("itphbqsker"), "dtablcrseo", 0, 10, 0); - test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0); - test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0); - test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0); - test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 1); - test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos); - test(S("shbcqnmoar"), "", 1, 0, 1); - test(S("bdoshlmfin"), "ontrs", 1, 0, 1); - test(S("khfrebnsgq"), "pfkna", 1, 1, 1); - test(S("getcrsaoji"), "ekosa", 1, 2, 2); - test(S("fjiknedcpq"), "anqhk", 1, 4, 1); - test(S("tkejgnafrm"), "jekca", 1, 5, 4); - test(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1); - test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1); - test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 3); - test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1); - test(S("cigfqkated"), "sqcflrgtim", 1, 10, 5); - test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1); - test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1); - test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 5); - test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 5); - test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos); - test(S("ectnhskflp"), "", 5, 0, 5); - test(S("fgtianblpq"), "pijag", 5, 0, 5); - test(S("mfeqklirnh"), "jrckd", 5, 1, 5); - test(S("astedncjhk"), "qcloh", 5, 2, 5); - test(S("fhlqgcajbr"), "thlmp", 5, 4, 5); - test(S("epfhocmdng"), "qidmo", 5, 5, 5); - test(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5); - test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 6); - test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5); - test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 6); - test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5); - test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5); - test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5); - test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 6); - test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 8); - test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos); - test(S("shoiedtcjb"), "", 9, 0, 9); - test(S("ebcinjgads"), "tqbnh", 9, 0, 9); - test(S("dqmregkcfl"), "akmle", 9, 1, 9); - test(S("ngcrieqajf"), "iqfkm", 9, 2, 9); - test(S("qosmilgnjb"), "tqjsr", 9, 4, 9); - test(S("ikabsjtdfl"), "jplqg", 9, 5, S::npos); - test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9); - test(S("fdnplotmgh"), "morkglpesn", 9, 1, 9); - test(S("fdbicojerm"), "dmicerngat", 9, 5, S::npos); - test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9); - test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9); - test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9); - test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9); - test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9); - test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, S::npos); - test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos); - test(S("ncjpmaekbs"), "", 10, 0, S::npos); - test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); - test(S("pqfhsgilen"), "qnpor", 10, 1, S::npos); - test(S("gqtjsbdckh"), "otdma", 10, 2, S::npos); - test(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos); - test(S("beanrfodgj"), "odpte", 10, 5, S::npos); - test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); - test(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("gbhqo"), "skqne", 5, 4, S::npos); + test(S("ktdor"), "kipnf", 5, 5, S::npos); + test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); + test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); + test(S("armql"), "pcdgltbrfj", 5, 5, S::npos); + test(S("cdhjo"), "aekfctpirg", 5, 9, S::npos); + test(S("jcons"), "ledihrsgpf", 5, 10, S::npos); + test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); + test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); + test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos); + test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos); + test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); + test(S("gajqn"), "", 6, 0, S::npos); + test(S("stedk"), "hrnat", 6, 0, S::npos); + test(S("tjkaf"), "gsqdt", 6, 1, S::npos); + test(S("dthpe"), "bspkd", 6, 2, S::npos); + test(S("klhde"), "ohcmb", 6, 4, S::npos); + test(S("bhlki"), "heatr", 6, 5, S::npos); + test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); + test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); + test(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos); + test(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos); + test(S("jblqp"), "njolbmspac", 6, 10, S::npos); + test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); + test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); + test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos); + test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); + test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); + test(S("jnkrfhotgl"), "", 0, 0, 0); + test(S("dltjfngbko"), "rqegt", 0, 0, 0); + test(S("bmjlpkiqde"), "dashm", 0, 1, 0); + test(S("skrflobnqm"), "jqirk", 0, 2, 0); + test(S("jkpldtshrm"), "rckeg", 0, 4, 0); + test(S("ghasdbnjqo"), "jscie", 0, 5, 0); + test(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0); + test(S("ikthdgcamf"), "gdicosleja", 0, 1, 0); + test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 2); + test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 4); + test(S("itphbqsker"), "dtablcrseo", 0, 10, 0); + test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0); + test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0); + test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0); + test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 1); + test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos); + test(S("shbcqnmoar"), "", 1, 0, 1); + test(S("bdoshlmfin"), "ontrs", 1, 0, 1); + test(S("khfrebnsgq"), "pfkna", 1, 1, 1); + test(S("getcrsaoji"), "ekosa", 1, 2, 2); + test(S("fjiknedcpq"), "anqhk", 1, 4, 1); + test(S("tkejgnafrm"), "jekca", 1, 5, 4); + test(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1); + test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1); + test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 3); + test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1); + test(S("cigfqkated"), "sqcflrgtim", 1, 10, 5); + test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1); + test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1); + test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 5); + test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 5); + test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos); + test(S("ectnhskflp"), "", 5, 0, 5); + test(S("fgtianblpq"), "pijag", 5, 0, 5); + test(S("mfeqklirnh"), "jrckd", 5, 1, 5); + test(S("astedncjhk"), "qcloh", 5, 2, 5); + test(S("fhlqgcajbr"), "thlmp", 5, 4, 5); + test(S("epfhocmdng"), "qidmo", 5, 5, 5); + test(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5); + test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 6); + test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5); + test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 6); + test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5); + test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5); + test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5); + test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 6); + test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 8); + test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos); + test(S("shoiedtcjb"), "", 9, 0, 9); + test(S("ebcinjgads"), "tqbnh", 9, 0, 9); + test(S("dqmregkcfl"), "akmle", 9, 1, 9); + test(S("ngcrieqajf"), "iqfkm", 9, 2, 9); + test(S("qosmilgnjb"), "tqjsr", 9, 4, 9); + test(S("ikabsjtdfl"), "jplqg", 9, 5, S::npos); + test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9); + test(S("fdnplotmgh"), "morkglpesn", 9, 1, 9); + test(S("fdbicojerm"), "dmicerngat", 9, 5, S::npos); + test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9); + test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9); + test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9); + test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9); + test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9); + test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, S::npos); + test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos); + test(S("ncjpmaekbs"), "", 10, 0, S::npos); + test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); + test(S("pqfhsgilen"), "qnpor", 10, 1, S::npos); + test(S("gqtjsbdckh"), "otdma", 10, 2, S::npos); + test(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos); + test(S("beanrfodgj"), "odpte", 10, 5, S::npos); + test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); + test(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos); - test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos); - test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos); - test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); - test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos); - test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos); - test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos); - test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); - test(S("cqjohampgd"), "", 11, 0, S::npos); - test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); - test(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos); - test(S("ngfbojitcl"), "tqedg", 11, 2, S::npos); - test(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos); - test(S("qghptonrea"), "eaqkl", 11, 5, S::npos); - test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); - test(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos); - test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos); - test(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos); - test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos); - test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); - test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); - test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos); - test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); - test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); - test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0); - test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0); - test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0); - test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0); - test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0); - test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0); - test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0); - test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0); - test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0); - test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0); - test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0); - test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0); - test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0); - test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0); - test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 11); - test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos); - test(S("febhmqtjanokscdirpgl"), "", 1, 0, 1); - test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1); - test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1); - test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 2); - test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 2); - test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1); - test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1); - test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1); - test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1); - test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 3); - test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 2); - test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1); - test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1); - test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 2); - test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 13); - test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos); - test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10); - test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10); - test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10); - test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10); - test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 11); - test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10); - test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10); - test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10); - test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10); - test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 11); - test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10); - test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10); - test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10); - test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 11); - test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 11); - test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos); - test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19); - test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19); - test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19); - test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19); - test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19); - test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, S::npos); - test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19); - test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19); - test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19); - test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19); - test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19); - test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19); - test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19); - test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, S::npos); - test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, S::npos); - test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos); - test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); - test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); - test(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos); - test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos); - test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos); - test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos); - test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); - test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos); - test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos); - test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos); - test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos); - test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos); + test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos); + test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos); + test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); + test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos); + test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos); + test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos); + test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); + test(S("cqjohampgd"), "", 11, 0, S::npos); + test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); + test(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos); + test(S("ngfbojitcl"), "tqedg", 11, 2, S::npos); + test(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos); + test(S("qghptonrea"), "eaqkl", 11, 5, S::npos); + test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); + test(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos); + test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos); + test(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos); + test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos); + test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); + test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); + test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos); + test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); + test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); + test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0); + test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0); + test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0); + test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0); + test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0); + test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0); + test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0); + test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0); + test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0); + test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0); + test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0); + test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0); + test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0); + test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0); + test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 11); + test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos); + test(S("febhmqtjanokscdirpgl"), "", 1, 0, 1); + test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1); + test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1); + test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 2); + test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 2); + test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1); + test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1); + test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1); + test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1); + test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 3); + test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 2); + test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1); + test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1); + test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 2); + test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 13); + test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos); + test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10); + test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10); + test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10); + test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10); + test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 11); + test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10); + test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10); + test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10); + test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10); + test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 11); + test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10); + test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10); + test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10); + test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 11); + test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 11); + test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos); + test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19); + test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19); + test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19); + test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19); + test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19); + test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, S::npos); + test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19); + test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19); + test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19); + test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19); + test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19); + test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19); + test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19); + test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, S::npos); + test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, S::npos); + test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos); + test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); + test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); + test(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos); + test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos); + test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos); + test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos); + test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); + test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos); + test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos); + test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos); + test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos); + test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); } template -TEST_CONSTEXPR_CXX20 void test3() -{ - test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos); - test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos); - test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos); - test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); - test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); - test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); - test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos); - test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos); - test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos); - test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos); - test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); - test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos); - test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos); - test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos); - test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos); - test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); - test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos); - test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos); - test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos); - test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); +TEST_CONSTEXPR_CXX20 void test3() { + test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos); + test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos); + test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos); + test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); + test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); + test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); + test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos); + test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos); + test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos); + test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos); + test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); + test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos); + test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos); + test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos); + test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos); + test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); + test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos); + test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos); + test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos); + test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -388,8 +386,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos)); - assert(s.find_first_not_of(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos)); + assert(s.find_first_not_of(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str)); - assert(s.find_first_not_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str)); + assert(s.find_first_not_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), S(""), 0, S::npos); - test(S(""), S("laenf"), 0, S::npos); - test(S(""), S("pqlnkmbdjo"), 0, S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("bjaht"), 1, S::npos); - test(S(""), S("hjlcmgpket"), 1, S::npos); - test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), S(""), 0, 0); - test(S("qanej"), S("dfkap"), 0, 0); - test(S("clbao"), S("ihqrfebgad"), 0, 0); - test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, S::npos); - test(S("srdfq"), S(""), 1, 1); - test(S("oemth"), S("ikcrq"), 1, 1); - test(S("cdaih"), S("dmajblfhsg"), 1, 3); - test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, S::npos); - test(S("cshmd"), S(""), 2, 2); - test(S("lhcdo"), S("oebqi"), 2, 2); - test(S("qnsoh"), S("kojhpmbsfe"), 2, S::npos); - test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, S::npos); - test(S("fmtsp"), S(""), 4, 4); - test(S("khbpm"), S("aobjd"), 4, 4); - test(S("pbsji"), S("pcbahntsje"), 4, 4); - test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, S::npos); - test(S("eqmpa"), S(""), 5, S::npos); - test(S("omigs"), S("kocgb"), 5, S::npos); - test(S("onmje"), S("fbslrjiqkm"), 5, S::npos); - test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), S(""), 6, S::npos); - test(S("igdsc"), S("qngpd"), 6, S::npos); - test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), S(""), 0, 0); - test(S("daiprenocl"), S("ashjd"), 0, 2); - test(S("litpcfdghe"), S("mgojkldsqh"), 0, 1); - test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, S::npos); - test(S("qpghtfbaji"), S(""), 1, 1); - test(S("gfshlcmdjr"), S("nadkh"), 1, 1); - test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 4); - test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, S::npos); - test(S("crnklpmegd"), S(""), 5, 5); - test(S("jsbtafedoc"), S("prqgn"), 5, 5); - test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 6); - test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, S::npos); - test(S("lmofqdhpki"), S(""), 9, 9); - test(S("hnefkqimca"), S("rtjpa"), 9, S::npos); - test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 9); - test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, S::npos); - test(S("elgofjmbrq"), S(""), 10, S::npos); - test(S("mjqdgalkpc"), S("dplqa"), 10, S::npos); - test(S("kthqnfcerm"), S("dkacjoptns"), 10, S::npos); - test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), S(""), 11, S::npos); - test(S("akiteljmoh"), S("lofbc"), 11, S::npos); - test(S("hlbdfreqjo"), S("astoegbfpn"), 11, S::npos); - test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), S(""), 0, 0); - test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 0); - test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 1); - test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), S(""), 1, 1); - test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 3); - test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), S(""), 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 11); - test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 13); - test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, S::npos); - test(S("niptglfbosehkamrdqcj"), S(""), 19, 19); - test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, S::npos); - test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), S(""), 0, S::npos); + test(S(""), S("laenf"), 0, S::npos); + test(S(""), S("pqlnkmbdjo"), 0, S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("bjaht"), 1, S::npos); + test(S(""), S("hjlcmgpket"), 1, S::npos); + test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), S(""), 0, 0); + test(S("qanej"), S("dfkap"), 0, 0); + test(S("clbao"), S("ihqrfebgad"), 0, 0); + test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, S::npos); + test(S("srdfq"), S(""), 1, 1); + test(S("oemth"), S("ikcrq"), 1, 1); + test(S("cdaih"), S("dmajblfhsg"), 1, 3); + test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, S::npos); + test(S("cshmd"), S(""), 2, 2); + test(S("lhcdo"), S("oebqi"), 2, 2); + test(S("qnsoh"), S("kojhpmbsfe"), 2, S::npos); + test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, S::npos); + test(S("fmtsp"), S(""), 4, 4); + test(S("khbpm"), S("aobjd"), 4, 4); + test(S("pbsji"), S("pcbahntsje"), 4, 4); + test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, S::npos); + test(S("eqmpa"), S(""), 5, S::npos); + test(S("omigs"), S("kocgb"), 5, S::npos); + test(S("onmje"), S("fbslrjiqkm"), 5, S::npos); + test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), S(""), 6, S::npos); + test(S("igdsc"), S("qngpd"), 6, S::npos); + test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), S(""), 0, 0); + test(S("daiprenocl"), S("ashjd"), 0, 2); + test(S("litpcfdghe"), S("mgojkldsqh"), 0, 1); + test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, S::npos); + test(S("qpghtfbaji"), S(""), 1, 1); + test(S("gfshlcmdjr"), S("nadkh"), 1, 1); + test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 4); + test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, S::npos); + test(S("crnklpmegd"), S(""), 5, 5); + test(S("jsbtafedoc"), S("prqgn"), 5, 5); + test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 6); + test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, S::npos); + test(S("lmofqdhpki"), S(""), 9, 9); + test(S("hnefkqimca"), S("rtjpa"), 9, S::npos); + test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 9); + test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, S::npos); + test(S("elgofjmbrq"), S(""), 10, S::npos); + test(S("mjqdgalkpc"), S("dplqa"), 10, S::npos); + test(S("kthqnfcerm"), S("dkacjoptns"), 10, S::npos); + test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), S(""), 11, S::npos); + test(S("akiteljmoh"), S("lofbc"), 11, S::npos); + test(S("hlbdfreqjo"), S("astoegbfpn"), 11, S::npos); + test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), S(""), 0, 0); + test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 0); + test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 1); + test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), S(""), 1, 1); + test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 3); + test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), S(""), 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 11); + test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 13); + test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, S::npos); + test(S("niptglfbosehkamrdqcj"), S(""), 19, 19); + test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, S::npos); + test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), S(""), S::npos); - test(S(""), S("laenf"), S::npos); - test(S(""), S("pqlnkmbdjo"), S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), S(""), 0); - test(S("lahfb"), S("irkhs"), 0); - test(S("gmfhd"), S("kantesmpgj"), 2); - test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), S::npos); - test(S("eolhfgpjqk"), S(""), 0); - test(S("nbatdlmekr"), S("bnrpe"), 2); - test(S("jdmciepkaq"), S("jtdaefblso"), 2); - test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), S::npos); - test(S("gprdcokbnjhlsfmtieqa"), S(""), 0); - test(S("qjghlnftcaismkropdeb"), S("bjaht"), 0); - test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 1); - test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), S(""), S::npos); + test(S(""), S("laenf"), S::npos); + test(S(""), S("pqlnkmbdjo"), S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), S(""), 0); + test(S("lahfb"), S("irkhs"), 0); + test(S("gmfhd"), S("kantesmpgj"), 2); + test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), S::npos); + test(S("eolhfgpjqk"), S(""), 0); + test(S("nbatdlmekr"), S("bnrpe"), 2); + test(S("jdmciepkaq"), S("jtdaefblso"), 2); + test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), S::npos); + test(S("gprdcokbnjhlsfmtieqa"), S(""), 0); + test(S("qjghlnftcaismkropdeb"), S("bjaht"), 0); + test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 1); + test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -166,8 +160,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.not.of/string_view_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(sv, pos)); - assert(s.find_first_not_of(sv, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(sv, pos)); + assert(s.find_first_not_of(sv, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(sv)); - assert(s.find_first_not_of(sv) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(sv)); + assert(s.find_first_not_of(sv) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), SV(""), 0, S::npos); - test(S(""), SV("laenf"), 0, S::npos); - test(S(""), SV("pqlnkmbdjo"), 0, S::npos); - test(S(""), SV("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), SV(""), 1, S::npos); - test(S(""), SV("bjaht"), 1, S::npos); - test(S(""), SV("hjlcmgpket"), 1, S::npos); - test(S(""), SV("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), SV(""), 0, 0); - test(S("qanej"), SV("dfkap"), 0, 0); - test(S("clbao"), SV("ihqrfebgad"), 0, 0); - test(S("mekdn"), SV("ngtjfcalbseiqrphmkdo"), 0, S::npos); - test(S("srdfq"), SV(""), 1, 1); - test(S("oemth"), SV("ikcrq"), 1, 1); - test(S("cdaih"), SV("dmajblfhsg"), 1, 3); - test(S("qohtk"), SV("oqftjhdmkgsblacenirp"), 1, S::npos); - test(S("cshmd"), SV(""), 2, 2); - test(S("lhcdo"), SV("oebqi"), 2, 2); - test(S("qnsoh"), SV("kojhpmbsfe"), 2, S::npos); - test(S("pkrof"), SV("acbsjqogpltdkhinfrem"), 2, S::npos); - test(S("fmtsp"), SV(""), 4, 4); - test(S("khbpm"), SV("aobjd"), 4, 4); - test(S("pbsji"), SV("pcbahntsje"), 4, 4); - test(S("mprdj"), SV("fhepcrntkoagbmldqijs"), 4, S::npos); - test(S("eqmpa"), SV(""), 5, S::npos); - test(S("omigs"), SV("kocgb"), 5, S::npos); - test(S("onmje"), SV("fbslrjiqkm"), 5, S::npos); - test(S("oqmrj"), SV("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), SV(""), 6, S::npos); - test(S("igdsc"), SV("qngpd"), 6, S::npos); - test(S("brqgo"), SV("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), SV("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), SV(""), 0, 0); - test(S("daiprenocl"), SV("ashjd"), 0, 2); - test(S("litpcfdghe"), SV("mgojkldsqh"), 0, 1); - test(S("aidjksrolc"), SV("imqnaghkfrdtlopbjesc"), 0, S::npos); - test(S("qpghtfbaji"), SV(""), 1, 1); - test(S("gfshlcmdjr"), SV("nadkh"), 1, 1); - test(S("nkodajteqp"), SV("ofdrqmkebl"), 1, 4); - test(S("gbmetiprqd"), SV("bdfjqgatlksriohemnpc"), 1, S::npos); - test(S("crnklpmegd"), SV(""), 5, 5); - test(S("jsbtafedoc"), SV("prqgn"), 5, 5); - test(S("qnmodrtkeb"), SV("pejafmnokr"), 5, 6); - test(S("cpebqsfmnj"), SV("odnqkgijrhabfmcestlp"), 5, S::npos); - test(S("lmofqdhpki"), SV(""), 9, 9); - test(S("hnefkqimca"), SV("rtjpa"), 9, S::npos); - test(S("drtasbgmfp"), SV("ktsrmnqagd"), 9, 9); - test(S("lsaijeqhtr"), SV("rtdhgcisbnmoaqkfpjle"), 9, S::npos); - test(S("elgofjmbrq"), SV(""), 10, S::npos); - test(S("mjqdgalkpc"), SV("dplqa"), 10, S::npos); - test(S("kthqnfcerm"), SV("dkacjoptns"), 10, S::npos); - test(S("dfsjhanorc"), SV("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), SV(""), 11, S::npos); - test(S("akiteljmoh"), SV("lofbc"), 11, S::npos); - test(S("hlbdfreqjo"), SV("astoegbfpn"), 11, S::npos); - test(S("taqobhlerg"), SV("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), SV(""), 0, 0); - test(S("aemtbrgcklhndjisfpoq"), SV("lbtqd"), 0, 0); - test(S("pnracgfkjdiholtbqsem"), SV("tboimldpjh"), 0, 1); - test(S("dicfltehbsgrmojnpkaq"), SV("slcerthdaiqjfnobgkpm"), 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), SV(""), 1, 1); - test(S("lhosrngtmfjikbqpcade"), SV("aqibs"), 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), SV("gtfblmqinc"), 1, 3); - test(S("gpifsqlrdkbonjtmheca"), SV("mkqpbtdalgniorhfescj"), 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), SV(""), 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), SV("pblas"), 10, 11); - test(S("fkdrbqltsgmcoiphneaj"), SV("arosdhcfme"), 10, 13); - test(S("crsplifgtqedjohnabmk"), SV("blkhjeogicatqfnpdmsr"), 10, S::npos); - test(S("niptglfbosehkamrdqcj"), SV(""), 19, 19); - test(S("copqdhstbingamjfkler"), SV("djkqc"), 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), SV("lgokshjtpb"), 19, S::npos); - test(S("kojatdhlcmigpbfrqnes"), SV("bqjhtkfepimcnsgrlado"), 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), SV(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), SV("nocfa"), 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), SV("bgtajmiedc"), 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), SV("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), SV(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), SV("gfsrt"), 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), SV("pfsocbhjtm"), 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), SV("tpflmdnoicjgkberhqsa"), 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), SV(""), 0, S::npos); + test(S(""), SV("laenf"), 0, S::npos); + test(S(""), SV("pqlnkmbdjo"), 0, S::npos); + test(S(""), SV("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), SV(""), 1, S::npos); + test(S(""), SV("bjaht"), 1, S::npos); + test(S(""), SV("hjlcmgpket"), 1, S::npos); + test(S(""), SV("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), SV(""), 0, 0); + test(S("qanej"), SV("dfkap"), 0, 0); + test(S("clbao"), SV("ihqrfebgad"), 0, 0); + test(S("mekdn"), SV("ngtjfcalbseiqrphmkdo"), 0, S::npos); + test(S("srdfq"), SV(""), 1, 1); + test(S("oemth"), SV("ikcrq"), 1, 1); + test(S("cdaih"), SV("dmajblfhsg"), 1, 3); + test(S("qohtk"), SV("oqftjhdmkgsblacenirp"), 1, S::npos); + test(S("cshmd"), SV(""), 2, 2); + test(S("lhcdo"), SV("oebqi"), 2, 2); + test(S("qnsoh"), SV("kojhpmbsfe"), 2, S::npos); + test(S("pkrof"), SV("acbsjqogpltdkhinfrem"), 2, S::npos); + test(S("fmtsp"), SV(""), 4, 4); + test(S("khbpm"), SV("aobjd"), 4, 4); + test(S("pbsji"), SV("pcbahntsje"), 4, 4); + test(S("mprdj"), SV("fhepcrntkoagbmldqijs"), 4, S::npos); + test(S("eqmpa"), SV(""), 5, S::npos); + test(S("omigs"), SV("kocgb"), 5, S::npos); + test(S("onmje"), SV("fbslrjiqkm"), 5, S::npos); + test(S("oqmrj"), SV("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), SV(""), 6, S::npos); + test(S("igdsc"), SV("qngpd"), 6, S::npos); + test(S("brqgo"), SV("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), SV("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), SV(""), 0, 0); + test(S("daiprenocl"), SV("ashjd"), 0, 2); + test(S("litpcfdghe"), SV("mgojkldsqh"), 0, 1); + test(S("aidjksrolc"), SV("imqnaghkfrdtlopbjesc"), 0, S::npos); + test(S("qpghtfbaji"), SV(""), 1, 1); + test(S("gfshlcmdjr"), SV("nadkh"), 1, 1); + test(S("nkodajteqp"), SV("ofdrqmkebl"), 1, 4); + test(S("gbmetiprqd"), SV("bdfjqgatlksriohemnpc"), 1, S::npos); + test(S("crnklpmegd"), SV(""), 5, 5); + test(S("jsbtafedoc"), SV("prqgn"), 5, 5); + test(S("qnmodrtkeb"), SV("pejafmnokr"), 5, 6); + test(S("cpebqsfmnj"), SV("odnqkgijrhabfmcestlp"), 5, S::npos); + test(S("lmofqdhpki"), SV(""), 9, 9); + test(S("hnefkqimca"), SV("rtjpa"), 9, S::npos); + test(S("drtasbgmfp"), SV("ktsrmnqagd"), 9, 9); + test(S("lsaijeqhtr"), SV("rtdhgcisbnmoaqkfpjle"), 9, S::npos); + test(S("elgofjmbrq"), SV(""), 10, S::npos); + test(S("mjqdgalkpc"), SV("dplqa"), 10, S::npos); + test(S("kthqnfcerm"), SV("dkacjoptns"), 10, S::npos); + test(S("dfsjhanorc"), SV("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), SV(""), 11, S::npos); + test(S("akiteljmoh"), SV("lofbc"), 11, S::npos); + test(S("hlbdfreqjo"), SV("astoegbfpn"), 11, S::npos); + test(S("taqobhlerg"), SV("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), SV(""), 0, 0); + test(S("aemtbrgcklhndjisfpoq"), SV("lbtqd"), 0, 0); + test(S("pnracgfkjdiholtbqsem"), SV("tboimldpjh"), 0, 1); + test(S("dicfltehbsgrmojnpkaq"), SV("slcerthdaiqjfnobgkpm"), 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), SV(""), 1, 1); + test(S("lhosrngtmfjikbqpcade"), SV("aqibs"), 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), SV("gtfblmqinc"), 1, 3); + test(S("gpifsqlrdkbonjtmheca"), SV("mkqpbtdalgniorhfescj"), 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), SV(""), 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), SV("pblas"), 10, 11); + test(S("fkdrbqltsgmcoiphneaj"), SV("arosdhcfme"), 10, 13); + test(S("crsplifgtqedjohnabmk"), SV("blkhjeogicatqfnpdmsr"), 10, S::npos); + test(S("niptglfbosehkamrdqcj"), SV(""), 19, 19); + test(S("copqdhstbingamjfkler"), SV("djkqc"), 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), SV("lgokshjtpb"), 19, S::npos); + test(S("kojatdhlcmigpbfrqnes"), SV("bqjhtkfepimcnsgrlado"), 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), SV(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), SV("nocfa"), 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), SV("bgtajmiedc"), 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), SV("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), SV(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), SV("gfsrt"), 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), SV("pfsocbhjtm"), 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), SV("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), SV(""), S::npos); - test(S(""), SV("laenf"), S::npos); - test(S(""), SV("pqlnkmbdjo"), S::npos); - test(S(""), SV("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), SV(""), 0); - test(S("lahfb"), SV("irkhs"), 0); - test(S("gmfhd"), SV("kantesmpgj"), 2); - test(S("odaft"), SV("oknlrstdpiqmjbaghcfe"), S::npos); - test(S("eolhfgpjqk"), SV(""), 0); - test(S("nbatdlmekr"), SV("bnrpe"), 2); - test(S("jdmciepkaq"), SV("jtdaefblso"), 2); - test(S("hkbgspoflt"), SV("oselktgbcapndfjihrmq"), S::npos); - test(S("gprdcokbnjhlsfmtieqa"), SV(""), 0); - test(S("qjghlnftcaismkropdeb"), SV("bjaht"), 0); - test(S("pnalfrdtkqcmojiesbhg"), SV("hjlcmgpket"), 1); - test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), SV(""), S::npos); + test(S(""), SV("laenf"), S::npos); + test(S(""), SV("pqlnkmbdjo"), S::npos); + test(S(""), SV("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), SV(""), 0); + test(S("lahfb"), SV("irkhs"), 0); + test(S("gmfhd"), SV("kantesmpgj"), 2); + test(S("odaft"), SV("oknlrstdpiqmjbaghcfe"), S::npos); + test(S("eolhfgpjqk"), SV(""), 0); + test(S("nbatdlmekr"), SV("bnrpe"), 2); + test(S("jdmciepkaq"), SV("jtdaefblso"), 2); + test(S("hkbgspoflt"), SV("oselktgbcapndfjihrmq"), S::npos); + test(S("gprdcokbnjhlsfmtieqa"), SV(""), 0); + test(S("qjghlnftcaismkropdeb"), SV("bjaht"), 0); + test(S("pnalfrdtkqcmojiesbhg"), SV("hjlcmgpket"), 1); + test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -161,8 +155,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/char_size.pass.cpp @@ -18,23 +18,19 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(c, pos)); - assert(s.find_first_of(c, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(c, pos)); + assert(s.find_first_of(c, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(c)); - assert(s.find_first_of(c) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(c)); + assert(s.find_first_of(c) == x); + if (x != S::npos) + assert(x < s.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -100,8 +96,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size.pass.cpp @@ -18,129 +18,123 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos)); - assert(s.find_first_of(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos)); + assert(s.find_first_of(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str)); - assert(s.find_first_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str)); + assert(s.find_first_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, S::npos); - test(S(""), "laenf", 0, S::npos); - test(S(""), "pqlnkmbdjo", 0, S::npos); - test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "bjaht", 1, S::npos); - test(S(""), "hjlcmgpket", 1, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); - test(S("fodgq"), "", 0, S::npos); - test(S("qanej"), "dfkap", 0, 1); - test(S("clbao"), "ihqrfebgad", 0, 2); - test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, 0); - test(S("srdfq"), "", 1, S::npos); - test(S("oemth"), "ikcrq", 1, S::npos); - test(S("cdaih"), "dmajblfhsg", 1, 1); - test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, 1); - test(S("cshmd"), "", 2, S::npos); - test(S("lhcdo"), "oebqi", 2, 4); - test(S("qnsoh"), "kojhpmbsfe", 2, 2); - test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, 2); - test(S("fmtsp"), "", 4, S::npos); - test(S("khbpm"), "aobjd", 4, S::npos); - test(S("pbsji"), "pcbahntsje", 4, S::npos); - test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, 4); - test(S("eqmpa"), "", 5, S::npos); - test(S("omigs"), "kocgb", 5, S::npos); - test(S("onmje"), "fbslrjiqkm", 5, S::npos); - test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); - test(S("schfa"), "", 6, S::npos); - test(S("igdsc"), "qngpd", 6, S::npos); - test(S("brqgo"), "rodhqklgmb", 6, S::npos); - test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); - test(S("hcjitbfapl"), "", 0, S::npos); - test(S("daiprenocl"), "ashjd", 0, 0); - test(S("litpcfdghe"), "mgojkldsqh", 0, 0); - test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, 0); - test(S("qpghtfbaji"), "", 1, S::npos); - test(S("gfshlcmdjr"), "nadkh", 1, 3); - test(S("nkodajteqp"), "ofdrqmkebl", 1, 1); - test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, 1); - test(S("crnklpmegd"), "", 5, S::npos); - test(S("jsbtafedoc"), "prqgn", 5, S::npos); - test(S("qnmodrtkeb"), "pejafmnokr", 5, 5); - test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, 5); - test(S("lmofqdhpki"), "", 9, S::npos); - test(S("hnefkqimca"), "rtjpa", 9, 9); - test(S("drtasbgmfp"), "ktsrmnqagd", 9, S::npos); - test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, 9); - test(S("elgofjmbrq"), "", 10, S::npos); - test(S("mjqdgalkpc"), "dplqa", 10, S::npos); - test(S("kthqnfcerm"), "dkacjoptns", 10, S::npos); - test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); - test(S("eqsgalomhb"), "", 11, S::npos); - test(S("akiteljmoh"), "lofbc", 11, S::npos); - test(S("hlbdfreqjo"), "astoegbfpn", 11, S::npos); - test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), "", 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 3); - test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 0); - test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, 0); - test(S("jlnkraeodhcspfgbqitm"), "", 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 3); - test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 1); - test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, 1); - test(S("hdpkobnsalmcfijregtq"), "", 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 10); - test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, 10); - test(S("niptglfbosehkamrdqcj"), "", 19, S::npos); - test(S("copqdhstbingamjfkler"), "djkqc", 19, S::npos); - test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 19); - test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, 19); - test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); - test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, S::npos); + test(S(""), "laenf", 0, S::npos); + test(S(""), "pqlnkmbdjo", 0, S::npos); + test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "bjaht", 1, S::npos); + test(S(""), "hjlcmgpket", 1, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); + test(S("fodgq"), "", 0, S::npos); + test(S("qanej"), "dfkap", 0, 1); + test(S("clbao"), "ihqrfebgad", 0, 2); + test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, 0); + test(S("srdfq"), "", 1, S::npos); + test(S("oemth"), "ikcrq", 1, S::npos); + test(S("cdaih"), "dmajblfhsg", 1, 1); + test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, 1); + test(S("cshmd"), "", 2, S::npos); + test(S("lhcdo"), "oebqi", 2, 4); + test(S("qnsoh"), "kojhpmbsfe", 2, 2); + test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, 2); + test(S("fmtsp"), "", 4, S::npos); + test(S("khbpm"), "aobjd", 4, S::npos); + test(S("pbsji"), "pcbahntsje", 4, S::npos); + test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, 4); + test(S("eqmpa"), "", 5, S::npos); + test(S("omigs"), "kocgb", 5, S::npos); + test(S("onmje"), "fbslrjiqkm", 5, S::npos); + test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); + test(S("schfa"), "", 6, S::npos); + test(S("igdsc"), "qngpd", 6, S::npos); + test(S("brqgo"), "rodhqklgmb", 6, S::npos); + test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); + test(S("hcjitbfapl"), "", 0, S::npos); + test(S("daiprenocl"), "ashjd", 0, 0); + test(S("litpcfdghe"), "mgojkldsqh", 0, 0); + test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, 0); + test(S("qpghtfbaji"), "", 1, S::npos); + test(S("gfshlcmdjr"), "nadkh", 1, 3); + test(S("nkodajteqp"), "ofdrqmkebl", 1, 1); + test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, 1); + test(S("crnklpmegd"), "", 5, S::npos); + test(S("jsbtafedoc"), "prqgn", 5, S::npos); + test(S("qnmodrtkeb"), "pejafmnokr", 5, 5); + test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, 5); + test(S("lmofqdhpki"), "", 9, S::npos); + test(S("hnefkqimca"), "rtjpa", 9, 9); + test(S("drtasbgmfp"), "ktsrmnqagd", 9, S::npos); + test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, 9); + test(S("elgofjmbrq"), "", 10, S::npos); + test(S("mjqdgalkpc"), "dplqa", 10, S::npos); + test(S("kthqnfcerm"), "dkacjoptns", 10, S::npos); + test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); + test(S("eqsgalomhb"), "", 11, S::npos); + test(S("akiteljmoh"), "lofbc", 11, S::npos); + test(S("hlbdfreqjo"), "astoegbfpn", 11, S::npos); + test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), "", 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 3); + test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 0); + test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, 0); + test(S("jlnkraeodhcspfgbqitm"), "", 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 3); + test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 1); + test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, 1); + test(S("hdpkobnsalmcfijregtq"), "", 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 10); + test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, 10); + test(S("niptglfbosehkamrdqcj"), "", 19, S::npos); + test(S("copqdhstbingamjfkler"), "djkqc", 19, S::npos); + test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 19); + test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, 19); + test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); + test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), "", S::npos); - test(S(""), "laenf", S::npos); - test(S(""), "pqlnkmbdjo", S::npos); - test(S(""), "qkamfogpnljdcshbreti", S::npos); - test(S("nhmko"), "", S::npos); - test(S("lahfb"), "irkhs", 2); - test(S("gmfhd"), "kantesmpgj", 0); - test(S("odaft"), "oknlrstdpiqmjbaghcfe", 0); - test(S("eolhfgpjqk"), "", S::npos); - test(S("nbatdlmekr"), "bnrpe", 0); - test(S("jdmciepkaq"), "jtdaefblso", 0); - test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", 0); - test(S("gprdcokbnjhlsfmtieqa"), "", S::npos); - test(S("qjghlnftcaismkropdeb"), "bjaht", 1); - test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 0); - test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), "", S::npos); + test(S(""), "laenf", S::npos); + test(S(""), "pqlnkmbdjo", S::npos); + test(S(""), "qkamfogpnljdcshbreti", S::npos); + test(S("nhmko"), "", S::npos); + test(S("lahfb"), "irkhs", 2); + test(S("gmfhd"), "kantesmpgj", 0); + test(S("odaft"), "oknlrstdpiqmjbaghcfe", 0); + test(S("eolhfgpjqk"), "", S::npos); + test(S("nbatdlmekr"), "bnrpe", 0); + test(S("jdmciepkaq"), "jtdaefblso", 0); + test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", 0); + test(S("gprdcokbnjhlsfmtieqa"), "", S::npos); + test(S("qjghlnftcaismkropdeb"), "bjaht", 1); + test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 0); + test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -160,8 +154,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/pointer_size_size.pass.cpp @@ -18,353 +18,351 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos, n)); - assert(s.find_first_of(str, pos, n) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos, n)); + assert(s.find_first_of(str, pos, n) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, 0, S::npos); - test(S(""), "irkhs", 0, 0, S::npos); - test(S(""), "kante", 0, 1, S::npos); - test(S(""), "oknlr", 0, 2, S::npos); - test(S(""), "pcdro", 0, 4, S::npos); - test(S(""), "bnrpe", 0, 5, S::npos); - test(S(""), "jtdaefblso", 0, 0, S::npos); - test(S(""), "oselktgbca", 0, 1, S::npos); - test(S(""), "eqgaplhckj", 0, 5, S::npos); - test(S(""), "bjahtcmnlp", 0, 9, S::npos); - test(S(""), "hjlcmgpket", 0, 10, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); - test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); - test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); - test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); - test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "lbtqd", 1, 0, S::npos); - test(S(""), "tboim", 1, 1, S::npos); - test(S(""), "slcer", 1, 2, S::npos); - test(S(""), "cbjfs", 1, 4, S::npos); - test(S(""), "aqibs", 1, 5, S::npos); - test(S(""), "gtfblmqinc", 1, 0, S::npos); - test(S(""), "mkqpbtdalg", 1, 1, S::npos); - test(S(""), "kphatlimcd", 1, 5, S::npos); - test(S(""), "pblasqogic", 1, 9, S::npos); - test(S(""), "arosdhcfme", 1, 10, S::npos); - test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); - test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); - test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); - test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); - test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); - test(S("eaint"), "", 0, 0, S::npos); - test(S("binja"), "gfsrt", 0, 0, S::npos); - test(S("latkm"), "pfsoc", 0, 1, S::npos); - test(S("lecfr"), "tpflm", 0, 2, S::npos); - test(S("eqkst"), "sgkec", 0, 4, 0); - test(S("cdafr"), "romds", 0, 5, 1); - test(S("prbhe"), "qhjistlgmr", 0, 0, S::npos); - test(S("lbisk"), "pedfirsglo", 0, 1, S::npos); - test(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos); - test(S("ehmja"), "dabckmepqj", 0, 9, 0); - test(S("mhqgd"), "pqscrjthli", 0, 10, 1); - test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos); - test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos); - test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos); - test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0); - test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0); - test(S("clrgb"), "", 1, 0, S::npos); - test(S("tjmek"), "osmia", 1, 0, S::npos); - test(S("bgstp"), "ckonl", 1, 1, S::npos); - test(S("hstrk"), "ilcaj", 1, 2, S::npos); - test(S("kmspj"), "lasiq", 1, 4, 2); - test(S("tjboh"), "kfqmr", 1, 5, S::npos); - test(S("ilbcj"), "klnitfaobg", 1, 0, S::npos); - test(S("jkngf"), "gjhmdlqikp", 1, 1, 3); - test(S("gfcql"), "skbgtahqej", 1, 5, S::npos); - test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 2); - test(S("bthpg"), "bjgfmnlkio", 1, 10, 4); - test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos); - test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos); - test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1); - test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1); - test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1); - test(S("ndrhl"), "", 2, 0, S::npos); - test(S("mrecp"), "otkgb", 2, 0, S::npos); - test(S("qlasf"), "cqsjl", 2, 1, S::npos); - test(S("smaqd"), "dpifl", 2, 2, 4); - test(S("hjeni"), "oapht", 2, 4, S::npos); - test(S("ocmfj"), "cifts", 2, 5, 3); - test(S("hmftq"), "nmsckbgalo", 2, 0, S::npos); - test(S("fklad"), "tpksqhamle", 2, 1, S::npos); - test(S("dirnm"), "tpdrchmkji", 2, 5, 2); - test(S("hrgdc"), "ijagfkblst", 2, 9, 2); - test(S("ifakg"), "kpocsignjb", 2, 10, 3); - test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos); - test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos); - test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 3); - test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2); - test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2); - test(S("cjgao"), "", 4, 0, S::npos); - test(S("kjplq"), "mabns", 4, 0, S::npos); - test(S("herni"), "bdnrp", 4, 1, S::npos); - test(S("tadrb"), "scidp", 4, 2, S::npos); - test(S("pkfeo"), "agbjl", 4, 4, S::npos); - test(S("hoser"), "jfmpr", 4, 5, 4); - test(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos); - test(S("pgejb"), "apsfntdoqc", 4, 1, S::npos); - test(S("thlnq"), "ndkjeisgcl", 4, 5, S::npos); - test(S("nbmit"), "rnfpqatdeo", 4, 9, 4); - test(S("jgmib"), "bntjlqrfik", 4, 10, 4); - test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos); - test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos); - test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4); - test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4); - test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4); - test(S("klopi"), "", 5, 0, S::npos); - test(S("dajhn"), "psthd", 5, 0, S::npos); - test(S("jbgno"), "rpmjd", 5, 1, S::npos); - test(S("hkjae"), "dfsmk", 5, 2, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, 0, S::npos); + test(S(""), "irkhs", 0, 0, S::npos); + test(S(""), "kante", 0, 1, S::npos); + test(S(""), "oknlr", 0, 2, S::npos); + test(S(""), "pcdro", 0, 4, S::npos); + test(S(""), "bnrpe", 0, 5, S::npos); + test(S(""), "jtdaefblso", 0, 0, S::npos); + test(S(""), "oselktgbca", 0, 1, S::npos); + test(S(""), "eqgaplhckj", 0, 5, S::npos); + test(S(""), "bjahtcmnlp", 0, 9, S::npos); + test(S(""), "hjlcmgpket", 0, 10, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); + test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); + test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); + test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); + test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "lbtqd", 1, 0, S::npos); + test(S(""), "tboim", 1, 1, S::npos); + test(S(""), "slcer", 1, 2, S::npos); + test(S(""), "cbjfs", 1, 4, S::npos); + test(S(""), "aqibs", 1, 5, S::npos); + test(S(""), "gtfblmqinc", 1, 0, S::npos); + test(S(""), "mkqpbtdalg", 1, 1, S::npos); + test(S(""), "kphatlimcd", 1, 5, S::npos); + test(S(""), "pblasqogic", 1, 9, S::npos); + test(S(""), "arosdhcfme", 1, 10, S::npos); + test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); + test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); + test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); + test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); + test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); + test(S("eaint"), "", 0, 0, S::npos); + test(S("binja"), "gfsrt", 0, 0, S::npos); + test(S("latkm"), "pfsoc", 0, 1, S::npos); + test(S("lecfr"), "tpflm", 0, 2, S::npos); + test(S("eqkst"), "sgkec", 0, 4, 0); + test(S("cdafr"), "romds", 0, 5, 1); + test(S("prbhe"), "qhjistlgmr", 0, 0, S::npos); + test(S("lbisk"), "pedfirsglo", 0, 1, S::npos); + test(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos); + test(S("ehmja"), "dabckmepqj", 0, 9, 0); + test(S("mhqgd"), "pqscrjthli", 0, 10, 1); + test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos); + test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos); + test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos); + test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0); + test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0); + test(S("clrgb"), "", 1, 0, S::npos); + test(S("tjmek"), "osmia", 1, 0, S::npos); + test(S("bgstp"), "ckonl", 1, 1, S::npos); + test(S("hstrk"), "ilcaj", 1, 2, S::npos); + test(S("kmspj"), "lasiq", 1, 4, 2); + test(S("tjboh"), "kfqmr", 1, 5, S::npos); + test(S("ilbcj"), "klnitfaobg", 1, 0, S::npos); + test(S("jkngf"), "gjhmdlqikp", 1, 1, 3); + test(S("gfcql"), "skbgtahqej", 1, 5, S::npos); + test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 2); + test(S("bthpg"), "bjgfmnlkio", 1, 10, 4); + test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos); + test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos); + test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1); + test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1); + test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1); + test(S("ndrhl"), "", 2, 0, S::npos); + test(S("mrecp"), "otkgb", 2, 0, S::npos); + test(S("qlasf"), "cqsjl", 2, 1, S::npos); + test(S("smaqd"), "dpifl", 2, 2, 4); + test(S("hjeni"), "oapht", 2, 4, S::npos); + test(S("ocmfj"), "cifts", 2, 5, 3); + test(S("hmftq"), "nmsckbgalo", 2, 0, S::npos); + test(S("fklad"), "tpksqhamle", 2, 1, S::npos); + test(S("dirnm"), "tpdrchmkji", 2, 5, 2); + test(S("hrgdc"), "ijagfkblst", 2, 9, 2); + test(S("ifakg"), "kpocsignjb", 2, 10, 3); + test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos); + test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos); + test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 3); + test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2); + test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2); + test(S("cjgao"), "", 4, 0, S::npos); + test(S("kjplq"), "mabns", 4, 0, S::npos); + test(S("herni"), "bdnrp", 4, 1, S::npos); + test(S("tadrb"), "scidp", 4, 2, S::npos); + test(S("pkfeo"), "agbjl", 4, 4, S::npos); + test(S("hoser"), "jfmpr", 4, 5, 4); + test(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos); + test(S("pgejb"), "apsfntdoqc", 4, 1, S::npos); + test(S("thlnq"), "ndkjeisgcl", 4, 5, S::npos); + test(S("nbmit"), "rnfpqatdeo", 4, 9, 4); + test(S("jgmib"), "bntjlqrfik", 4, 10, 4); + test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos); + test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos); + test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4); + test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4); + test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4); + test(S("klopi"), "", 5, 0, S::npos); + test(S("dajhn"), "psthd", 5, 0, S::npos); + test(S("jbgno"), "rpmjd", 5, 1, S::npos); + test(S("hkjae"), "dfsmk", 5, 2, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("gbhqo"), "skqne", 5, 4, S::npos); - test(S("ktdor"), "kipnf", 5, 5, S::npos); - test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); - test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); - test(S("armql"), "pcdgltbrfj", 5, 5, S::npos); - test(S("cdhjo"), "aekfctpirg", 5, 9, S::npos); - test(S("jcons"), "ledihrsgpf", 5, 10, S::npos); - test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); - test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); - test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos); - test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos); - test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); - test(S("gajqn"), "", 6, 0, S::npos); - test(S("stedk"), "hrnat", 6, 0, S::npos); - test(S("tjkaf"), "gsqdt", 6, 1, S::npos); - test(S("dthpe"), "bspkd", 6, 2, S::npos); - test(S("klhde"), "ohcmb", 6, 4, S::npos); - test(S("bhlki"), "heatr", 6, 5, S::npos); - test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); - test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); - test(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos); - test(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos); - test(S("jblqp"), "njolbmspac", 6, 10, S::npos); - test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); - test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); - test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos); - test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); - test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); - test(S("jnkrfhotgl"), "", 0, 0, S::npos); - test(S("dltjfngbko"), "rqegt", 0, 0, S::npos); - test(S("bmjlpkiqde"), "dashm", 0, 1, 8); - test(S("skrflobnqm"), "jqirk", 0, 2, 8); - test(S("jkpldtshrm"), "rckeg", 0, 4, 1); - test(S("ghasdbnjqo"), "jscie", 0, 5, 3); - test(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos); - test(S("ikthdgcamf"), "gdicosleja", 0, 1, 5); - test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0); - test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0); - test(S("itphbqsker"), "dtablcrseo", 0, 10, 1); - test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos); - test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos); - test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 4); - test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0); - test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0); - test(S("shbcqnmoar"), "", 1, 0, S::npos); - test(S("bdoshlmfin"), "ontrs", 1, 0, S::npos); - test(S("khfrebnsgq"), "pfkna", 1, 1, S::npos); - test(S("getcrsaoji"), "ekosa", 1, 2, 1); - test(S("fjiknedcpq"), "anqhk", 1, 4, 4); - test(S("tkejgnafrm"), "jekca", 1, 5, 1); - test(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos); - test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos); - test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1); - test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 4); - test(S("cigfqkated"), "sqcflrgtim", 1, 10, 1); - test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos); - test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos); - test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1); - test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1); - test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1); - test(S("ectnhskflp"), "", 5, 0, S::npos); - test(S("fgtianblpq"), "pijag", 5, 0, S::npos); - test(S("mfeqklirnh"), "jrckd", 5, 1, S::npos); - test(S("astedncjhk"), "qcloh", 5, 2, 6); - test(S("fhlqgcajbr"), "thlmp", 5, 4, S::npos); - test(S("epfhocmdng"), "qidmo", 5, 5, 6); - test(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos); - test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5); - test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 7); - test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5); - test(S("jbhcfposld"), "trfqgmckbe", 5, 10, S::npos); - test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos); - test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos); - test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5); - test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5); - test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5); - test(S("shoiedtcjb"), "", 9, 0, S::npos); - test(S("ebcinjgads"), "tqbnh", 9, 0, S::npos); - test(S("dqmregkcfl"), "akmle", 9, 1, S::npos); - test(S("ngcrieqajf"), "iqfkm", 9, 2, S::npos); - test(S("qosmilgnjb"), "tqjsr", 9, 4, S::npos); - test(S("ikabsjtdfl"), "jplqg", 9, 5, 9); - test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos); - test(S("fdnplotmgh"), "morkglpesn", 9, 1, S::npos); - test(S("fdbicojerm"), "dmicerngat", 9, 5, 9); - test(S("mbtafndjcq"), "radgeskbtc", 9, 9, S::npos); - test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, S::npos); - test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos); - test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, S::npos); - test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, S::npos); - test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9); - test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9); - test(S("ncjpmaekbs"), "", 10, 0, S::npos); - test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); - test(S("pqfhsgilen"), "qnpor", 10, 1, S::npos); - test(S("gqtjsbdckh"), "otdma", 10, 2, S::npos); - test(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos); - test(S("beanrfodgj"), "odpte", 10, 5, S::npos); - test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); - test(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("gbhqo"), "skqne", 5, 4, S::npos); + test(S("ktdor"), "kipnf", 5, 5, S::npos); + test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); + test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); + test(S("armql"), "pcdgltbrfj", 5, 5, S::npos); + test(S("cdhjo"), "aekfctpirg", 5, 9, S::npos); + test(S("jcons"), "ledihrsgpf", 5, 10, S::npos); + test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); + test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); + test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos); + test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos); + test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); + test(S("gajqn"), "", 6, 0, S::npos); + test(S("stedk"), "hrnat", 6, 0, S::npos); + test(S("tjkaf"), "gsqdt", 6, 1, S::npos); + test(S("dthpe"), "bspkd", 6, 2, S::npos); + test(S("klhde"), "ohcmb", 6, 4, S::npos); + test(S("bhlki"), "heatr", 6, 5, S::npos); + test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); + test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); + test(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos); + test(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos); + test(S("jblqp"), "njolbmspac", 6, 10, S::npos); + test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); + test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); + test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos); + test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); + test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); + test(S("jnkrfhotgl"), "", 0, 0, S::npos); + test(S("dltjfngbko"), "rqegt", 0, 0, S::npos); + test(S("bmjlpkiqde"), "dashm", 0, 1, 8); + test(S("skrflobnqm"), "jqirk", 0, 2, 8); + test(S("jkpldtshrm"), "rckeg", 0, 4, 1); + test(S("ghasdbnjqo"), "jscie", 0, 5, 3); + test(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos); + test(S("ikthdgcamf"), "gdicosleja", 0, 1, 5); + test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0); + test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0); + test(S("itphbqsker"), "dtablcrseo", 0, 10, 1); + test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos); + test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos); + test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 4); + test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0); + test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0); + test(S("shbcqnmoar"), "", 1, 0, S::npos); + test(S("bdoshlmfin"), "ontrs", 1, 0, S::npos); + test(S("khfrebnsgq"), "pfkna", 1, 1, S::npos); + test(S("getcrsaoji"), "ekosa", 1, 2, 1); + test(S("fjiknedcpq"), "anqhk", 1, 4, 4); + test(S("tkejgnafrm"), "jekca", 1, 5, 1); + test(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos); + test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos); + test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1); + test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 4); + test(S("cigfqkated"), "sqcflrgtim", 1, 10, 1); + test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos); + test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos); + test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1); + test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1); + test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1); + test(S("ectnhskflp"), "", 5, 0, S::npos); + test(S("fgtianblpq"), "pijag", 5, 0, S::npos); + test(S("mfeqklirnh"), "jrckd", 5, 1, S::npos); + test(S("astedncjhk"), "qcloh", 5, 2, 6); + test(S("fhlqgcajbr"), "thlmp", 5, 4, S::npos); + test(S("epfhocmdng"), "qidmo", 5, 5, 6); + test(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos); + test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5); + test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 7); + test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5); + test(S("jbhcfposld"), "trfqgmckbe", 5, 10, S::npos); + test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos); + test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos); + test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5); + test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5); + test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5); + test(S("shoiedtcjb"), "", 9, 0, S::npos); + test(S("ebcinjgads"), "tqbnh", 9, 0, S::npos); + test(S("dqmregkcfl"), "akmle", 9, 1, S::npos); + test(S("ngcrieqajf"), "iqfkm", 9, 2, S::npos); + test(S("qosmilgnjb"), "tqjsr", 9, 4, S::npos); + test(S("ikabsjtdfl"), "jplqg", 9, 5, 9); + test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos); + test(S("fdnplotmgh"), "morkglpesn", 9, 1, S::npos); + test(S("fdbicojerm"), "dmicerngat", 9, 5, 9); + test(S("mbtafndjcq"), "radgeskbtc", 9, 9, S::npos); + test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, S::npos); + test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos); + test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, S::npos); + test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, S::npos); + test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9); + test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9); + test(S("ncjpmaekbs"), "", 10, 0, S::npos); + test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); + test(S("pqfhsgilen"), "qnpor", 10, 1, S::npos); + test(S("gqtjsbdckh"), "otdma", 10, 2, S::npos); + test(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos); + test(S("beanrfodgj"), "odpte", 10, 5, S::npos); + test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); + test(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos); - test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos); - test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos); - test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); - test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos); - test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos); - test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos); - test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); - test(S("cqjohampgd"), "", 11, 0, S::npos); - test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); - test(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos); - test(S("ngfbojitcl"), "tqedg", 11, 2, S::npos); - test(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos); - test(S("qghptonrea"), "eaqkl", 11, 5, S::npos); - test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); - test(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos); - test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos); - test(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos); - test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos); - test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); - test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); - test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos); - test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); - test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); - test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos); - test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos); - test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 4); - test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 3); - test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 3); - test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 3); - test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos); - test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 19); - test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 2); - test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 2); - test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 2); - test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos); - test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 16); - test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 1); - test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0); - test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0); - test(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos); - test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos); - test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 6); - test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1); - test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1); - test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 6); - test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos); - test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 19); - test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 4); - test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1); - test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1); - test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos); - test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 7); - test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1); - test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1); - test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1); - test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos); - test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos); - test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 12); - test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, S::npos); - test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10); - test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 15); - test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos); - test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, S::npos); - test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 11); - test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10); - test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 11); - test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos); - test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 18); - test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10); - test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10); - test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10); - test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos); - test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos); - test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, S::npos); - test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, S::npos); - test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, S::npos); - test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19); - test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos); - test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, S::npos); - test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, S::npos); - test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, S::npos); - test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, S::npos); - test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos); - test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, S::npos); - test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19); - test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19); - test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19); - test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); - test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); - test(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos); - test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos); - test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos); - test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos); - test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); - test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos); - test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos); - test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos); - test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos); - test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos); + test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos); + test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos); + test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); + test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos); + test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos); + test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos); + test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); + test(S("cqjohampgd"), "", 11, 0, S::npos); + test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); + test(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos); + test(S("ngfbojitcl"), "tqedg", 11, 2, S::npos); + test(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos); + test(S("qghptonrea"), "eaqkl", 11, 5, S::npos); + test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); + test(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos); + test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos); + test(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos); + test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos); + test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); + test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); + test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos); + test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); + test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); + test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos); + test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos); + test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 4); + test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 3); + test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 3); + test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 3); + test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos); + test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 19); + test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 2); + test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 2); + test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 2); + test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos); + test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 16); + test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 1); + test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0); + test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0); + test(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos); + test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos); + test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 6); + test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1); + test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1); + test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 6); + test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos); + test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 19); + test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 4); + test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1); + test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1); + test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos); + test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 7); + test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1); + test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1); + test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1); + test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos); + test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos); + test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 12); + test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, S::npos); + test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10); + test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 15); + test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos); + test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, S::npos); + test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 11); + test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10); + test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 11); + test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos); + test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 18); + test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10); + test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10); + test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10); + test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos); + test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos); + test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, S::npos); + test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, S::npos); + test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, S::npos); + test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19); + test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos); + test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, S::npos); + test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, S::npos); + test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, S::npos); + test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, S::npos); + test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos); + test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, S::npos); + test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19); + test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19); + test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19); + test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); + test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); + test(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos); + test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos); + test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos); + test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos); + test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); + test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos); + test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos); + test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos); + test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos); + test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); } template -TEST_CONSTEXPR_CXX20 void test3() -{ - test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos); - test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos); - test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos); - test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); - test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); - test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); - test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos); - test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos); - test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos); - test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos); - test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); - test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos); - test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos); - test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos); - test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos); - test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); - test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos); - test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos); - test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos); - test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); +TEST_CONSTEXPR_CXX20 void test3() { + test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos); + test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos); + test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos); + test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); + test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); + test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); + test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos); + test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos); + test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos); + test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos); + test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); + test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos); + test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos); + test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos); + test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos); + test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); + test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos); + test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos); + test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos); + test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -388,8 +386,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos)); - assert(s.find_first_of(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos)); + assert(s.find_first_of(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str)); - assert(s.find_first_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str)); + assert(s.find_first_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), S(""), 0, S::npos); - test(S(""), S("laenf"), 0, S::npos); - test(S(""), S("pqlnkmbdjo"), 0, S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("bjaht"), 1, S::npos); - test(S(""), S("hjlcmgpket"), 1, S::npos); - test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), S(""), 0, S::npos); - test(S("qanej"), S("dfkap"), 0, 1); - test(S("clbao"), S("ihqrfebgad"), 0, 2); - test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, 0); - test(S("srdfq"), S(""), 1, S::npos); - test(S("oemth"), S("ikcrq"), 1, S::npos); - test(S("cdaih"), S("dmajblfhsg"), 1, 1); - test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, 1); - test(S("cshmd"), S(""), 2, S::npos); - test(S("lhcdo"), S("oebqi"), 2, 4); - test(S("qnsoh"), S("kojhpmbsfe"), 2, 2); - test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, 2); - test(S("fmtsp"), S(""), 4, S::npos); - test(S("khbpm"), S("aobjd"), 4, S::npos); - test(S("pbsji"), S("pcbahntsje"), 4, S::npos); - test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, 4); - test(S("eqmpa"), S(""), 5, S::npos); - test(S("omigs"), S("kocgb"), 5, S::npos); - test(S("onmje"), S("fbslrjiqkm"), 5, S::npos); - test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), S(""), 6, S::npos); - test(S("igdsc"), S("qngpd"), 6, S::npos); - test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), S(""), 0, S::npos); - test(S("daiprenocl"), S("ashjd"), 0, 0); - test(S("litpcfdghe"), S("mgojkldsqh"), 0, 0); - test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, 0); - test(S("qpghtfbaji"), S(""), 1, S::npos); - test(S("gfshlcmdjr"), S("nadkh"), 1, 3); - test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 1); - test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, 1); - test(S("crnklpmegd"), S(""), 5, S::npos); - test(S("jsbtafedoc"), S("prqgn"), 5, S::npos); - test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 5); - test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, 5); - test(S("lmofqdhpki"), S(""), 9, S::npos); - test(S("hnefkqimca"), S("rtjpa"), 9, 9); - test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, S::npos); - test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, 9); - test(S("elgofjmbrq"), S(""), 10, S::npos); - test(S("mjqdgalkpc"), S("dplqa"), 10, S::npos); - test(S("kthqnfcerm"), S("dkacjoptns"), 10, S::npos); - test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), S(""), 11, S::npos); - test(S("akiteljmoh"), S("lofbc"), 11, S::npos); - test(S("hlbdfreqjo"), S("astoegbfpn"), 11, S::npos); - test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), S(""), 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 3); - test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 0); - test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, 0); - test(S("jlnkraeodhcspfgbqitm"), S(""), 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 3); - test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 1); - test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, 1); - test(S("hdpkobnsalmcfijregtq"), S(""), 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 10); - test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, 10); - test(S("niptglfbosehkamrdqcj"), S(""), 19, S::npos); - test(S("copqdhstbingamjfkler"), S("djkqc"), 19, S::npos); - test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 19); - test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, 19); - test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), S(""), 0, S::npos); + test(S(""), S("laenf"), 0, S::npos); + test(S(""), S("pqlnkmbdjo"), 0, S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("bjaht"), 1, S::npos); + test(S(""), S("hjlcmgpket"), 1, S::npos); + test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), S(""), 0, S::npos); + test(S("qanej"), S("dfkap"), 0, 1); + test(S("clbao"), S("ihqrfebgad"), 0, 2); + test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, 0); + test(S("srdfq"), S(""), 1, S::npos); + test(S("oemth"), S("ikcrq"), 1, S::npos); + test(S("cdaih"), S("dmajblfhsg"), 1, 1); + test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, 1); + test(S("cshmd"), S(""), 2, S::npos); + test(S("lhcdo"), S("oebqi"), 2, 4); + test(S("qnsoh"), S("kojhpmbsfe"), 2, 2); + test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, 2); + test(S("fmtsp"), S(""), 4, S::npos); + test(S("khbpm"), S("aobjd"), 4, S::npos); + test(S("pbsji"), S("pcbahntsje"), 4, S::npos); + test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, 4); + test(S("eqmpa"), S(""), 5, S::npos); + test(S("omigs"), S("kocgb"), 5, S::npos); + test(S("onmje"), S("fbslrjiqkm"), 5, S::npos); + test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), S(""), 6, S::npos); + test(S("igdsc"), S("qngpd"), 6, S::npos); + test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), S(""), 0, S::npos); + test(S("daiprenocl"), S("ashjd"), 0, 0); + test(S("litpcfdghe"), S("mgojkldsqh"), 0, 0); + test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, 0); + test(S("qpghtfbaji"), S(""), 1, S::npos); + test(S("gfshlcmdjr"), S("nadkh"), 1, 3); + test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 1); + test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, 1); + test(S("crnklpmegd"), S(""), 5, S::npos); + test(S("jsbtafedoc"), S("prqgn"), 5, S::npos); + test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 5); + test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, 5); + test(S("lmofqdhpki"), S(""), 9, S::npos); + test(S("hnefkqimca"), S("rtjpa"), 9, 9); + test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, S::npos); + test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, 9); + test(S("elgofjmbrq"), S(""), 10, S::npos); + test(S("mjqdgalkpc"), S("dplqa"), 10, S::npos); + test(S("kthqnfcerm"), S("dkacjoptns"), 10, S::npos); + test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), S(""), 11, S::npos); + test(S("akiteljmoh"), S("lofbc"), 11, S::npos); + test(S("hlbdfreqjo"), S("astoegbfpn"), 11, S::npos); + test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), S(""), 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 3); + test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 0); + test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, 0); + test(S("jlnkraeodhcspfgbqitm"), S(""), 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 3); + test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 1); + test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, 1); + test(S("hdpkobnsalmcfijregtq"), S(""), 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 10); + test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, 10); + test(S("niptglfbosehkamrdqcj"), S(""), 19, S::npos); + test(S("copqdhstbingamjfkler"), S("djkqc"), 19, S::npos); + test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 19); + test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, 19); + test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), S(""), S::npos); - test(S(""), S("laenf"), S::npos); - test(S(""), S("pqlnkmbdjo"), S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), S(""), S::npos); - test(S("lahfb"), S("irkhs"), 2); - test(S("gmfhd"), S("kantesmpgj"), 0); - test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), 0); - test(S("eolhfgpjqk"), S(""), S::npos); - test(S("nbatdlmekr"), S("bnrpe"), 0); - test(S("jdmciepkaq"), S("jtdaefblso"), 0); - test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), 0); - test(S("gprdcokbnjhlsfmtieqa"), S(""), S::npos); - test(S("qjghlnftcaismkropdeb"), S("bjaht"), 1); - test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 0); - test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), S(""), S::npos); + test(S(""), S("laenf"), S::npos); + test(S(""), S("pqlnkmbdjo"), S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), S(""), S::npos); + test(S("lahfb"), S("irkhs"), 2); + test(S("gmfhd"), S("kantesmpgj"), 0); + test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), 0); + test(S("eolhfgpjqk"), S(""), S::npos); + test(S("nbatdlmekr"), S("bnrpe"), 0); + test(S("jdmciepkaq"), S("jtdaefblso"), 0); + test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), 0); + test(S("gprdcokbnjhlsfmtieqa"), S(""), S::npos); + test(S("qjghlnftcaismkropdeb"), S("bjaht"), 1); + test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 0); + test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -166,8 +160,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.first.of/string_view_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(sv, pos)); - assert(s.find_first_of(sv, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(sv, pos)); + assert(s.find_first_of(sv, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(sv)); - assert(s.find_first_of(sv) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(sv)); + assert(s.find_first_of(sv) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), SV(""), 0, S::npos); - test(S(""), SV("laenf"), 0, S::npos); - test(S(""), SV("pqlnkmbdjo"), 0, S::npos); - test(S(""), SV("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), SV(""), 1, S::npos); - test(S(""), SV("bjaht"), 1, S::npos); - test(S(""), SV("hjlcmgpket"), 1, S::npos); - test(S(""), SV("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), SV(""), 0, S::npos); - test(S("qanej"), SV("dfkap"), 0, 1); - test(S("clbao"), SV("ihqrfebgad"), 0, 2); - test(S("mekdn"), SV("ngtjfcalbseiqrphmkdo"), 0, 0); - test(S("srdfq"), SV(""), 1, S::npos); - test(S("oemth"), SV("ikcrq"), 1, S::npos); - test(S("cdaih"), SV("dmajblfhsg"), 1, 1); - test(S("qohtk"), SV("oqftjhdmkgsblacenirp"), 1, 1); - test(S("cshmd"), SV(""), 2, S::npos); - test(S("lhcdo"), SV("oebqi"), 2, 4); - test(S("qnsoh"), SV("kojhpmbsfe"), 2, 2); - test(S("pkrof"), SV("acbsjqogpltdkhinfrem"), 2, 2); - test(S("fmtsp"), SV(""), 4, S::npos); - test(S("khbpm"), SV("aobjd"), 4, S::npos); - test(S("pbsji"), SV("pcbahntsje"), 4, S::npos); - test(S("mprdj"), SV("fhepcrntkoagbmldqijs"), 4, 4); - test(S("eqmpa"), SV(""), 5, S::npos); - test(S("omigs"), SV("kocgb"), 5, S::npos); - test(S("onmje"), SV("fbslrjiqkm"), 5, S::npos); - test(S("oqmrj"), SV("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), SV(""), 6, S::npos); - test(S("igdsc"), SV("qngpd"), 6, S::npos); - test(S("brqgo"), SV("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), SV("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), SV(""), 0, S::npos); - test(S("daiprenocl"), SV("ashjd"), 0, 0); - test(S("litpcfdghe"), SV("mgojkldsqh"), 0, 0); - test(S("aidjksrolc"), SV("imqnaghkfrdtlopbjesc"), 0, 0); - test(S("qpghtfbaji"), SV(""), 1, S::npos); - test(S("gfshlcmdjr"), SV("nadkh"), 1, 3); - test(S("nkodajteqp"), SV("ofdrqmkebl"), 1, 1); - test(S("gbmetiprqd"), SV("bdfjqgatlksriohemnpc"), 1, 1); - test(S("crnklpmegd"), SV(""), 5, S::npos); - test(S("jsbtafedoc"), SV("prqgn"), 5, S::npos); - test(S("qnmodrtkeb"), SV("pejafmnokr"), 5, 5); - test(S("cpebqsfmnj"), SV("odnqkgijrhabfmcestlp"), 5, 5); - test(S("lmofqdhpki"), SV(""), 9, S::npos); - test(S("hnefkqimca"), SV("rtjpa"), 9, 9); - test(S("drtasbgmfp"), SV("ktsrmnqagd"), 9, S::npos); - test(S("lsaijeqhtr"), SV("rtdhgcisbnmoaqkfpjle"), 9, 9); - test(S("elgofjmbrq"), SV(""), 10, S::npos); - test(S("mjqdgalkpc"), SV("dplqa"), 10, S::npos); - test(S("kthqnfcerm"), SV("dkacjoptns"), 10, S::npos); - test(S("dfsjhanorc"), SV("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), SV(""), 11, S::npos); - test(S("akiteljmoh"), SV("lofbc"), 11, S::npos); - test(S("hlbdfreqjo"), SV("astoegbfpn"), 11, S::npos); - test(S("taqobhlerg"), SV("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), SV(""), 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), SV("lbtqd"), 0, 3); - test(S("pnracgfkjdiholtbqsem"), SV("tboimldpjh"), 0, 0); - test(S("dicfltehbsgrmojnpkaq"), SV("slcerthdaiqjfnobgkpm"), 0, 0); - test(S("jlnkraeodhcspfgbqitm"), SV(""), 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), SV("aqibs"), 1, 3); - test(S("rbtaqjhgkneisldpmfoc"), SV("gtfblmqinc"), 1, 1); - test(S("gpifsqlrdkbonjtmheca"), SV("mkqpbtdalgniorhfescj"), 1, 1); - test(S("hdpkobnsalmcfijregtq"), SV(""), 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), SV("pblas"), 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), SV("arosdhcfme"), 10, 10); - test(S("crsplifgtqedjohnabmk"), SV("blkhjeogicatqfnpdmsr"), 10, 10); - test(S("niptglfbosehkamrdqcj"), SV(""), 19, S::npos); - test(S("copqdhstbingamjfkler"), SV("djkqc"), 19, S::npos); - test(S("mrtaefilpdsgocnhqbjk"), SV("lgokshjtpb"), 19, 19); - test(S("kojatdhlcmigpbfrqnes"), SV("bqjhtkfepimcnsgrlado"), 19, 19); - test(S("eaintpchlqsbdgrkjofm"), SV(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), SV("nocfa"), 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), SV("bgtajmiedc"), 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), SV("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), SV(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), SV("gfsrt"), 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), SV("pfsocbhjtm"), 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), SV("tpflmdnoicjgkberhqsa"), 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), SV(""), 0, S::npos); + test(S(""), SV("laenf"), 0, S::npos); + test(S(""), SV("pqlnkmbdjo"), 0, S::npos); + test(S(""), SV("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), SV(""), 1, S::npos); + test(S(""), SV("bjaht"), 1, S::npos); + test(S(""), SV("hjlcmgpket"), 1, S::npos); + test(S(""), SV("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), SV(""), 0, S::npos); + test(S("qanej"), SV("dfkap"), 0, 1); + test(S("clbao"), SV("ihqrfebgad"), 0, 2); + test(S("mekdn"), SV("ngtjfcalbseiqrphmkdo"), 0, 0); + test(S("srdfq"), SV(""), 1, S::npos); + test(S("oemth"), SV("ikcrq"), 1, S::npos); + test(S("cdaih"), SV("dmajblfhsg"), 1, 1); + test(S("qohtk"), SV("oqftjhdmkgsblacenirp"), 1, 1); + test(S("cshmd"), SV(""), 2, S::npos); + test(S("lhcdo"), SV("oebqi"), 2, 4); + test(S("qnsoh"), SV("kojhpmbsfe"), 2, 2); + test(S("pkrof"), SV("acbsjqogpltdkhinfrem"), 2, 2); + test(S("fmtsp"), SV(""), 4, S::npos); + test(S("khbpm"), SV("aobjd"), 4, S::npos); + test(S("pbsji"), SV("pcbahntsje"), 4, S::npos); + test(S("mprdj"), SV("fhepcrntkoagbmldqijs"), 4, 4); + test(S("eqmpa"), SV(""), 5, S::npos); + test(S("omigs"), SV("kocgb"), 5, S::npos); + test(S("onmje"), SV("fbslrjiqkm"), 5, S::npos); + test(S("oqmrj"), SV("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), SV(""), 6, S::npos); + test(S("igdsc"), SV("qngpd"), 6, S::npos); + test(S("brqgo"), SV("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), SV("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), SV(""), 0, S::npos); + test(S("daiprenocl"), SV("ashjd"), 0, 0); + test(S("litpcfdghe"), SV("mgojkldsqh"), 0, 0); + test(S("aidjksrolc"), SV("imqnaghkfrdtlopbjesc"), 0, 0); + test(S("qpghtfbaji"), SV(""), 1, S::npos); + test(S("gfshlcmdjr"), SV("nadkh"), 1, 3); + test(S("nkodajteqp"), SV("ofdrqmkebl"), 1, 1); + test(S("gbmetiprqd"), SV("bdfjqgatlksriohemnpc"), 1, 1); + test(S("crnklpmegd"), SV(""), 5, S::npos); + test(S("jsbtafedoc"), SV("prqgn"), 5, S::npos); + test(S("qnmodrtkeb"), SV("pejafmnokr"), 5, 5); + test(S("cpebqsfmnj"), SV("odnqkgijrhabfmcestlp"), 5, 5); + test(S("lmofqdhpki"), SV(""), 9, S::npos); + test(S("hnefkqimca"), SV("rtjpa"), 9, 9); + test(S("drtasbgmfp"), SV("ktsrmnqagd"), 9, S::npos); + test(S("lsaijeqhtr"), SV("rtdhgcisbnmoaqkfpjle"), 9, 9); + test(S("elgofjmbrq"), SV(""), 10, S::npos); + test(S("mjqdgalkpc"), SV("dplqa"), 10, S::npos); + test(S("kthqnfcerm"), SV("dkacjoptns"), 10, S::npos); + test(S("dfsjhanorc"), SV("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), SV(""), 11, S::npos); + test(S("akiteljmoh"), SV("lofbc"), 11, S::npos); + test(S("hlbdfreqjo"), SV("astoegbfpn"), 11, S::npos); + test(S("taqobhlerg"), SV("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), SV(""), 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), SV("lbtqd"), 0, 3); + test(S("pnracgfkjdiholtbqsem"), SV("tboimldpjh"), 0, 0); + test(S("dicfltehbsgrmojnpkaq"), SV("slcerthdaiqjfnobgkpm"), 0, 0); + test(S("jlnkraeodhcspfgbqitm"), SV(""), 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), SV("aqibs"), 1, 3); + test(S("rbtaqjhgkneisldpmfoc"), SV("gtfblmqinc"), 1, 1); + test(S("gpifsqlrdkbonjtmheca"), SV("mkqpbtdalgniorhfescj"), 1, 1); + test(S("hdpkobnsalmcfijregtq"), SV(""), 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), SV("pblas"), 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), SV("arosdhcfme"), 10, 10); + test(S("crsplifgtqedjohnabmk"), SV("blkhjeogicatqfnpdmsr"), 10, 10); + test(S("niptglfbosehkamrdqcj"), SV(""), 19, S::npos); + test(S("copqdhstbingamjfkler"), SV("djkqc"), 19, S::npos); + test(S("mrtaefilpdsgocnhqbjk"), SV("lgokshjtpb"), 19, 19); + test(S("kojatdhlcmigpbfrqnes"), SV("bqjhtkfepimcnsgrlado"), 19, 19); + test(S("eaintpchlqsbdgrkjofm"), SV(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), SV("nocfa"), 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), SV("bgtajmiedc"), 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), SV("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), SV(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), SV("gfsrt"), 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), SV("pfsocbhjtm"), 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), SV("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), SV(""), S::npos); - test(S(""), SV("laenf"), S::npos); - test(S(""), SV("pqlnkmbdjo"), S::npos); - test(S(""), SV("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), SV(""), S::npos); - test(S("lahfb"), SV("irkhs"), 2); - test(S("gmfhd"), SV("kantesmpgj"), 0); - test(S("odaft"), SV("oknlrstdpiqmjbaghcfe"), 0); - test(S("eolhfgpjqk"), SV(""), S::npos); - test(S("nbatdlmekr"), SV("bnrpe"), 0); - test(S("jdmciepkaq"), SV("jtdaefblso"), 0); - test(S("hkbgspoflt"), SV("oselktgbcapndfjihrmq"), 0); - test(S("gprdcokbnjhlsfmtieqa"), SV(""), S::npos); - test(S("qjghlnftcaismkropdeb"), SV("bjaht"), 1); - test(S("pnalfrdtkqcmojiesbhg"), SV("hjlcmgpket"), 0); - test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), SV(""), S::npos); + test(S(""), SV("laenf"), S::npos); + test(S(""), SV("pqlnkmbdjo"), S::npos); + test(S(""), SV("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), SV(""), S::npos); + test(S("lahfb"), SV("irkhs"), 2); + test(S("gmfhd"), SV("kantesmpgj"), 0); + test(S("odaft"), SV("oknlrstdpiqmjbaghcfe"), 0); + test(S("eolhfgpjqk"), SV(""), S::npos); + test(S("nbatdlmekr"), SV("bnrpe"), 0); + test(S("jdmciepkaq"), SV("jtdaefblso"), 0); + test(S("hkbgspoflt"), SV("oselktgbcapndfjihrmq"), 0); + test(S("gprdcokbnjhlsfmtieqa"), SV(""), S::npos); + test(S("qjghlnftcaismkropdeb"), SV("bjaht"), 1); + test(S("pnalfrdtkqcmojiesbhg"), SV("hjlcmgpket"), 0); + test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -161,8 +155,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/char_size.pass.cpp @@ -18,23 +18,19 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(c, pos)); - assert(s.find_last_not_of(c, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(c, pos)); + assert(s.find_last_not_of(c, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(c)); - assert(s.find_last_not_of(c) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(c)); + assert(s.find_last_not_of(c) == x); + if (x != S::npos) + assert(x < s.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -100,8 +96,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size.pass.cpp @@ -18,129 +18,123 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos)); - assert(s.find_last_not_of(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos)); + assert(s.find_last_not_of(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str)); - assert(s.find_last_not_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str)); + assert(s.find_last_not_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, S::npos); - test(S(""), "laenf", 0, S::npos); - test(S(""), "pqlnkmbdjo", 0, S::npos); - test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "bjaht", 1, S::npos); - test(S(""), "hjlcmgpket", 1, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); - test(S("fodgq"), "", 0, 0); - test(S("qanej"), "dfkap", 0, 0); - test(S("clbao"), "ihqrfebgad", 0, 0); - test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, S::npos); - test(S("srdfq"), "", 1, 1); - test(S("oemth"), "ikcrq", 1, 1); - test(S("cdaih"), "dmajblfhsg", 1, 0); - test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, S::npos); - test(S("cshmd"), "", 2, 2); - test(S("lhcdo"), "oebqi", 2, 2); - test(S("qnsoh"), "kojhpmbsfe", 2, 1); - test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, S::npos); - test(S("fmtsp"), "", 4, 4); - test(S("khbpm"), "aobjd", 4, 4); - test(S("pbsji"), "pcbahntsje", 4, 4); - test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, S::npos); - test(S("eqmpa"), "", 5, 4); - test(S("omigs"), "kocgb", 5, 4); - test(S("onmje"), "fbslrjiqkm", 5, 4); - test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); - test(S("schfa"), "", 6, 4); - test(S("igdsc"), "qngpd", 6, 4); - test(S("brqgo"), "rodhqklgmb", 6, S::npos); - test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); - test(S("hcjitbfapl"), "", 0, 0); - test(S("daiprenocl"), "ashjd", 0, S::npos); - test(S("litpcfdghe"), "mgojkldsqh", 0, S::npos); - test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, S::npos); - test(S("qpghtfbaji"), "", 1, 1); - test(S("gfshlcmdjr"), "nadkh", 1, 1); - test(S("nkodajteqp"), "ofdrqmkebl", 1, 0); - test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, S::npos); - test(S("crnklpmegd"), "", 5, 5); - test(S("jsbtafedoc"), "prqgn", 5, 5); - test(S("qnmodrtkeb"), "pejafmnokr", 5, 4); - test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, S::npos); - test(S("lmofqdhpki"), "", 9, 9); - test(S("hnefkqimca"), "rtjpa", 9, 8); - test(S("drtasbgmfp"), "ktsrmnqagd", 9, 9); - test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, S::npos); - test(S("elgofjmbrq"), "", 10, 9); - test(S("mjqdgalkpc"), "dplqa", 10, 9); - test(S("kthqnfcerm"), "dkacjoptns", 10, 9); - test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); - test(S("eqsgalomhb"), "", 11, 9); - test(S("akiteljmoh"), "lofbc", 11, 9); - test(S("hlbdfreqjo"), "astoegbfpn", 11, 8); - test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), "", 0, 0); - test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 0); - test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, S::npos); - test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), "", 1, 1); - test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 0); - test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), "", 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 9); - test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 9); - test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, S::npos); - test(S("niptglfbosehkamrdqcj"), "", 19, 19); - test(S("copqdhstbingamjfkler"), "djkqc", 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 16); - test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), "", 20, 19); - test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, 18); - test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, 19); - test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), "", 21, 19); - test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, 19); - test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, 19); - test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, S::npos); + test(S(""), "laenf", 0, S::npos); + test(S(""), "pqlnkmbdjo", 0, S::npos); + test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "bjaht", 1, S::npos); + test(S(""), "hjlcmgpket", 1, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); + test(S("fodgq"), "", 0, 0); + test(S("qanej"), "dfkap", 0, 0); + test(S("clbao"), "ihqrfebgad", 0, 0); + test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, S::npos); + test(S("srdfq"), "", 1, 1); + test(S("oemth"), "ikcrq", 1, 1); + test(S("cdaih"), "dmajblfhsg", 1, 0); + test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, S::npos); + test(S("cshmd"), "", 2, 2); + test(S("lhcdo"), "oebqi", 2, 2); + test(S("qnsoh"), "kojhpmbsfe", 2, 1); + test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, S::npos); + test(S("fmtsp"), "", 4, 4); + test(S("khbpm"), "aobjd", 4, 4); + test(S("pbsji"), "pcbahntsje", 4, 4); + test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, S::npos); + test(S("eqmpa"), "", 5, 4); + test(S("omigs"), "kocgb", 5, 4); + test(S("onmje"), "fbslrjiqkm", 5, 4); + test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); + test(S("schfa"), "", 6, 4); + test(S("igdsc"), "qngpd", 6, 4); + test(S("brqgo"), "rodhqklgmb", 6, S::npos); + test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); + test(S("hcjitbfapl"), "", 0, 0); + test(S("daiprenocl"), "ashjd", 0, S::npos); + test(S("litpcfdghe"), "mgojkldsqh", 0, S::npos); + test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, S::npos); + test(S("qpghtfbaji"), "", 1, 1); + test(S("gfshlcmdjr"), "nadkh", 1, 1); + test(S("nkodajteqp"), "ofdrqmkebl", 1, 0); + test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, S::npos); + test(S("crnklpmegd"), "", 5, 5); + test(S("jsbtafedoc"), "prqgn", 5, 5); + test(S("qnmodrtkeb"), "pejafmnokr", 5, 4); + test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, S::npos); + test(S("lmofqdhpki"), "", 9, 9); + test(S("hnefkqimca"), "rtjpa", 9, 8); + test(S("drtasbgmfp"), "ktsrmnqagd", 9, 9); + test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, S::npos); + test(S("elgofjmbrq"), "", 10, 9); + test(S("mjqdgalkpc"), "dplqa", 10, 9); + test(S("kthqnfcerm"), "dkacjoptns", 10, 9); + test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); + test(S("eqsgalomhb"), "", 11, 9); + test(S("akiteljmoh"), "lofbc", 11, 9); + test(S("hlbdfreqjo"), "astoegbfpn", 11, 8); + test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), "", 0, 0); + test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 0); + test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, S::npos); + test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), "", 1, 1); + test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 0); + test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), "", 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 9); + test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 9); + test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, S::npos); + test(S("niptglfbosehkamrdqcj"), "", 19, 19); + test(S("copqdhstbingamjfkler"), "djkqc", 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 16); + test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), "", 20, 19); + test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, 18); + test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, 19); + test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), "", 21, 19); + test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, 19); + test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, 19); + test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), "", S::npos); - test(S(""), "laenf", S::npos); - test(S(""), "pqlnkmbdjo", S::npos); - test(S(""), "qkamfogpnljdcshbreti", S::npos); - test(S("nhmko"), "", 4); - test(S("lahfb"), "irkhs", 4); - test(S("gmfhd"), "kantesmpgj", 4); - test(S("odaft"), "oknlrstdpiqmjbaghcfe", S::npos); - test(S("eolhfgpjqk"), "", 9); - test(S("nbatdlmekr"), "bnrpe", 8); - test(S("jdmciepkaq"), "jtdaefblso", 9); - test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", S::npos); - test(S("gprdcokbnjhlsfmtieqa"), "", 19); - test(S("qjghlnftcaismkropdeb"), "bjaht", 18); - test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 17); - test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), "", S::npos); + test(S(""), "laenf", S::npos); + test(S(""), "pqlnkmbdjo", S::npos); + test(S(""), "qkamfogpnljdcshbreti", S::npos); + test(S("nhmko"), "", 4); + test(S("lahfb"), "irkhs", 4); + test(S("gmfhd"), "kantesmpgj", 4); + test(S("odaft"), "oknlrstdpiqmjbaghcfe", S::npos); + test(S("eolhfgpjqk"), "", 9); + test(S("nbatdlmekr"), "bnrpe", 8); + test(S("jdmciepkaq"), "jtdaefblso", 9); + test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", S::npos); + test(S("gprdcokbnjhlsfmtieqa"), "", 19); + test(S("qjghlnftcaismkropdeb"), "bjaht", 18); + test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 17); + test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -160,8 +154,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/pointer_size_size.pass.cpp @@ -18,353 +18,351 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos, n)); - assert(s.find_last_not_of(str, pos, n) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos, n)); + assert(s.find_last_not_of(str, pos, n) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, 0, S::npos); - test(S(""), "irkhs", 0, 0, S::npos); - test(S(""), "kante", 0, 1, S::npos); - test(S(""), "oknlr", 0, 2, S::npos); - test(S(""), "pcdro", 0, 4, S::npos); - test(S(""), "bnrpe", 0, 5, S::npos); - test(S(""), "jtdaefblso", 0, 0, S::npos); - test(S(""), "oselktgbca", 0, 1, S::npos); - test(S(""), "eqgaplhckj", 0, 5, S::npos); - test(S(""), "bjahtcmnlp", 0, 9, S::npos); - test(S(""), "hjlcmgpket", 0, 10, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); - test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); - test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); - test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); - test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "lbtqd", 1, 0, S::npos); - test(S(""), "tboim", 1, 1, S::npos); - test(S(""), "slcer", 1, 2, S::npos); - test(S(""), "cbjfs", 1, 4, S::npos); - test(S(""), "aqibs", 1, 5, S::npos); - test(S(""), "gtfblmqinc", 1, 0, S::npos); - test(S(""), "mkqpbtdalg", 1, 1, S::npos); - test(S(""), "kphatlimcd", 1, 5, S::npos); - test(S(""), "pblasqogic", 1, 9, S::npos); - test(S(""), "arosdhcfme", 1, 10, S::npos); - test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); - test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); - test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); - test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); - test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); - test(S("eaint"), "", 0, 0, 0); - test(S("binja"), "gfsrt", 0, 0, 0); - test(S("latkm"), "pfsoc", 0, 1, 0); - test(S("lecfr"), "tpflm", 0, 2, 0); - test(S("eqkst"), "sgkec", 0, 4, S::npos); - test(S("cdafr"), "romds", 0, 5, 0); - test(S("prbhe"), "qhjistlgmr", 0, 0, 0); - test(S("lbisk"), "pedfirsglo", 0, 1, 0); - test(S("hrlpd"), "aqcoslgrmk", 0, 5, 0); - test(S("ehmja"), "dabckmepqj", 0, 9, S::npos); - test(S("mhqgd"), "pqscrjthli", 0, 10, 0); - test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0); - test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0); - test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0); - test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos); - test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos); - test(S("clrgb"), "", 1, 0, 1); - test(S("tjmek"), "osmia", 1, 0, 1); - test(S("bgstp"), "ckonl", 1, 1, 1); - test(S("hstrk"), "ilcaj", 1, 2, 1); - test(S("kmspj"), "lasiq", 1, 4, 1); - test(S("tjboh"), "kfqmr", 1, 5, 1); - test(S("ilbcj"), "klnitfaobg", 1, 0, 1); - test(S("jkngf"), "gjhmdlqikp", 1, 1, 1); - test(S("gfcql"), "skbgtahqej", 1, 5, 1); - test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1); - test(S("bthpg"), "bjgfmnlkio", 1, 10, 1); - test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1); - test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1); - test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, S::npos); - test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos); - test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos); - test(S("ndrhl"), "", 2, 0, 2); - test(S("mrecp"), "otkgb", 2, 0, 2); - test(S("qlasf"), "cqsjl", 2, 1, 2); - test(S("smaqd"), "dpifl", 2, 2, 2); - test(S("hjeni"), "oapht", 2, 4, 2); - test(S("ocmfj"), "cifts", 2, 5, 2); - test(S("hmftq"), "nmsckbgalo", 2, 0, 2); - test(S("fklad"), "tpksqhamle", 2, 1, 2); - test(S("dirnm"), "tpdrchmkji", 2, 5, 1); - test(S("hrgdc"), "ijagfkblst", 2, 9, 1); - test(S("ifakg"), "kpocsignjb", 2, 10, 2); - test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2); - test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2); - test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2); - test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos); - test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos); - test(S("cjgao"), "", 4, 0, 4); - test(S("kjplq"), "mabns", 4, 0, 4); - test(S("herni"), "bdnrp", 4, 1, 4); - test(S("tadrb"), "scidp", 4, 2, 4); - test(S("pkfeo"), "agbjl", 4, 4, 4); - test(S("hoser"), "jfmpr", 4, 5, 3); - test(S("kgrsp"), "rbpefghsmj", 4, 0, 4); - test(S("pgejb"), "apsfntdoqc", 4, 1, 4); - test(S("thlnq"), "ndkjeisgcl", 4, 5, 4); - test(S("nbmit"), "rnfpqatdeo", 4, 9, 3); - test(S("jgmib"), "bntjlqrfik", 4, 10, 2); - test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4); - test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4); - test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 3); - test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 2); - test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos); - test(S("klopi"), "", 5, 0, 4); - test(S("dajhn"), "psthd", 5, 0, 4); - test(S("jbgno"), "rpmjd", 5, 1, 4); - test(S("hkjae"), "dfsmk", 5, 2, 4); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, 0, S::npos); + test(S(""), "irkhs", 0, 0, S::npos); + test(S(""), "kante", 0, 1, S::npos); + test(S(""), "oknlr", 0, 2, S::npos); + test(S(""), "pcdro", 0, 4, S::npos); + test(S(""), "bnrpe", 0, 5, S::npos); + test(S(""), "jtdaefblso", 0, 0, S::npos); + test(S(""), "oselktgbca", 0, 1, S::npos); + test(S(""), "eqgaplhckj", 0, 5, S::npos); + test(S(""), "bjahtcmnlp", 0, 9, S::npos); + test(S(""), "hjlcmgpket", 0, 10, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); + test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); + test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); + test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); + test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "lbtqd", 1, 0, S::npos); + test(S(""), "tboim", 1, 1, S::npos); + test(S(""), "slcer", 1, 2, S::npos); + test(S(""), "cbjfs", 1, 4, S::npos); + test(S(""), "aqibs", 1, 5, S::npos); + test(S(""), "gtfblmqinc", 1, 0, S::npos); + test(S(""), "mkqpbtdalg", 1, 1, S::npos); + test(S(""), "kphatlimcd", 1, 5, S::npos); + test(S(""), "pblasqogic", 1, 9, S::npos); + test(S(""), "arosdhcfme", 1, 10, S::npos); + test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); + test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); + test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); + test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); + test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); + test(S("eaint"), "", 0, 0, 0); + test(S("binja"), "gfsrt", 0, 0, 0); + test(S("latkm"), "pfsoc", 0, 1, 0); + test(S("lecfr"), "tpflm", 0, 2, 0); + test(S("eqkst"), "sgkec", 0, 4, S::npos); + test(S("cdafr"), "romds", 0, 5, 0); + test(S("prbhe"), "qhjistlgmr", 0, 0, 0); + test(S("lbisk"), "pedfirsglo", 0, 1, 0); + test(S("hrlpd"), "aqcoslgrmk", 0, 5, 0); + test(S("ehmja"), "dabckmepqj", 0, 9, S::npos); + test(S("mhqgd"), "pqscrjthli", 0, 10, 0); + test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0); + test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0); + test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0); + test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos); + test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos); + test(S("clrgb"), "", 1, 0, 1); + test(S("tjmek"), "osmia", 1, 0, 1); + test(S("bgstp"), "ckonl", 1, 1, 1); + test(S("hstrk"), "ilcaj", 1, 2, 1); + test(S("kmspj"), "lasiq", 1, 4, 1); + test(S("tjboh"), "kfqmr", 1, 5, 1); + test(S("ilbcj"), "klnitfaobg", 1, 0, 1); + test(S("jkngf"), "gjhmdlqikp", 1, 1, 1); + test(S("gfcql"), "skbgtahqej", 1, 5, 1); + test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1); + test(S("bthpg"), "bjgfmnlkio", 1, 10, 1); + test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1); + test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1); + test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, S::npos); + test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos); + test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos); + test(S("ndrhl"), "", 2, 0, 2); + test(S("mrecp"), "otkgb", 2, 0, 2); + test(S("qlasf"), "cqsjl", 2, 1, 2); + test(S("smaqd"), "dpifl", 2, 2, 2); + test(S("hjeni"), "oapht", 2, 4, 2); + test(S("ocmfj"), "cifts", 2, 5, 2); + test(S("hmftq"), "nmsckbgalo", 2, 0, 2); + test(S("fklad"), "tpksqhamle", 2, 1, 2); + test(S("dirnm"), "tpdrchmkji", 2, 5, 1); + test(S("hrgdc"), "ijagfkblst", 2, 9, 1); + test(S("ifakg"), "kpocsignjb", 2, 10, 2); + test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2); + test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2); + test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2); + test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos); + test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos); + test(S("cjgao"), "", 4, 0, 4); + test(S("kjplq"), "mabns", 4, 0, 4); + test(S("herni"), "bdnrp", 4, 1, 4); + test(S("tadrb"), "scidp", 4, 2, 4); + test(S("pkfeo"), "agbjl", 4, 4, 4); + test(S("hoser"), "jfmpr", 4, 5, 3); + test(S("kgrsp"), "rbpefghsmj", 4, 0, 4); + test(S("pgejb"), "apsfntdoqc", 4, 1, 4); + test(S("thlnq"), "ndkjeisgcl", 4, 5, 4); + test(S("nbmit"), "rnfpqatdeo", 4, 9, 3); + test(S("jgmib"), "bntjlqrfik", 4, 10, 2); + test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4); + test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4); + test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 3); + test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 2); + test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos); + test(S("klopi"), "", 5, 0, 4); + test(S("dajhn"), "psthd", 5, 0, 4); + test(S("jbgno"), "rpmjd", 5, 1, 4); + test(S("hkjae"), "dfsmk", 5, 2, 4); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("gbhqo"), "skqne", 5, 4, 4); - test(S("ktdor"), "kipnf", 5, 5, 4); - test(S("ldprn"), "hmrnqdgifl", 5, 0, 4); - test(S("egmjk"), "fsmjcdairn", 5, 1, 4); - test(S("armql"), "pcdgltbrfj", 5, 5, 3); - test(S("cdhjo"), "aekfctpirg", 5, 9, 4); - test(S("jcons"), "ledihrsgpf", 5, 10, 3); - test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, 4); - test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, 4); - test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 1); - test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 2); - test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); - test(S("gajqn"), "", 6, 0, 4); - test(S("stedk"), "hrnat", 6, 0, 4); - test(S("tjkaf"), "gsqdt", 6, 1, 4); - test(S("dthpe"), "bspkd", 6, 2, 4); - test(S("klhde"), "ohcmb", 6, 4, 4); - test(S("bhlki"), "heatr", 6, 5, 4); - test(S("lqmoh"), "pmblckedfn", 6, 0, 4); - test(S("mtqin"), "aceqmsrbik", 6, 1, 4); - test(S("dpqbr"), "lmbtdehjrn", 6, 5, 4); - test(S("kdhmo"), "teqmcrlgib", 6, 9, 4); - test(S("jblqp"), "njolbmspac", 6, 10, 3); - test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, 4); - test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, 4); - test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 1); - test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); - test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); - test(S("jnkrfhotgl"), "", 0, 0, 0); - test(S("dltjfngbko"), "rqegt", 0, 0, 0); - test(S("bmjlpkiqde"), "dashm", 0, 1, 0); - test(S("skrflobnqm"), "jqirk", 0, 2, 0); - test(S("jkpldtshrm"), "rckeg", 0, 4, 0); - test(S("ghasdbnjqo"), "jscie", 0, 5, 0); - test(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0); - test(S("ikthdgcamf"), "gdicosleja", 0, 1, 0); - test(S("pcofgeniam"), "qcpjibosfl", 0, 5, S::npos); - test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, S::npos); - test(S("itphbqsker"), "dtablcrseo", 0, 10, 0); - test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0); - test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0); - test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0); - test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, S::npos); - test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos); - test(S("shbcqnmoar"), "", 1, 0, 1); - test(S("bdoshlmfin"), "ontrs", 1, 0, 1); - test(S("khfrebnsgq"), "pfkna", 1, 1, 1); - test(S("getcrsaoji"), "ekosa", 1, 2, 0); - test(S("fjiknedcpq"), "anqhk", 1, 4, 1); - test(S("tkejgnafrm"), "jekca", 1, 5, 0); - test(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1); - test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1); - test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 0); - test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1); - test(S("cigfqkated"), "sqcflrgtim", 1, 10, S::npos); - test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1); - test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1); - test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, S::npos); - test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, S::npos); - test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos); - test(S("ectnhskflp"), "", 5, 0, 5); - test(S("fgtianblpq"), "pijag", 5, 0, 5); - test(S("mfeqklirnh"), "jrckd", 5, 1, 5); - test(S("astedncjhk"), "qcloh", 5, 2, 5); - test(S("fhlqgcajbr"), "thlmp", 5, 4, 5); - test(S("epfhocmdng"), "qidmo", 5, 5, 5); - test(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5); - test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 4); - test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5); - test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 3); - test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5); - test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5); - test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5); - test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 1); - test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, S::npos); - test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos); - test(S("shoiedtcjb"), "", 9, 0, 9); - test(S("ebcinjgads"), "tqbnh", 9, 0, 9); - test(S("dqmregkcfl"), "akmle", 9, 1, 9); - test(S("ngcrieqajf"), "iqfkm", 9, 2, 9); - test(S("qosmilgnjb"), "tqjsr", 9, 4, 9); - test(S("ikabsjtdfl"), "jplqg", 9, 5, 8); - test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9); - test(S("fdnplotmgh"), "morkglpesn", 9, 1, 9); - test(S("fdbicojerm"), "dmicerngat", 9, 5, 8); - test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9); - test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9); - test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9); - test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9); - test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9); - test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 3); - test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos); - test(S("ncjpmaekbs"), "", 10, 0, 9); - test(S("hlbosgmrak"), "hpmsd", 10, 0, 9); - test(S("pqfhsgilen"), "qnpor", 10, 1, 9); - test(S("gqtjsbdckh"), "otdma", 10, 2, 9); - test(S("cfkqpjlegi"), "efhjg", 10, 4, 9); - test(S("beanrfodgj"), "odpte", 10, 5, 9); - test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, 9); - test(S("iomkfthagj"), "oaklidrbqg", 10, 1, 9); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("gbhqo"), "skqne", 5, 4, 4); + test(S("ktdor"), "kipnf", 5, 5, 4); + test(S("ldprn"), "hmrnqdgifl", 5, 0, 4); + test(S("egmjk"), "fsmjcdairn", 5, 1, 4); + test(S("armql"), "pcdgltbrfj", 5, 5, 3); + test(S("cdhjo"), "aekfctpirg", 5, 9, 4); + test(S("jcons"), "ledihrsgpf", 5, 10, 3); + test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, 4); + test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, 4); + test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 1); + test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 2); + test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); + test(S("gajqn"), "", 6, 0, 4); + test(S("stedk"), "hrnat", 6, 0, 4); + test(S("tjkaf"), "gsqdt", 6, 1, 4); + test(S("dthpe"), "bspkd", 6, 2, 4); + test(S("klhde"), "ohcmb", 6, 4, 4); + test(S("bhlki"), "heatr", 6, 5, 4); + test(S("lqmoh"), "pmblckedfn", 6, 0, 4); + test(S("mtqin"), "aceqmsrbik", 6, 1, 4); + test(S("dpqbr"), "lmbtdehjrn", 6, 5, 4); + test(S("kdhmo"), "teqmcrlgib", 6, 9, 4); + test(S("jblqp"), "njolbmspac", 6, 10, 3); + test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, 4); + test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, 4); + test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 1); + test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); + test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); + test(S("jnkrfhotgl"), "", 0, 0, 0); + test(S("dltjfngbko"), "rqegt", 0, 0, 0); + test(S("bmjlpkiqde"), "dashm", 0, 1, 0); + test(S("skrflobnqm"), "jqirk", 0, 2, 0); + test(S("jkpldtshrm"), "rckeg", 0, 4, 0); + test(S("ghasdbnjqo"), "jscie", 0, 5, 0); + test(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0); + test(S("ikthdgcamf"), "gdicosleja", 0, 1, 0); + test(S("pcofgeniam"), "qcpjibosfl", 0, 5, S::npos); + test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, S::npos); + test(S("itphbqsker"), "dtablcrseo", 0, 10, 0); + test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0); + test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0); + test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0); + test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, S::npos); + test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos); + test(S("shbcqnmoar"), "", 1, 0, 1); + test(S("bdoshlmfin"), "ontrs", 1, 0, 1); + test(S("khfrebnsgq"), "pfkna", 1, 1, 1); + test(S("getcrsaoji"), "ekosa", 1, 2, 0); + test(S("fjiknedcpq"), "anqhk", 1, 4, 1); + test(S("tkejgnafrm"), "jekca", 1, 5, 0); + test(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1); + test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1); + test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 0); + test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1); + test(S("cigfqkated"), "sqcflrgtim", 1, 10, S::npos); + test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1); + test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1); + test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, S::npos); + test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, S::npos); + test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos); + test(S("ectnhskflp"), "", 5, 0, 5); + test(S("fgtianblpq"), "pijag", 5, 0, 5); + test(S("mfeqklirnh"), "jrckd", 5, 1, 5); + test(S("astedncjhk"), "qcloh", 5, 2, 5); + test(S("fhlqgcajbr"), "thlmp", 5, 4, 5); + test(S("epfhocmdng"), "qidmo", 5, 5, 5); + test(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5); + test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 4); + test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5); + test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 3); + test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5); + test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5); + test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5); + test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 1); + test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, S::npos); + test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos); + test(S("shoiedtcjb"), "", 9, 0, 9); + test(S("ebcinjgads"), "tqbnh", 9, 0, 9); + test(S("dqmregkcfl"), "akmle", 9, 1, 9); + test(S("ngcrieqajf"), "iqfkm", 9, 2, 9); + test(S("qosmilgnjb"), "tqjsr", 9, 4, 9); + test(S("ikabsjtdfl"), "jplqg", 9, 5, 8); + test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9); + test(S("fdnplotmgh"), "morkglpesn", 9, 1, 9); + test(S("fdbicojerm"), "dmicerngat", 9, 5, 8); + test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9); + test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9); + test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9); + test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9); + test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9); + test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 3); + test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos); + test(S("ncjpmaekbs"), "", 10, 0, 9); + test(S("hlbosgmrak"), "hpmsd", 10, 0, 9); + test(S("pqfhsgilen"), "qnpor", 10, 1, 9); + test(S("gqtjsbdckh"), "otdma", 10, 2, 9); + test(S("cfkqpjlegi"), "efhjg", 10, 4, 9); + test(S("beanrfodgj"), "odpte", 10, 5, 9); + test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, 9); + test(S("iomkfthagj"), "oaklidrbqg", 10, 1, 9); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 8); - test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 9); - test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 8); - test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, 9); - test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 9); - test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 7); - test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 5); - test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); - test(S("cqjohampgd"), "", 11, 0, 9); - test(S("hobitmpsan"), "aocjb", 11, 0, 9); - test(S("tjehkpsalm"), "jbrnk", 11, 1, 9); - test(S("ngfbojitcl"), "tqedg", 11, 2, 9); - test(S("rcfkdbhgjo"), "nqskp", 11, 4, 9); - test(S("qghptonrea"), "eaqkl", 11, 5, 7); - test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, 9); - test(S("hlmgabenti"), "lsftgajqpm", 11, 1, 9); - test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 9); - test(S("jqedtkornm"), "shkncmiaqj", 11, 9, 7); - test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 8); - test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, 9); - test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, 9); - test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 8); - test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); - test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); - test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0); - test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0); - test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0); - test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0); - test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0); - test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0); - test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0); - test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0); - test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0); - test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0); - test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0); - test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0); - test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0); - test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0); - test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, S::npos); - test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos); - test(S("febhmqtjanokscdirpgl"), "", 1, 0, 1); - test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1); - test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1); - test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 0); - test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 0); - test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1); - test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1); - test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1); - test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1); - test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 0); - test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 0); - test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1); - test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1); - test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 0); - test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, S::npos); - test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos); - test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10); - test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10); - test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10); - test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10); - test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 9); - test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10); - test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10); - test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10); - test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10); - test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 8); - test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10); - test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10); - test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10); - test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 8); - test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, S::npos); - test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos); - test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19); - test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19); - test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19); - test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19); - test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19); - test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 17); - test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19); - test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19); - test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19); - test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19); - test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19); - test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19); - test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19); - test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 18); - test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 7); - test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos); - test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, 19); - test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, 19); - test(S("grkpahljcftesdmonqib"), "odife", 20, 1, 19); - test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 19); - test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 18); - test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 18); - test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, 19); - test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 19); - test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 18); - test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 18); - test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 17); - test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, 19); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 8); + test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 9); + test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 8); + test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, 9); + test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 9); + test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 7); + test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 5); + test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); + test(S("cqjohampgd"), "", 11, 0, 9); + test(S("hobitmpsan"), "aocjb", 11, 0, 9); + test(S("tjehkpsalm"), "jbrnk", 11, 1, 9); + test(S("ngfbojitcl"), "tqedg", 11, 2, 9); + test(S("rcfkdbhgjo"), "nqskp", 11, 4, 9); + test(S("qghptonrea"), "eaqkl", 11, 5, 7); + test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, 9); + test(S("hlmgabenti"), "lsftgajqpm", 11, 1, 9); + test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 9); + test(S("jqedtkornm"), "shkncmiaqj", 11, 9, 7); + test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 8); + test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, 9); + test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, 9); + test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 8); + test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); + test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); + test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0); + test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0); + test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0); + test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0); + test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0); + test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0); + test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0); + test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0); + test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0); + test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0); + test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0); + test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0); + test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0); + test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0); + test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, S::npos); + test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos); + test(S("febhmqtjanokscdirpgl"), "", 1, 0, 1); + test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1); + test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1); + test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 0); + test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 0); + test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1); + test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1); + test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1); + test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1); + test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 0); + test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 0); + test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1); + test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1); + test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 0); + test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, S::npos); + test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos); + test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10); + test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10); + test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10); + test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10); + test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 9); + test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10); + test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10); + test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10); + test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10); + test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 8); + test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10); + test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10); + test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10); + test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 8); + test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, S::npos); + test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos); + test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19); + test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19); + test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19); + test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19); + test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19); + test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 17); + test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19); + test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19); + test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19); + test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19); + test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19); + test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19); + test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19); + test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 18); + test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 7); + test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos); + test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, 19); + test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, 19); + test(S("grkpahljcftesdmonqib"), "odife", 20, 1, 19); + test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 19); + test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 18); + test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 18); + test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, 19); + test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 19); + test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 18); + test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 18); + test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 17); + test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, 19); } template -TEST_CONSTEXPR_CXX20 void test3() -{ - test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 19); - test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 19); - test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 1); - test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); - test(S("ecgdanriptblhjfqskom"), "", 21, 0, 19); - test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, 19); - test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 19); - test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 19); - test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 19); - test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 19); - test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, 19); - test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 19); - test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 18); - test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 19); - test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 19); - test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, 19); - test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 19); - test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 19); - test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 7); - test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); +TEST_CONSTEXPR_CXX20 void test3() { + test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 19); + test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 19); + test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 1); + test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); + test(S("ecgdanriptblhjfqskom"), "", 21, 0, 19); + test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, 19); + test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 19); + test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 19); + test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 19); + test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 19); + test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, 19); + test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 19); + test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 18); + test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 19); + test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 19); + test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, 19); + test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 19); + test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 19); + test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 7); + test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -388,8 +386,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos)); - assert(s.find_last_not_of(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos)); + assert(s.find_last_not_of(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str)); - assert(s.find_last_not_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str)); + assert(s.find_last_not_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), S(""), 0, S::npos); - test(S(""), S("laenf"), 0, S::npos); - test(S(""), S("pqlnkmbdjo"), 0, S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("bjaht"), 1, S::npos); - test(S(""), S("hjlcmgpket"), 1, S::npos); - test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), S(""), 0, 0); - test(S("qanej"), S("dfkap"), 0, 0); - test(S("clbao"), S("ihqrfebgad"), 0, 0); - test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, S::npos); - test(S("srdfq"), S(""), 1, 1); - test(S("oemth"), S("ikcrq"), 1, 1); - test(S("cdaih"), S("dmajblfhsg"), 1, 0); - test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, S::npos); - test(S("cshmd"), S(""), 2, 2); - test(S("lhcdo"), S("oebqi"), 2, 2); - test(S("qnsoh"), S("kojhpmbsfe"), 2, 1); - test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, S::npos); - test(S("fmtsp"), S(""), 4, 4); - test(S("khbpm"), S("aobjd"), 4, 4); - test(S("pbsji"), S("pcbahntsje"), 4, 4); - test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, S::npos); - test(S("eqmpa"), S(""), 5, 4); - test(S("omigs"), S("kocgb"), 5, 4); - test(S("onmje"), S("fbslrjiqkm"), 5, 4); - test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), S(""), 6, 4); - test(S("igdsc"), S("qngpd"), 6, 4); - test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), S(""), 0, 0); - test(S("daiprenocl"), S("ashjd"), 0, S::npos); - test(S("litpcfdghe"), S("mgojkldsqh"), 0, S::npos); - test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, S::npos); - test(S("qpghtfbaji"), S(""), 1, 1); - test(S("gfshlcmdjr"), S("nadkh"), 1, 1); - test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 0); - test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, S::npos); - test(S("crnklpmegd"), S(""), 5, 5); - test(S("jsbtafedoc"), S("prqgn"), 5, 5); - test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 4); - test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, S::npos); - test(S("lmofqdhpki"), S(""), 9, 9); - test(S("hnefkqimca"), S("rtjpa"), 9, 8); - test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 9); - test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, S::npos); - test(S("elgofjmbrq"), S(""), 10, 9); - test(S("mjqdgalkpc"), S("dplqa"), 10, 9); - test(S("kthqnfcerm"), S("dkacjoptns"), 10, 9); - test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), S(""), 11, 9); - test(S("akiteljmoh"), S("lofbc"), 11, 9); - test(S("hlbdfreqjo"), S("astoegbfpn"), 11, 8); - test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), S(""), 0, 0); - test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 0); - test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, S::npos); - test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), S(""), 1, 1); - test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 0); - test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), S(""), 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 9); - test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 9); - test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, S::npos); - test(S("niptglfbosehkamrdqcj"), S(""), 19, 19); - test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 16); - test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), S(""), 20, 19); - test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, 18); - test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, 19); - test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, 19); - test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, 19); - test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, 19); - test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), S(""), 0, S::npos); + test(S(""), S("laenf"), 0, S::npos); + test(S(""), S("pqlnkmbdjo"), 0, S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("bjaht"), 1, S::npos); + test(S(""), S("hjlcmgpket"), 1, S::npos); + test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), S(""), 0, 0); + test(S("qanej"), S("dfkap"), 0, 0); + test(S("clbao"), S("ihqrfebgad"), 0, 0); + test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, S::npos); + test(S("srdfq"), S(""), 1, 1); + test(S("oemth"), S("ikcrq"), 1, 1); + test(S("cdaih"), S("dmajblfhsg"), 1, 0); + test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, S::npos); + test(S("cshmd"), S(""), 2, 2); + test(S("lhcdo"), S("oebqi"), 2, 2); + test(S("qnsoh"), S("kojhpmbsfe"), 2, 1); + test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, S::npos); + test(S("fmtsp"), S(""), 4, 4); + test(S("khbpm"), S("aobjd"), 4, 4); + test(S("pbsji"), S("pcbahntsje"), 4, 4); + test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, S::npos); + test(S("eqmpa"), S(""), 5, 4); + test(S("omigs"), S("kocgb"), 5, 4); + test(S("onmje"), S("fbslrjiqkm"), 5, 4); + test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), S(""), 6, 4); + test(S("igdsc"), S("qngpd"), 6, 4); + test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), S(""), 0, 0); + test(S("daiprenocl"), S("ashjd"), 0, S::npos); + test(S("litpcfdghe"), S("mgojkldsqh"), 0, S::npos); + test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, S::npos); + test(S("qpghtfbaji"), S(""), 1, 1); + test(S("gfshlcmdjr"), S("nadkh"), 1, 1); + test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 0); + test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, S::npos); + test(S("crnklpmegd"), S(""), 5, 5); + test(S("jsbtafedoc"), S("prqgn"), 5, 5); + test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 4); + test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, S::npos); + test(S("lmofqdhpki"), S(""), 9, 9); + test(S("hnefkqimca"), S("rtjpa"), 9, 8); + test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 9); + test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, S::npos); + test(S("elgofjmbrq"), S(""), 10, 9); + test(S("mjqdgalkpc"), S("dplqa"), 10, 9); + test(S("kthqnfcerm"), S("dkacjoptns"), 10, 9); + test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), S(""), 11, 9); + test(S("akiteljmoh"), S("lofbc"), 11, 9); + test(S("hlbdfreqjo"), S("astoegbfpn"), 11, 8); + test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), S(""), 0, 0); + test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 0); + test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, S::npos); + test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), S(""), 1, 1); + test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 0); + test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), S(""), 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 9); + test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 9); + test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, S::npos); + test(S("niptglfbosehkamrdqcj"), S(""), 19, 19); + test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 16); + test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), S(""), 20, 19); + test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, 18); + test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, 19); + test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, 19); + test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, 19); + test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, 19); + test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), S(""), S::npos); - test(S(""), S("laenf"), S::npos); - test(S(""), S("pqlnkmbdjo"), S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), S(""), 4); - test(S("lahfb"), S("irkhs"), 4); - test(S("gmfhd"), S("kantesmpgj"), 4); - test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), S::npos); - test(S("eolhfgpjqk"), S(""), 9); - test(S("nbatdlmekr"), S("bnrpe"), 8); - test(S("jdmciepkaq"), S("jtdaefblso"), 9); - test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), S::npos); - test(S("gprdcokbnjhlsfmtieqa"), S(""), 19); - test(S("qjghlnftcaismkropdeb"), S("bjaht"), 18); - test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 17); - test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), S(""), S::npos); + test(S(""), S("laenf"), S::npos); + test(S(""), S("pqlnkmbdjo"), S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), S(""), 4); + test(S("lahfb"), S("irkhs"), 4); + test(S("gmfhd"), S("kantesmpgj"), 4); + test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), S::npos); + test(S("eolhfgpjqk"), S(""), 9); + test(S("nbatdlmekr"), S("bnrpe"), 8); + test(S("jdmciepkaq"), S("jtdaefblso"), 9); + test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), S::npos); + test(S("gprdcokbnjhlsfmtieqa"), S(""), 19); + test(S("qjghlnftcaismkropdeb"), S("bjaht"), 18); + test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 17); + test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -166,8 +160,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.not.of/string_view_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(sv, pos)); - assert(s.find_last_not_of(sv, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(sv, pos)); + assert(s.find_last_not_of(sv, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(sv)); - assert(s.find_last_not_of(sv) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(sv)); + assert(s.find_last_not_of(sv) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), SV(""), 0, S::npos); - test(S(""), SV("laenf"), 0, S::npos); - test(S(""), SV("pqlnkmbdjo"), 0, S::npos); - test(S(""), SV("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), SV(""), 1, S::npos); - test(S(""), SV("bjaht"), 1, S::npos); - test(S(""), SV("hjlcmgpket"), 1, S::npos); - test(S(""), SV("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), SV(""), 0, 0); - test(S("qanej"), SV("dfkap"), 0, 0); - test(S("clbao"), SV("ihqrfebgad"), 0, 0); - test(S("mekdn"), SV("ngtjfcalbseiqrphmkdo"), 0, S::npos); - test(S("srdfq"), SV(""), 1, 1); - test(S("oemth"), SV("ikcrq"), 1, 1); - test(S("cdaih"), SV("dmajblfhsg"), 1, 0); - test(S("qohtk"), SV("oqftjhdmkgsblacenirp"), 1, S::npos); - test(S("cshmd"), SV(""), 2, 2); - test(S("lhcdo"), SV("oebqi"), 2, 2); - test(S("qnsoh"), SV("kojhpmbsfe"), 2, 1); - test(S("pkrof"), SV("acbsjqogpltdkhinfrem"), 2, S::npos); - test(S("fmtsp"), SV(""), 4, 4); - test(S("khbpm"), SV("aobjd"), 4, 4); - test(S("pbsji"), SV("pcbahntsje"), 4, 4); - test(S("mprdj"), SV("fhepcrntkoagbmldqijs"), 4, S::npos); - test(S("eqmpa"), SV(""), 5, 4); - test(S("omigs"), SV("kocgb"), 5, 4); - test(S("onmje"), SV("fbslrjiqkm"), 5, 4); - test(S("oqmrj"), SV("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), SV(""), 6, 4); - test(S("igdsc"), SV("qngpd"), 6, 4); - test(S("brqgo"), SV("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), SV("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), SV(""), 0, 0); - test(S("daiprenocl"), SV("ashjd"), 0, S::npos); - test(S("litpcfdghe"), SV("mgojkldsqh"), 0, S::npos); - test(S("aidjksrolc"), SV("imqnaghkfrdtlopbjesc"), 0, S::npos); - test(S("qpghtfbaji"), SV(""), 1, 1); - test(S("gfshlcmdjr"), SV("nadkh"), 1, 1); - test(S("nkodajteqp"), SV("ofdrqmkebl"), 1, 0); - test(S("gbmetiprqd"), SV("bdfjqgatlksriohemnpc"), 1, S::npos); - test(S("crnklpmegd"), SV(""), 5, 5); - test(S("jsbtafedoc"), SV("prqgn"), 5, 5); - test(S("qnmodrtkeb"), SV("pejafmnokr"), 5, 4); - test(S("cpebqsfmnj"), SV("odnqkgijrhabfmcestlp"), 5, S::npos); - test(S("lmofqdhpki"), SV(""), 9, 9); - test(S("hnefkqimca"), SV("rtjpa"), 9, 8); - test(S("drtasbgmfp"), SV("ktsrmnqagd"), 9, 9); - test(S("lsaijeqhtr"), SV("rtdhgcisbnmoaqkfpjle"), 9, S::npos); - test(S("elgofjmbrq"), SV(""), 10, 9); - test(S("mjqdgalkpc"), SV("dplqa"), 10, 9); - test(S("kthqnfcerm"), SV("dkacjoptns"), 10, 9); - test(S("dfsjhanorc"), SV("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), SV(""), 11, 9); - test(S("akiteljmoh"), SV("lofbc"), 11, 9); - test(S("hlbdfreqjo"), SV("astoegbfpn"), 11, 8); - test(S("taqobhlerg"), SV("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), SV(""), 0, 0); - test(S("aemtbrgcklhndjisfpoq"), SV("lbtqd"), 0, 0); - test(S("pnracgfkjdiholtbqsem"), SV("tboimldpjh"), 0, S::npos); - test(S("dicfltehbsgrmojnpkaq"), SV("slcerthdaiqjfnobgkpm"), 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), SV(""), 1, 1); - test(S("lhosrngtmfjikbqpcade"), SV("aqibs"), 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), SV("gtfblmqinc"), 1, 0); - test(S("gpifsqlrdkbonjtmheca"), SV("mkqpbtdalgniorhfescj"), 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), SV(""), 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), SV("pblas"), 10, 9); - test(S("fkdrbqltsgmcoiphneaj"), SV("arosdhcfme"), 10, 9); - test(S("crsplifgtqedjohnabmk"), SV("blkhjeogicatqfnpdmsr"), 10, S::npos); - test(S("niptglfbosehkamrdqcj"), SV(""), 19, 19); - test(S("copqdhstbingamjfkler"), SV("djkqc"), 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), SV("lgokshjtpb"), 19, 16); - test(S("kojatdhlcmigpbfrqnes"), SV("bqjhtkfepimcnsgrlado"), 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), SV(""), 20, 19); - test(S("gjnhidfsepkrtaqbmclo"), SV("nocfa"), 20, 18); - test(S("spocfaktqdbiejlhngmr"), SV("bgtajmiedc"), 20, 19); - test(S("rphmlekgfscndtaobiqj"), SV("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), SV(""), 21, 19); - test(S("binjagtfldkrspcomqeh"), SV("gfsrt"), 21, 19); - test(S("latkmisecnorjbfhqpdg"), SV("pfsocbhjtm"), 21, 19); - test(S("lecfratdjkhnsmqpoigb"), SV("tpflmdnoicjgkberhqsa"), 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), SV(""), 0, S::npos); + test(S(""), SV("laenf"), 0, S::npos); + test(S(""), SV("pqlnkmbdjo"), 0, S::npos); + test(S(""), SV("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), SV(""), 1, S::npos); + test(S(""), SV("bjaht"), 1, S::npos); + test(S(""), SV("hjlcmgpket"), 1, S::npos); + test(S(""), SV("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), SV(""), 0, 0); + test(S("qanej"), SV("dfkap"), 0, 0); + test(S("clbao"), SV("ihqrfebgad"), 0, 0); + test(S("mekdn"), SV("ngtjfcalbseiqrphmkdo"), 0, S::npos); + test(S("srdfq"), SV(""), 1, 1); + test(S("oemth"), SV("ikcrq"), 1, 1); + test(S("cdaih"), SV("dmajblfhsg"), 1, 0); + test(S("qohtk"), SV("oqftjhdmkgsblacenirp"), 1, S::npos); + test(S("cshmd"), SV(""), 2, 2); + test(S("lhcdo"), SV("oebqi"), 2, 2); + test(S("qnsoh"), SV("kojhpmbsfe"), 2, 1); + test(S("pkrof"), SV("acbsjqogpltdkhinfrem"), 2, S::npos); + test(S("fmtsp"), SV(""), 4, 4); + test(S("khbpm"), SV("aobjd"), 4, 4); + test(S("pbsji"), SV("pcbahntsje"), 4, 4); + test(S("mprdj"), SV("fhepcrntkoagbmldqijs"), 4, S::npos); + test(S("eqmpa"), SV(""), 5, 4); + test(S("omigs"), SV("kocgb"), 5, 4); + test(S("onmje"), SV("fbslrjiqkm"), 5, 4); + test(S("oqmrj"), SV("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), SV(""), 6, 4); + test(S("igdsc"), SV("qngpd"), 6, 4); + test(S("brqgo"), SV("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), SV("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), SV(""), 0, 0); + test(S("daiprenocl"), SV("ashjd"), 0, S::npos); + test(S("litpcfdghe"), SV("mgojkldsqh"), 0, S::npos); + test(S("aidjksrolc"), SV("imqnaghkfrdtlopbjesc"), 0, S::npos); + test(S("qpghtfbaji"), SV(""), 1, 1); + test(S("gfshlcmdjr"), SV("nadkh"), 1, 1); + test(S("nkodajteqp"), SV("ofdrqmkebl"), 1, 0); + test(S("gbmetiprqd"), SV("bdfjqgatlksriohemnpc"), 1, S::npos); + test(S("crnklpmegd"), SV(""), 5, 5); + test(S("jsbtafedoc"), SV("prqgn"), 5, 5); + test(S("qnmodrtkeb"), SV("pejafmnokr"), 5, 4); + test(S("cpebqsfmnj"), SV("odnqkgijrhabfmcestlp"), 5, S::npos); + test(S("lmofqdhpki"), SV(""), 9, 9); + test(S("hnefkqimca"), SV("rtjpa"), 9, 8); + test(S("drtasbgmfp"), SV("ktsrmnqagd"), 9, 9); + test(S("lsaijeqhtr"), SV("rtdhgcisbnmoaqkfpjle"), 9, S::npos); + test(S("elgofjmbrq"), SV(""), 10, 9); + test(S("mjqdgalkpc"), SV("dplqa"), 10, 9); + test(S("kthqnfcerm"), SV("dkacjoptns"), 10, 9); + test(S("dfsjhanorc"), SV("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), SV(""), 11, 9); + test(S("akiteljmoh"), SV("lofbc"), 11, 9); + test(S("hlbdfreqjo"), SV("astoegbfpn"), 11, 8); + test(S("taqobhlerg"), SV("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), SV(""), 0, 0); + test(S("aemtbrgcklhndjisfpoq"), SV("lbtqd"), 0, 0); + test(S("pnracgfkjdiholtbqsem"), SV("tboimldpjh"), 0, S::npos); + test(S("dicfltehbsgrmojnpkaq"), SV("slcerthdaiqjfnobgkpm"), 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), SV(""), 1, 1); + test(S("lhosrngtmfjikbqpcade"), SV("aqibs"), 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), SV("gtfblmqinc"), 1, 0); + test(S("gpifsqlrdkbonjtmheca"), SV("mkqpbtdalgniorhfescj"), 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), SV(""), 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), SV("pblas"), 10, 9); + test(S("fkdrbqltsgmcoiphneaj"), SV("arosdhcfme"), 10, 9); + test(S("crsplifgtqedjohnabmk"), SV("blkhjeogicatqfnpdmsr"), 10, S::npos); + test(S("niptglfbosehkamrdqcj"), SV(""), 19, 19); + test(S("copqdhstbingamjfkler"), SV("djkqc"), 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), SV("lgokshjtpb"), 19, 16); + test(S("kojatdhlcmigpbfrqnes"), SV("bqjhtkfepimcnsgrlado"), 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), SV(""), 20, 19); + test(S("gjnhidfsepkrtaqbmclo"), SV("nocfa"), 20, 18); + test(S("spocfaktqdbiejlhngmr"), SV("bgtajmiedc"), 20, 19); + test(S("rphmlekgfscndtaobiqj"), SV("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), SV(""), 21, 19); + test(S("binjagtfldkrspcomqeh"), SV("gfsrt"), 21, 19); + test(S("latkmisecnorjbfhqpdg"), SV("pfsocbhjtm"), 21, 19); + test(S("lecfratdjkhnsmqpoigb"), SV("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), SV(""), S::npos); - test(S(""), SV("laenf"), S::npos); - test(S(""), SV("pqlnkmbdjo"), S::npos); - test(S(""), SV("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), SV(""), 4); - test(S("lahfb"), SV("irkhs"), 4); - test(S("gmfhd"), SV("kantesmpgj"), 4); - test(S("odaft"), SV("oknlrstdpiqmjbaghcfe"), S::npos); - test(S("eolhfgpjqk"), SV(""), 9); - test(S("nbatdlmekr"), SV("bnrpe"), 8); - test(S("jdmciepkaq"), SV("jtdaefblso"), 9); - test(S("hkbgspoflt"), SV("oselktgbcapndfjihrmq"), S::npos); - test(S("gprdcokbnjhlsfmtieqa"), SV(""), 19); - test(S("qjghlnftcaismkropdeb"), SV("bjaht"), 18); - test(S("pnalfrdtkqcmojiesbhg"), SV("hjlcmgpket"), 17); - test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), SV(""), S::npos); + test(S(""), SV("laenf"), S::npos); + test(S(""), SV("pqlnkmbdjo"), S::npos); + test(S(""), SV("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), SV(""), 4); + test(S("lahfb"), SV("irkhs"), 4); + test(S("gmfhd"), SV("kantesmpgj"), 4); + test(S("odaft"), SV("oknlrstdpiqmjbaghcfe"), S::npos); + test(S("eolhfgpjqk"), SV(""), 9); + test(S("nbatdlmekr"), SV("bnrpe"), 8); + test(S("jdmciepkaq"), SV("jtdaefblso"), 9); + test(S("hkbgspoflt"), SV("oselktgbcapndfjihrmq"), S::npos); + test(S("gprdcokbnjhlsfmtieqa"), SV(""), 19); + test(S("qjghlnftcaismkropdeb"), SV("bjaht"), 18); + test(S("pnalfrdtkqcmojiesbhg"), SV("hjlcmgpket"), 17); + test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -151,18 +145,17 @@ } #if TEST_STD_VER >= 11 { - typedef std::basic_string, min_allocator> S; - typedef std::string_view SV; - test0(); - test1(); + typedef std::basic_string, min_allocator> S; + typedef std::string_view SV; + test0(); + test1(); } #endif return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/char_size.pass.cpp @@ -18,23 +18,19 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(c, pos)); - assert(s.find_last_of(c, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(c, pos)); + assert(s.find_last_of(c, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(c)); - assert(s.find_last_of(c) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(c)); + assert(s.find_last_of(c) == x); + if (x != S::npos) + assert(x < s.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -100,8 +96,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size.pass.cpp @@ -18,129 +18,123 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos)); - assert(s.find_last_of(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos)); + assert(s.find_last_of(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str)); - assert(s.find_last_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str)); + assert(s.find_last_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, S::npos); - test(S(""), "laenf", 0, S::npos); - test(S(""), "pqlnkmbdjo", 0, S::npos); - test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "bjaht", 1, S::npos); - test(S(""), "hjlcmgpket", 1, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); - test(S("fodgq"), "", 0, S::npos); - test(S("qanej"), "dfkap", 0, S::npos); - test(S("clbao"), "ihqrfebgad", 0, S::npos); - test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, 0); - test(S("srdfq"), "", 1, S::npos); - test(S("oemth"), "ikcrq", 1, S::npos); - test(S("cdaih"), "dmajblfhsg", 1, 1); - test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, 1); - test(S("cshmd"), "", 2, S::npos); - test(S("lhcdo"), "oebqi", 2, S::npos); - test(S("qnsoh"), "kojhpmbsfe", 2, 2); - test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, 2); - test(S("fmtsp"), "", 4, S::npos); - test(S("khbpm"), "aobjd", 4, 2); - test(S("pbsji"), "pcbahntsje", 4, 3); - test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, 4); - test(S("eqmpa"), "", 5, S::npos); - test(S("omigs"), "kocgb", 5, 3); - test(S("onmje"), "fbslrjiqkm", 5, 3); - test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, 4); - test(S("schfa"), "", 6, S::npos); - test(S("igdsc"), "qngpd", 6, 2); - test(S("brqgo"), "rodhqklgmb", 6, 4); - test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, 4); - test(S("hcjitbfapl"), "", 0, S::npos); - test(S("daiprenocl"), "ashjd", 0, 0); - test(S("litpcfdghe"), "mgojkldsqh", 0, 0); - test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, 0); - test(S("qpghtfbaji"), "", 1, S::npos); - test(S("gfshlcmdjr"), "nadkh", 1, S::npos); - test(S("nkodajteqp"), "ofdrqmkebl", 1, 1); - test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, 1); - test(S("crnklpmegd"), "", 5, S::npos); - test(S("jsbtafedoc"), "prqgn", 5, S::npos); - test(S("qnmodrtkeb"), "pejafmnokr", 5, 5); - test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, 5); - test(S("lmofqdhpki"), "", 9, S::npos); - test(S("hnefkqimca"), "rtjpa", 9, 9); - test(S("drtasbgmfp"), "ktsrmnqagd", 9, 7); - test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, 9); - test(S("elgofjmbrq"), "", 10, S::npos); - test(S("mjqdgalkpc"), "dplqa", 10, 8); - test(S("kthqnfcerm"), "dkacjoptns", 10, 6); - test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, 9); - test(S("eqsgalomhb"), "", 11, S::npos); - test(S("akiteljmoh"), "lofbc", 11, 8); - test(S("hlbdfreqjo"), "astoegbfpn", 11, 9); - test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, 9); - test(S("snafbdlghrjkpqtoceim"), "", 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, S::npos); - test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 0); - test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, 0); - test(S("jlnkraeodhcspfgbqitm"), "", 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, S::npos); - test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 1); - test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, 1); - test(S("hdpkobnsalmcfijregtq"), "", 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 10); - test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, 10); - test(S("niptglfbosehkamrdqcj"), "", 19, S::npos); - test(S("copqdhstbingamjfkler"), "djkqc", 19, 16); - test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 19); - test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, 19); - test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, 19); - test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, 18); - test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, 19); - test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); - test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, 12); - test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, 17); - test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, 19); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, S::npos); + test(S(""), "laenf", 0, S::npos); + test(S(""), "pqlnkmbdjo", 0, S::npos); + test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "bjaht", 1, S::npos); + test(S(""), "hjlcmgpket", 1, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); + test(S("fodgq"), "", 0, S::npos); + test(S("qanej"), "dfkap", 0, S::npos); + test(S("clbao"), "ihqrfebgad", 0, S::npos); + test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, 0); + test(S("srdfq"), "", 1, S::npos); + test(S("oemth"), "ikcrq", 1, S::npos); + test(S("cdaih"), "dmajblfhsg", 1, 1); + test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, 1); + test(S("cshmd"), "", 2, S::npos); + test(S("lhcdo"), "oebqi", 2, S::npos); + test(S("qnsoh"), "kojhpmbsfe", 2, 2); + test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, 2); + test(S("fmtsp"), "", 4, S::npos); + test(S("khbpm"), "aobjd", 4, 2); + test(S("pbsji"), "pcbahntsje", 4, 3); + test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, 4); + test(S("eqmpa"), "", 5, S::npos); + test(S("omigs"), "kocgb", 5, 3); + test(S("onmje"), "fbslrjiqkm", 5, 3); + test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, 4); + test(S("schfa"), "", 6, S::npos); + test(S("igdsc"), "qngpd", 6, 2); + test(S("brqgo"), "rodhqklgmb", 6, 4); + test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, 4); + test(S("hcjitbfapl"), "", 0, S::npos); + test(S("daiprenocl"), "ashjd", 0, 0); + test(S("litpcfdghe"), "mgojkldsqh", 0, 0); + test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, 0); + test(S("qpghtfbaji"), "", 1, S::npos); + test(S("gfshlcmdjr"), "nadkh", 1, S::npos); + test(S("nkodajteqp"), "ofdrqmkebl", 1, 1); + test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, 1); + test(S("crnklpmegd"), "", 5, S::npos); + test(S("jsbtafedoc"), "prqgn", 5, S::npos); + test(S("qnmodrtkeb"), "pejafmnokr", 5, 5); + test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, 5); + test(S("lmofqdhpki"), "", 9, S::npos); + test(S("hnefkqimca"), "rtjpa", 9, 9); + test(S("drtasbgmfp"), "ktsrmnqagd", 9, 7); + test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, 9); + test(S("elgofjmbrq"), "", 10, S::npos); + test(S("mjqdgalkpc"), "dplqa", 10, 8); + test(S("kthqnfcerm"), "dkacjoptns", 10, 6); + test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, 9); + test(S("eqsgalomhb"), "", 11, S::npos); + test(S("akiteljmoh"), "lofbc", 11, 8); + test(S("hlbdfreqjo"), "astoegbfpn", 11, 9); + test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, 9); + test(S("snafbdlghrjkpqtoceim"), "", 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, S::npos); + test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 0); + test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, 0); + test(S("jlnkraeodhcspfgbqitm"), "", 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, S::npos); + test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 1); + test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, 1); + test(S("hdpkobnsalmcfijregtq"), "", 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 10); + test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, 10); + test(S("niptglfbosehkamrdqcj"), "", 19, S::npos); + test(S("copqdhstbingamjfkler"), "djkqc", 19, 16); + test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 19); + test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, 19); + test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, 19); + test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, 18); + test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, 19); + test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); + test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, 12); + test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, 17); + test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, 19); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), "", S::npos); - test(S(""), "laenf", S::npos); - test(S(""), "pqlnkmbdjo", S::npos); - test(S(""), "qkamfogpnljdcshbreti", S::npos); - test(S("nhmko"), "", S::npos); - test(S("lahfb"), "irkhs", 2); - test(S("gmfhd"), "kantesmpgj", 1); - test(S("odaft"), "oknlrstdpiqmjbaghcfe", 4); - test(S("eolhfgpjqk"), "", S::npos); - test(S("nbatdlmekr"), "bnrpe", 9); - test(S("jdmciepkaq"), "jtdaefblso", 8); - test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", 9); - test(S("gprdcokbnjhlsfmtieqa"), "", S::npos); - test(S("qjghlnftcaismkropdeb"), "bjaht", 19); - test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 19); - test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 19); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), "", S::npos); + test(S(""), "laenf", S::npos); + test(S(""), "pqlnkmbdjo", S::npos); + test(S(""), "qkamfogpnljdcshbreti", S::npos); + test(S("nhmko"), "", S::npos); + test(S("lahfb"), "irkhs", 2); + test(S("gmfhd"), "kantesmpgj", 1); + test(S("odaft"), "oknlrstdpiqmjbaghcfe", 4); + test(S("eolhfgpjqk"), "", S::npos); + test(S("nbatdlmekr"), "bnrpe", 9); + test(S("jdmciepkaq"), "jtdaefblso", 8); + test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", 9); + test(S("gprdcokbnjhlsfmtieqa"), "", S::npos); + test(S("qjghlnftcaismkropdeb"), "bjaht", 19); + test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 19); + test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 19); } TEST_CONSTEXPR_CXX20 bool test() { @@ -160,8 +154,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/pointer_size_size.pass.cpp @@ -18,353 +18,351 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos, n)); - assert(s.find_last_of(str, pos, n) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos, n)); + assert(s.find_last_of(str, pos, n) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, 0, S::npos); - test(S(""), "irkhs", 0, 0, S::npos); - test(S(""), "kante", 0, 1, S::npos); - test(S(""), "oknlr", 0, 2, S::npos); - test(S(""), "pcdro", 0, 4, S::npos); - test(S(""), "bnrpe", 0, 5, S::npos); - test(S(""), "jtdaefblso", 0, 0, S::npos); - test(S(""), "oselktgbca", 0, 1, S::npos); - test(S(""), "eqgaplhckj", 0, 5, S::npos); - test(S(""), "bjahtcmnlp", 0, 9, S::npos); - test(S(""), "hjlcmgpket", 0, 10, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); - test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); - test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); - test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); - test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "lbtqd", 1, 0, S::npos); - test(S(""), "tboim", 1, 1, S::npos); - test(S(""), "slcer", 1, 2, S::npos); - test(S(""), "cbjfs", 1, 4, S::npos); - test(S(""), "aqibs", 1, 5, S::npos); - test(S(""), "gtfblmqinc", 1, 0, S::npos); - test(S(""), "mkqpbtdalg", 1, 1, S::npos); - test(S(""), "kphatlimcd", 1, 5, S::npos); - test(S(""), "pblasqogic", 1, 9, S::npos); - test(S(""), "arosdhcfme", 1, 10, S::npos); - test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); - test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); - test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); - test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); - test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); - test(S("eaint"), "", 0, 0, S::npos); - test(S("binja"), "gfsrt", 0, 0, S::npos); - test(S("latkm"), "pfsoc", 0, 1, S::npos); - test(S("lecfr"), "tpflm", 0, 2, S::npos); - test(S("eqkst"), "sgkec", 0, 4, 0); - test(S("cdafr"), "romds", 0, 5, S::npos); - test(S("prbhe"), "qhjistlgmr", 0, 0, S::npos); - test(S("lbisk"), "pedfirsglo", 0, 1, S::npos); - test(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos); - test(S("ehmja"), "dabckmepqj", 0, 9, 0); - test(S("mhqgd"), "pqscrjthli", 0, 10, S::npos); - test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos); - test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos); - test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos); - test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0); - test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0); - test(S("clrgb"), "", 1, 0, S::npos); - test(S("tjmek"), "osmia", 1, 0, S::npos); - test(S("bgstp"), "ckonl", 1, 1, S::npos); - test(S("hstrk"), "ilcaj", 1, 2, S::npos); - test(S("kmspj"), "lasiq", 1, 4, S::npos); - test(S("tjboh"), "kfqmr", 1, 5, S::npos); - test(S("ilbcj"), "klnitfaobg", 1, 0, S::npos); - test(S("jkngf"), "gjhmdlqikp", 1, 1, S::npos); - test(S("gfcql"), "skbgtahqej", 1, 5, 0); - test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 0); - test(S("bthpg"), "bjgfmnlkio", 1, 10, 0); - test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos); - test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos); - test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1); - test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1); - test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1); - test(S("ndrhl"), "", 2, 0, S::npos); - test(S("mrecp"), "otkgb", 2, 0, S::npos); - test(S("qlasf"), "cqsjl", 2, 1, S::npos); - test(S("smaqd"), "dpifl", 2, 2, S::npos); - test(S("hjeni"), "oapht", 2, 4, 0); - test(S("ocmfj"), "cifts", 2, 5, 1); - test(S("hmftq"), "nmsckbgalo", 2, 0, S::npos); - test(S("fklad"), "tpksqhamle", 2, 1, S::npos); - test(S("dirnm"), "tpdrchmkji", 2, 5, 2); - test(S("hrgdc"), "ijagfkblst", 2, 9, 2); - test(S("ifakg"), "kpocsignjb", 2, 10, 0); - test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos); - test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos); - test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 1); - test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2); - test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2); - test(S("cjgao"), "", 4, 0, S::npos); - test(S("kjplq"), "mabns", 4, 0, S::npos); - test(S("herni"), "bdnrp", 4, 1, S::npos); - test(S("tadrb"), "scidp", 4, 2, S::npos); - test(S("pkfeo"), "agbjl", 4, 4, S::npos); - test(S("hoser"), "jfmpr", 4, 5, 4); - test(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos); - test(S("pgejb"), "apsfntdoqc", 4, 1, S::npos); - test(S("thlnq"), "ndkjeisgcl", 4, 5, 3); - test(S("nbmit"), "rnfpqatdeo", 4, 9, 4); - test(S("jgmib"), "bntjlqrfik", 4, 10, 4); - test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos); - test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos); - test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4); - test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4); - test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4); - test(S("klopi"), "", 5, 0, S::npos); - test(S("dajhn"), "psthd", 5, 0, S::npos); - test(S("jbgno"), "rpmjd", 5, 1, S::npos); - test(S("hkjae"), "dfsmk", 5, 2, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, 0, S::npos); + test(S(""), "irkhs", 0, 0, S::npos); + test(S(""), "kante", 0, 1, S::npos); + test(S(""), "oknlr", 0, 2, S::npos); + test(S(""), "pcdro", 0, 4, S::npos); + test(S(""), "bnrpe", 0, 5, S::npos); + test(S(""), "jtdaefblso", 0, 0, S::npos); + test(S(""), "oselktgbca", 0, 1, S::npos); + test(S(""), "eqgaplhckj", 0, 5, S::npos); + test(S(""), "bjahtcmnlp", 0, 9, S::npos); + test(S(""), "hjlcmgpket", 0, 10, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); + test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); + test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); + test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); + test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "lbtqd", 1, 0, S::npos); + test(S(""), "tboim", 1, 1, S::npos); + test(S(""), "slcer", 1, 2, S::npos); + test(S(""), "cbjfs", 1, 4, S::npos); + test(S(""), "aqibs", 1, 5, S::npos); + test(S(""), "gtfblmqinc", 1, 0, S::npos); + test(S(""), "mkqpbtdalg", 1, 1, S::npos); + test(S(""), "kphatlimcd", 1, 5, S::npos); + test(S(""), "pblasqogic", 1, 9, S::npos); + test(S(""), "arosdhcfme", 1, 10, S::npos); + test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); + test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); + test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); + test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); + test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); + test(S("eaint"), "", 0, 0, S::npos); + test(S("binja"), "gfsrt", 0, 0, S::npos); + test(S("latkm"), "pfsoc", 0, 1, S::npos); + test(S("lecfr"), "tpflm", 0, 2, S::npos); + test(S("eqkst"), "sgkec", 0, 4, 0); + test(S("cdafr"), "romds", 0, 5, S::npos); + test(S("prbhe"), "qhjistlgmr", 0, 0, S::npos); + test(S("lbisk"), "pedfirsglo", 0, 1, S::npos); + test(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos); + test(S("ehmja"), "dabckmepqj", 0, 9, 0); + test(S("mhqgd"), "pqscrjthli", 0, 10, S::npos); + test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos); + test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos); + test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos); + test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0); + test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0); + test(S("clrgb"), "", 1, 0, S::npos); + test(S("tjmek"), "osmia", 1, 0, S::npos); + test(S("bgstp"), "ckonl", 1, 1, S::npos); + test(S("hstrk"), "ilcaj", 1, 2, S::npos); + test(S("kmspj"), "lasiq", 1, 4, S::npos); + test(S("tjboh"), "kfqmr", 1, 5, S::npos); + test(S("ilbcj"), "klnitfaobg", 1, 0, S::npos); + test(S("jkngf"), "gjhmdlqikp", 1, 1, S::npos); + test(S("gfcql"), "skbgtahqej", 1, 5, 0); + test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 0); + test(S("bthpg"), "bjgfmnlkio", 1, 10, 0); + test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos); + test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos); + test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1); + test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1); + test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1); + test(S("ndrhl"), "", 2, 0, S::npos); + test(S("mrecp"), "otkgb", 2, 0, S::npos); + test(S("qlasf"), "cqsjl", 2, 1, S::npos); + test(S("smaqd"), "dpifl", 2, 2, S::npos); + test(S("hjeni"), "oapht", 2, 4, 0); + test(S("ocmfj"), "cifts", 2, 5, 1); + test(S("hmftq"), "nmsckbgalo", 2, 0, S::npos); + test(S("fklad"), "tpksqhamle", 2, 1, S::npos); + test(S("dirnm"), "tpdrchmkji", 2, 5, 2); + test(S("hrgdc"), "ijagfkblst", 2, 9, 2); + test(S("ifakg"), "kpocsignjb", 2, 10, 0); + test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos); + test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos); + test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 1); + test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2); + test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2); + test(S("cjgao"), "", 4, 0, S::npos); + test(S("kjplq"), "mabns", 4, 0, S::npos); + test(S("herni"), "bdnrp", 4, 1, S::npos); + test(S("tadrb"), "scidp", 4, 2, S::npos); + test(S("pkfeo"), "agbjl", 4, 4, S::npos); + test(S("hoser"), "jfmpr", 4, 5, 4); + test(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos); + test(S("pgejb"), "apsfntdoqc", 4, 1, S::npos); + test(S("thlnq"), "ndkjeisgcl", 4, 5, 3); + test(S("nbmit"), "rnfpqatdeo", 4, 9, 4); + test(S("jgmib"), "bntjlqrfik", 4, 10, 4); + test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos); + test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos); + test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4); + test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4); + test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4); + test(S("klopi"), "", 5, 0, S::npos); + test(S("dajhn"), "psthd", 5, 0, S::npos); + test(S("jbgno"), "rpmjd", 5, 1, S::npos); + test(S("hkjae"), "dfsmk", 5, 2, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("gbhqo"), "skqne", 5, 4, 3); - test(S("ktdor"), "kipnf", 5, 5, 0); - test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); - test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); - test(S("armql"), "pcdgltbrfj", 5, 5, 4); - test(S("cdhjo"), "aekfctpirg", 5, 9, 0); - test(S("jcons"), "ledihrsgpf", 5, 10, 4); - test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); - test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); - test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 4); - test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 4); - test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, 4); - test(S("gajqn"), "", 6, 0, S::npos); - test(S("stedk"), "hrnat", 6, 0, S::npos); - test(S("tjkaf"), "gsqdt", 6, 1, S::npos); - test(S("dthpe"), "bspkd", 6, 2, S::npos); - test(S("klhde"), "ohcmb", 6, 4, 2); - test(S("bhlki"), "heatr", 6, 5, 1); - test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); - test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); - test(S("dpqbr"), "lmbtdehjrn", 6, 5, 3); - test(S("kdhmo"), "teqmcrlgib", 6, 9, 3); - test(S("jblqp"), "njolbmspac", 6, 10, 4); - test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); - test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); - test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 4); - test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, 4); - test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, 4); - test(S("jnkrfhotgl"), "", 0, 0, S::npos); - test(S("dltjfngbko"), "rqegt", 0, 0, S::npos); - test(S("bmjlpkiqde"), "dashm", 0, 1, S::npos); - test(S("skrflobnqm"), "jqirk", 0, 2, S::npos); - test(S("jkpldtshrm"), "rckeg", 0, 4, S::npos); - test(S("ghasdbnjqo"), "jscie", 0, 5, S::npos); - test(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos); - test(S("ikthdgcamf"), "gdicosleja", 0, 1, S::npos); - test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0); - test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0); - test(S("itphbqsker"), "dtablcrseo", 0, 10, S::npos); - test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos); - test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos); - test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, S::npos); - test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0); - test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0); - test(S("shbcqnmoar"), "", 1, 0, S::npos); - test(S("bdoshlmfin"), "ontrs", 1, 0, S::npos); - test(S("khfrebnsgq"), "pfkna", 1, 1, S::npos); - test(S("getcrsaoji"), "ekosa", 1, 2, 1); - test(S("fjiknedcpq"), "anqhk", 1, 4, S::npos); - test(S("tkejgnafrm"), "jekca", 1, 5, 1); - test(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos); - test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos); - test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1); - test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 0); - test(S("cigfqkated"), "sqcflrgtim", 1, 10, 1); - test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos); - test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos); - test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1); - test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1); - test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1); - test(S("ectnhskflp"), "", 5, 0, S::npos); - test(S("fgtianblpq"), "pijag", 5, 0, S::npos); - test(S("mfeqklirnh"), "jrckd", 5, 1, S::npos); - test(S("astedncjhk"), "qcloh", 5, 2, S::npos); - test(S("fhlqgcajbr"), "thlmp", 5, 4, 2); - test(S("epfhocmdng"), "qidmo", 5, 5, 4); - test(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos); - test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5); - test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, S::npos); - test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5); - test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 4); - test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos); - test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos); - test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5); - test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5); - test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5); - test(S("shoiedtcjb"), "", 9, 0, S::npos); - test(S("ebcinjgads"), "tqbnh", 9, 0, S::npos); - test(S("dqmregkcfl"), "akmle", 9, 1, S::npos); - test(S("ngcrieqajf"), "iqfkm", 9, 2, 6); - test(S("qosmilgnjb"), "tqjsr", 9, 4, 8); - test(S("ikabsjtdfl"), "jplqg", 9, 5, 9); - test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos); - test(S("fdnplotmgh"), "morkglpesn", 9, 1, 7); - test(S("fdbicojerm"), "dmicerngat", 9, 5, 9); - test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 6); - test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 5); - test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos); - test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 6); - test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 7); - test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9); - test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9); - test(S("ncjpmaekbs"), "", 10, 0, S::npos); - test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); - test(S("pqfhsgilen"), "qnpor", 10, 1, 1); - test(S("gqtjsbdckh"), "otdma", 10, 2, 2); - test(S("cfkqpjlegi"), "efhjg", 10, 4, 7); - test(S("beanrfodgj"), "odpte", 10, 5, 7); - test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); - test(S("iomkfthagj"), "oaklidrbqg", 10, 1, 1); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("gbhqo"), "skqne", 5, 4, 3); + test(S("ktdor"), "kipnf", 5, 5, 0); + test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); + test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); + test(S("armql"), "pcdgltbrfj", 5, 5, 4); + test(S("cdhjo"), "aekfctpirg", 5, 9, 0); + test(S("jcons"), "ledihrsgpf", 5, 10, 4); + test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); + test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); + test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 4); + test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 4); + test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, 4); + test(S("gajqn"), "", 6, 0, S::npos); + test(S("stedk"), "hrnat", 6, 0, S::npos); + test(S("tjkaf"), "gsqdt", 6, 1, S::npos); + test(S("dthpe"), "bspkd", 6, 2, S::npos); + test(S("klhde"), "ohcmb", 6, 4, 2); + test(S("bhlki"), "heatr", 6, 5, 1); + test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); + test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); + test(S("dpqbr"), "lmbtdehjrn", 6, 5, 3); + test(S("kdhmo"), "teqmcrlgib", 6, 9, 3); + test(S("jblqp"), "njolbmspac", 6, 10, 4); + test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); + test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); + test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 4); + test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, 4); + test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, 4); + test(S("jnkrfhotgl"), "", 0, 0, S::npos); + test(S("dltjfngbko"), "rqegt", 0, 0, S::npos); + test(S("bmjlpkiqde"), "dashm", 0, 1, S::npos); + test(S("skrflobnqm"), "jqirk", 0, 2, S::npos); + test(S("jkpldtshrm"), "rckeg", 0, 4, S::npos); + test(S("ghasdbnjqo"), "jscie", 0, 5, S::npos); + test(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos); + test(S("ikthdgcamf"), "gdicosleja", 0, 1, S::npos); + test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0); + test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0); + test(S("itphbqsker"), "dtablcrseo", 0, 10, S::npos); + test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos); + test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos); + test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, S::npos); + test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0); + test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0); + test(S("shbcqnmoar"), "", 1, 0, S::npos); + test(S("bdoshlmfin"), "ontrs", 1, 0, S::npos); + test(S("khfrebnsgq"), "pfkna", 1, 1, S::npos); + test(S("getcrsaoji"), "ekosa", 1, 2, 1); + test(S("fjiknedcpq"), "anqhk", 1, 4, S::npos); + test(S("tkejgnafrm"), "jekca", 1, 5, 1); + test(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos); + test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos); + test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1); + test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 0); + test(S("cigfqkated"), "sqcflrgtim", 1, 10, 1); + test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos); + test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos); + test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1); + test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1); + test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1); + test(S("ectnhskflp"), "", 5, 0, S::npos); + test(S("fgtianblpq"), "pijag", 5, 0, S::npos); + test(S("mfeqklirnh"), "jrckd", 5, 1, S::npos); + test(S("astedncjhk"), "qcloh", 5, 2, S::npos); + test(S("fhlqgcajbr"), "thlmp", 5, 4, 2); + test(S("epfhocmdng"), "qidmo", 5, 5, 4); + test(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos); + test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5); + test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, S::npos); + test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5); + test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 4); + test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos); + test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos); + test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5); + test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5); + test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5); + test(S("shoiedtcjb"), "", 9, 0, S::npos); + test(S("ebcinjgads"), "tqbnh", 9, 0, S::npos); + test(S("dqmregkcfl"), "akmle", 9, 1, S::npos); + test(S("ngcrieqajf"), "iqfkm", 9, 2, 6); + test(S("qosmilgnjb"), "tqjsr", 9, 4, 8); + test(S("ikabsjtdfl"), "jplqg", 9, 5, 9); + test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos); + test(S("fdnplotmgh"), "morkglpesn", 9, 1, 7); + test(S("fdbicojerm"), "dmicerngat", 9, 5, 9); + test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 6); + test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 5); + test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos); + test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 6); + test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 7); + test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9); + test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9); + test(S("ncjpmaekbs"), "", 10, 0, S::npos); + test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); + test(S("pqfhsgilen"), "qnpor", 10, 1, 1); + test(S("gqtjsbdckh"), "otdma", 10, 2, 2); + test(S("cfkqpjlegi"), "efhjg", 10, 4, 7); + test(S("beanrfodgj"), "odpte", 10, 5, 7); + test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); + test(S("iomkfthagj"), "oaklidrbqg", 10, 1, 1); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 9); - test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 8); - test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 9); - test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); - test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 8); - test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 9); - test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 9); - test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, 9); - test(S("cqjohampgd"), "", 11, 0, S::npos); - test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); - test(S("tjehkpsalm"), "jbrnk", 11, 1, 1); - test(S("ngfbojitcl"), "tqedg", 11, 2, 7); - test(S("rcfkdbhgjo"), "nqskp", 11, 4, 3); - test(S("qghptonrea"), "eaqkl", 11, 5, 9); - test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); - test(S("hlmgabenti"), "lsftgajqpm", 11, 1, 1); - test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 7); - test(S("jqedtkornm"), "shkncmiaqj", 11, 9, 9); - test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 9); - test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); - test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); - test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 9); - test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, 9); - test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, 9); - test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos); - test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos); - test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, S::npos); - test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, S::npos); - test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, S::npos); - test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, S::npos); - test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos); - test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, S::npos); - test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, S::npos); - test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, S::npos); - test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, S::npos); - test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos); - test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, S::npos); - test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, S::npos); - test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0); - test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0); - test(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos); - test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos); - test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, S::npos); - test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1); - test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1); - test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, S::npos); - test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos); - test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, S::npos); - test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, S::npos); - test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1); - test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1); - test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos); - test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, S::npos); - test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1); - test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1); - test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1); - test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos); - test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos); - test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, S::npos); - test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 7); - test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10); - test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 6); - test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos); - test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 9); - test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 5); - test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10); - test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 9); - test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos); - test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, S::npos); - test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10); - test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10); - test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10); - test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos); - test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos); - test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 16); - test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 7); - test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 16); - test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19); - test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos); - test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 15); - test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 17); - test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 16); - test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 16); - test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos); - test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 10); - test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19); - test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19); - test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19); - test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); - test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); - test(S("grkpahljcftesdmonqib"), "odife", 20, 1, 15); - test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 12); - test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 19); - test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 19); - test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); - test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 3); - test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 19); - test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 19); - test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 19); - test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 9); + test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 8); + test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 9); + test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); + test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 8); + test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 9); + test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 9); + test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, 9); + test(S("cqjohampgd"), "", 11, 0, S::npos); + test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); + test(S("tjehkpsalm"), "jbrnk", 11, 1, 1); + test(S("ngfbojitcl"), "tqedg", 11, 2, 7); + test(S("rcfkdbhgjo"), "nqskp", 11, 4, 3); + test(S("qghptonrea"), "eaqkl", 11, 5, 9); + test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); + test(S("hlmgabenti"), "lsftgajqpm", 11, 1, 1); + test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 7); + test(S("jqedtkornm"), "shkncmiaqj", 11, 9, 9); + test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 9); + test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); + test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); + test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 9); + test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, 9); + test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, 9); + test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos); + test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos); + test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, S::npos); + test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, S::npos); + test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, S::npos); + test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, S::npos); + test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos); + test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, S::npos); + test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, S::npos); + test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, S::npos); + test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, S::npos); + test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos); + test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, S::npos); + test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, S::npos); + test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0); + test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0); + test(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos); + test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos); + test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, S::npos); + test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1); + test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1); + test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, S::npos); + test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos); + test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, S::npos); + test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, S::npos); + test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1); + test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1); + test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos); + test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, S::npos); + test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1); + test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1); + test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1); + test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos); + test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos); + test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, S::npos); + test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 7); + test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10); + test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 6); + test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos); + test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 9); + test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 5); + test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10); + test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 9); + test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos); + test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, S::npos); + test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10); + test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10); + test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10); + test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos); + test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos); + test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 16); + test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 7); + test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 16); + test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19); + test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos); + test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 15); + test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 17); + test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 16); + test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 16); + test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos); + test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 10); + test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19); + test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19); + test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19); + test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); + test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); + test(S("grkpahljcftesdmonqib"), "odife", 20, 1, 15); + test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 12); + test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 19); + test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 19); + test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); + test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 3); + test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 19); + test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 19); + test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 19); + test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); } template -TEST_CONSTEXPR_CXX20 void test3() -{ - test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 4); - test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 17); - test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 19); - test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, 19); - test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); - test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); - test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 6); - test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 13); - test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 10); - test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 17); - test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); - test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 14); - test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 19); - test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 14); - test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 16); - test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); - test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 17); - test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 17); - test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 19); - test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, 19); +TEST_CONSTEXPR_CXX20 void test3() { + test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 4); + test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 17); + test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 19); + test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, 19); + test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); + test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); + test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 6); + test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 13); + test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 10); + test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 17); + test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); + test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 14); + test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 19); + test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 14); + test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 16); + test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); + test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 17); + test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 17); + test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 19); + test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, 19); } TEST_CONSTEXPR_CXX20 bool test() { @@ -388,8 +386,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos)); - assert(s.find_last_of(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos)); + assert(s.find_last_of(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str)); - assert(s.find_last_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str)); + assert(s.find_last_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), S(""), 0, S::npos); - test(S(""), S("laenf"), 0, S::npos); - test(S(""), S("pqlnkmbdjo"), 0, S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("bjaht"), 1, S::npos); - test(S(""), S("hjlcmgpket"), 1, S::npos); - test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), S(""), 0, S::npos); - test(S("qanej"), S("dfkap"), 0, S::npos); - test(S("clbao"), S("ihqrfebgad"), 0, S::npos); - test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, 0); - test(S("srdfq"), S(""), 1, S::npos); - test(S("oemth"), S("ikcrq"), 1, S::npos); - test(S("cdaih"), S("dmajblfhsg"), 1, 1); - test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, 1); - test(S("cshmd"), S(""), 2, S::npos); - test(S("lhcdo"), S("oebqi"), 2, S::npos); - test(S("qnsoh"), S("kojhpmbsfe"), 2, 2); - test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, 2); - test(S("fmtsp"), S(""), 4, S::npos); - test(S("khbpm"), S("aobjd"), 4, 2); - test(S("pbsji"), S("pcbahntsje"), 4, 3); - test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, 4); - test(S("eqmpa"), S(""), 5, S::npos); - test(S("omigs"), S("kocgb"), 5, 3); - test(S("onmje"), S("fbslrjiqkm"), 5, 3); - test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, 4); - test(S("schfa"), S(""), 6, S::npos); - test(S("igdsc"), S("qngpd"), 6, 2); - test(S("brqgo"), S("rodhqklgmb"), 6, 4); - test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, 4); - test(S("hcjitbfapl"), S(""), 0, S::npos); - test(S("daiprenocl"), S("ashjd"), 0, 0); - test(S("litpcfdghe"), S("mgojkldsqh"), 0, 0); - test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, 0); - test(S("qpghtfbaji"), S(""), 1, S::npos); - test(S("gfshlcmdjr"), S("nadkh"), 1, S::npos); - test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 1); - test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, 1); - test(S("crnklpmegd"), S(""), 5, S::npos); - test(S("jsbtafedoc"), S("prqgn"), 5, S::npos); - test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 5); - test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, 5); - test(S("lmofqdhpki"), S(""), 9, S::npos); - test(S("hnefkqimca"), S("rtjpa"), 9, 9); - test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 7); - test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, 9); - test(S("elgofjmbrq"), S(""), 10, S::npos); - test(S("mjqdgalkpc"), S("dplqa"), 10, 8); - test(S("kthqnfcerm"), S("dkacjoptns"), 10, 6); - test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, 9); - test(S("eqsgalomhb"), S(""), 11, S::npos); - test(S("akiteljmoh"), S("lofbc"), 11, 8); - test(S("hlbdfreqjo"), S("astoegbfpn"), 11, 9); - test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, 9); - test(S("snafbdlghrjkpqtoceim"), S(""), 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, S::npos); - test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 0); - test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, 0); - test(S("jlnkraeodhcspfgbqitm"), S(""), 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, S::npos); - test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 1); - test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, 1); - test(S("hdpkobnsalmcfijregtq"), S(""), 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 10); - test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, 10); - test(S("niptglfbosehkamrdqcj"), S(""), 19, S::npos); - test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 16); - test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 19); - test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, 19); - test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, 19); - test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, 18); - test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, 19); - test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, 12); - test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, 17); - test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, 19); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), S(""), 0, S::npos); + test(S(""), S("laenf"), 0, S::npos); + test(S(""), S("pqlnkmbdjo"), 0, S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("bjaht"), 1, S::npos); + test(S(""), S("hjlcmgpket"), 1, S::npos); + test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), S(""), 0, S::npos); + test(S("qanej"), S("dfkap"), 0, S::npos); + test(S("clbao"), S("ihqrfebgad"), 0, S::npos); + test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, 0); + test(S("srdfq"), S(""), 1, S::npos); + test(S("oemth"), S("ikcrq"), 1, S::npos); + test(S("cdaih"), S("dmajblfhsg"), 1, 1); + test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, 1); + test(S("cshmd"), S(""), 2, S::npos); + test(S("lhcdo"), S("oebqi"), 2, S::npos); + test(S("qnsoh"), S("kojhpmbsfe"), 2, 2); + test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, 2); + test(S("fmtsp"), S(""), 4, S::npos); + test(S("khbpm"), S("aobjd"), 4, 2); + test(S("pbsji"), S("pcbahntsje"), 4, 3); + test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, 4); + test(S("eqmpa"), S(""), 5, S::npos); + test(S("omigs"), S("kocgb"), 5, 3); + test(S("onmje"), S("fbslrjiqkm"), 5, 3); + test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, 4); + test(S("schfa"), S(""), 6, S::npos); + test(S("igdsc"), S("qngpd"), 6, 2); + test(S("brqgo"), S("rodhqklgmb"), 6, 4); + test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, 4); + test(S("hcjitbfapl"), S(""), 0, S::npos); + test(S("daiprenocl"), S("ashjd"), 0, 0); + test(S("litpcfdghe"), S("mgojkldsqh"), 0, 0); + test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, 0); + test(S("qpghtfbaji"), S(""), 1, S::npos); + test(S("gfshlcmdjr"), S("nadkh"), 1, S::npos); + test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 1); + test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, 1); + test(S("crnklpmegd"), S(""), 5, S::npos); + test(S("jsbtafedoc"), S("prqgn"), 5, S::npos); + test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 5); + test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, 5); + test(S("lmofqdhpki"), S(""), 9, S::npos); + test(S("hnefkqimca"), S("rtjpa"), 9, 9); + test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 7); + test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, 9); + test(S("elgofjmbrq"), S(""), 10, S::npos); + test(S("mjqdgalkpc"), S("dplqa"), 10, 8); + test(S("kthqnfcerm"), S("dkacjoptns"), 10, 6); + test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, 9); + test(S("eqsgalomhb"), S(""), 11, S::npos); + test(S("akiteljmoh"), S("lofbc"), 11, 8); + test(S("hlbdfreqjo"), S("astoegbfpn"), 11, 9); + test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, 9); + test(S("snafbdlghrjkpqtoceim"), S(""), 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, S::npos); + test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 0); + test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, 0); + test(S("jlnkraeodhcspfgbqitm"), S(""), 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, S::npos); + test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 1); + test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, 1); + test(S("hdpkobnsalmcfijregtq"), S(""), 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 10); + test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, 10); + test(S("niptglfbosehkamrdqcj"), S(""), 19, S::npos); + test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 16); + test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 19); + test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, 19); + test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, 19); + test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, 18); + test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, 19); + test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, 12); + test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, 17); + test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, 19); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), S(""), S::npos); - test(S(""), S("laenf"), S::npos); - test(S(""), S("pqlnkmbdjo"), S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), S(""), S::npos); - test(S("lahfb"), S("irkhs"), 2); - test(S("gmfhd"), S("kantesmpgj"), 1); - test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), 4); - test(S("eolhfgpjqk"), S(""), S::npos); - test(S("nbatdlmekr"), S("bnrpe"), 9); - test(S("jdmciepkaq"), S("jtdaefblso"), 8); - test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), 9); - test(S("gprdcokbnjhlsfmtieqa"), S(""), S::npos); - test(S("qjghlnftcaismkropdeb"), S("bjaht"), 19); - test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 19); - test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 19); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), S(""), S::npos); + test(S(""), S("laenf"), S::npos); + test(S(""), S("pqlnkmbdjo"), S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), S(""), S::npos); + test(S("lahfb"), S("irkhs"), 2); + test(S("gmfhd"), S("kantesmpgj"), 1); + test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), 4); + test(S("eolhfgpjqk"), S(""), S::npos); + test(S("nbatdlmekr"), S("bnrpe"), 9); + test(S("jdmciepkaq"), S("jtdaefblso"), 8); + test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), 9); + test(S("gprdcokbnjhlsfmtieqa"), S(""), S::npos); + test(S("qjghlnftcaismkropdeb"), S("bjaht"), 19); + test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 19); + test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 19); } TEST_CONSTEXPR_CXX20 bool test() { @@ -166,8 +160,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find.last.of/string_view_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(sv, pos)); - assert(s.find_last_of(sv, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(sv, pos)); + assert(s.find_last_of(sv, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(sv)); - assert(s.find_last_of(sv) == x); - if (x != S::npos) - assert(x < s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(sv)); + assert(s.find_last_of(sv) == x); + if (x != S::npos) + assert(x < s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), SV(""), 0, S::npos); - test(S(""), SV("laenf"), 0, S::npos); - test(S(""), SV("pqlnkmbdjo"), 0, S::npos); - test(S(""), SV("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), SV(""), 1, S::npos); - test(S(""), SV("bjaht"), 1, S::npos); - test(S(""), SV("hjlcmgpket"), 1, S::npos); - test(S(""), SV("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), SV(""), 0, S::npos); - test(S("qanej"), SV("dfkap"), 0, S::npos); - test(S("clbao"), SV("ihqrfebgad"), 0, S::npos); - test(S("mekdn"), SV("ngtjfcalbseiqrphmkdo"), 0, 0); - test(S("srdfq"), SV(""), 1, S::npos); - test(S("oemth"), SV("ikcrq"), 1, S::npos); - test(S("cdaih"), SV("dmajblfhsg"), 1, 1); - test(S("qohtk"), SV("oqftjhdmkgsblacenirp"), 1, 1); - test(S("cshmd"), SV(""), 2, S::npos); - test(S("lhcdo"), SV("oebqi"), 2, S::npos); - test(S("qnsoh"), SV("kojhpmbsfe"), 2, 2); - test(S("pkrof"), SV("acbsjqogpltdkhinfrem"), 2, 2); - test(S("fmtsp"), SV(""), 4, S::npos); - test(S("khbpm"), SV("aobjd"), 4, 2); - test(S("pbsji"), SV("pcbahntsje"), 4, 3); - test(S("mprdj"), SV("fhepcrntkoagbmldqijs"), 4, 4); - test(S("eqmpa"), SV(""), 5, S::npos); - test(S("omigs"), SV("kocgb"), 5, 3); - test(S("onmje"), SV("fbslrjiqkm"), 5, 3); - test(S("oqmrj"), SV("jeidpcmalhfnqbgtrsko"), 5, 4); - test(S("schfa"), SV(""), 6, S::npos); - test(S("igdsc"), SV("qngpd"), 6, 2); - test(S("brqgo"), SV("rodhqklgmb"), 6, 4); - test(S("tnrph"), SV("thdjgafrlbkoiqcspmne"), 6, 4); - test(S("hcjitbfapl"), SV(""), 0, S::npos); - test(S("daiprenocl"), SV("ashjd"), 0, 0); - test(S("litpcfdghe"), SV("mgojkldsqh"), 0, 0); - test(S("aidjksrolc"), SV("imqnaghkfrdtlopbjesc"), 0, 0); - test(S("qpghtfbaji"), SV(""), 1, S::npos); - test(S("gfshlcmdjr"), SV("nadkh"), 1, S::npos); - test(S("nkodajteqp"), SV("ofdrqmkebl"), 1, 1); - test(S("gbmetiprqd"), SV("bdfjqgatlksriohemnpc"), 1, 1); - test(S("crnklpmegd"), SV(""), 5, S::npos); - test(S("jsbtafedoc"), SV("prqgn"), 5, S::npos); - test(S("qnmodrtkeb"), SV("pejafmnokr"), 5, 5); - test(S("cpebqsfmnj"), SV("odnqkgijrhabfmcestlp"), 5, 5); - test(S("lmofqdhpki"), SV(""), 9, S::npos); - test(S("hnefkqimca"), SV("rtjpa"), 9, 9); - test(S("drtasbgmfp"), SV("ktsrmnqagd"), 9, 7); - test(S("lsaijeqhtr"), SV("rtdhgcisbnmoaqkfpjle"), 9, 9); - test(S("elgofjmbrq"), SV(""), 10, S::npos); - test(S("mjqdgalkpc"), SV("dplqa"), 10, 8); - test(S("kthqnfcerm"), SV("dkacjoptns"), 10, 6); - test(S("dfsjhanorc"), SV("hqfimtrgnbekpdcsjalo"), 10, 9); - test(S("eqsgalomhb"), SV(""), 11, S::npos); - test(S("akiteljmoh"), SV("lofbc"), 11, 8); - test(S("hlbdfreqjo"), SV("astoegbfpn"), 11, 9); - test(S("taqobhlerg"), SV("pdgreqomsncafklhtibj"), 11, 9); - test(S("snafbdlghrjkpqtoceim"), SV(""), 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), SV("lbtqd"), 0, S::npos); - test(S("pnracgfkjdiholtbqsem"), SV("tboimldpjh"), 0, 0); - test(S("dicfltehbsgrmojnpkaq"), SV("slcerthdaiqjfnobgkpm"), 0, 0); - test(S("jlnkraeodhcspfgbqitm"), SV(""), 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), SV("aqibs"), 1, S::npos); - test(S("rbtaqjhgkneisldpmfoc"), SV("gtfblmqinc"), 1, 1); - test(S("gpifsqlrdkbonjtmheca"), SV("mkqpbtdalgniorhfescj"), 1, 1); - test(S("hdpkobnsalmcfijregtq"), SV(""), 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), SV("pblas"), 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), SV("arosdhcfme"), 10, 10); - test(S("crsplifgtqedjohnabmk"), SV("blkhjeogicatqfnpdmsr"), 10, 10); - test(S("niptglfbosehkamrdqcj"), SV(""), 19, S::npos); - test(S("copqdhstbingamjfkler"), SV("djkqc"), 19, 16); - test(S("mrtaefilpdsgocnhqbjk"), SV("lgokshjtpb"), 19, 19); - test(S("kojatdhlcmigpbfrqnes"), SV("bqjhtkfepimcnsgrlado"), 19, 19); - test(S("eaintpchlqsbdgrkjofm"), SV(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), SV("nocfa"), 20, 19); - test(S("spocfaktqdbiejlhngmr"), SV("bgtajmiedc"), 20, 18); - test(S("rphmlekgfscndtaobiqj"), SV("lsckfnqgdahejiopbtmr"), 20, 19); - test(S("liatsqdoegkmfcnbhrpj"), SV(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), SV("gfsrt"), 21, 12); - test(S("latkmisecnorjbfhqpdg"), SV("pfsocbhjtm"), 21, 17); - test(S("lecfratdjkhnsmqpoigb"), SV("tpflmdnoicjgkberhqsa"), 21, 19); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), SV(""), 0, S::npos); + test(S(""), SV("laenf"), 0, S::npos); + test(S(""), SV("pqlnkmbdjo"), 0, S::npos); + test(S(""), SV("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), SV(""), 1, S::npos); + test(S(""), SV("bjaht"), 1, S::npos); + test(S(""), SV("hjlcmgpket"), 1, S::npos); + test(S(""), SV("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), SV(""), 0, S::npos); + test(S("qanej"), SV("dfkap"), 0, S::npos); + test(S("clbao"), SV("ihqrfebgad"), 0, S::npos); + test(S("mekdn"), SV("ngtjfcalbseiqrphmkdo"), 0, 0); + test(S("srdfq"), SV(""), 1, S::npos); + test(S("oemth"), SV("ikcrq"), 1, S::npos); + test(S("cdaih"), SV("dmajblfhsg"), 1, 1); + test(S("qohtk"), SV("oqftjhdmkgsblacenirp"), 1, 1); + test(S("cshmd"), SV(""), 2, S::npos); + test(S("lhcdo"), SV("oebqi"), 2, S::npos); + test(S("qnsoh"), SV("kojhpmbsfe"), 2, 2); + test(S("pkrof"), SV("acbsjqogpltdkhinfrem"), 2, 2); + test(S("fmtsp"), SV(""), 4, S::npos); + test(S("khbpm"), SV("aobjd"), 4, 2); + test(S("pbsji"), SV("pcbahntsje"), 4, 3); + test(S("mprdj"), SV("fhepcrntkoagbmldqijs"), 4, 4); + test(S("eqmpa"), SV(""), 5, S::npos); + test(S("omigs"), SV("kocgb"), 5, 3); + test(S("onmje"), SV("fbslrjiqkm"), 5, 3); + test(S("oqmrj"), SV("jeidpcmalhfnqbgtrsko"), 5, 4); + test(S("schfa"), SV(""), 6, S::npos); + test(S("igdsc"), SV("qngpd"), 6, 2); + test(S("brqgo"), SV("rodhqklgmb"), 6, 4); + test(S("tnrph"), SV("thdjgafrlbkoiqcspmne"), 6, 4); + test(S("hcjitbfapl"), SV(""), 0, S::npos); + test(S("daiprenocl"), SV("ashjd"), 0, 0); + test(S("litpcfdghe"), SV("mgojkldsqh"), 0, 0); + test(S("aidjksrolc"), SV("imqnaghkfrdtlopbjesc"), 0, 0); + test(S("qpghtfbaji"), SV(""), 1, S::npos); + test(S("gfshlcmdjr"), SV("nadkh"), 1, S::npos); + test(S("nkodajteqp"), SV("ofdrqmkebl"), 1, 1); + test(S("gbmetiprqd"), SV("bdfjqgatlksriohemnpc"), 1, 1); + test(S("crnklpmegd"), SV(""), 5, S::npos); + test(S("jsbtafedoc"), SV("prqgn"), 5, S::npos); + test(S("qnmodrtkeb"), SV("pejafmnokr"), 5, 5); + test(S("cpebqsfmnj"), SV("odnqkgijrhabfmcestlp"), 5, 5); + test(S("lmofqdhpki"), SV(""), 9, S::npos); + test(S("hnefkqimca"), SV("rtjpa"), 9, 9); + test(S("drtasbgmfp"), SV("ktsrmnqagd"), 9, 7); + test(S("lsaijeqhtr"), SV("rtdhgcisbnmoaqkfpjle"), 9, 9); + test(S("elgofjmbrq"), SV(""), 10, S::npos); + test(S("mjqdgalkpc"), SV("dplqa"), 10, 8); + test(S("kthqnfcerm"), SV("dkacjoptns"), 10, 6); + test(S("dfsjhanorc"), SV("hqfimtrgnbekpdcsjalo"), 10, 9); + test(S("eqsgalomhb"), SV(""), 11, S::npos); + test(S("akiteljmoh"), SV("lofbc"), 11, 8); + test(S("hlbdfreqjo"), SV("astoegbfpn"), 11, 9); + test(S("taqobhlerg"), SV("pdgreqomsncafklhtibj"), 11, 9); + test(S("snafbdlghrjkpqtoceim"), SV(""), 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), SV("lbtqd"), 0, S::npos); + test(S("pnracgfkjdiholtbqsem"), SV("tboimldpjh"), 0, 0); + test(S("dicfltehbsgrmojnpkaq"), SV("slcerthdaiqjfnobgkpm"), 0, 0); + test(S("jlnkraeodhcspfgbqitm"), SV(""), 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), SV("aqibs"), 1, S::npos); + test(S("rbtaqjhgkneisldpmfoc"), SV("gtfblmqinc"), 1, 1); + test(S("gpifsqlrdkbonjtmheca"), SV("mkqpbtdalgniorhfescj"), 1, 1); + test(S("hdpkobnsalmcfijregtq"), SV(""), 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), SV("pblas"), 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), SV("arosdhcfme"), 10, 10); + test(S("crsplifgtqedjohnabmk"), SV("blkhjeogicatqfnpdmsr"), 10, 10); + test(S("niptglfbosehkamrdqcj"), SV(""), 19, S::npos); + test(S("copqdhstbingamjfkler"), SV("djkqc"), 19, 16); + test(S("mrtaefilpdsgocnhqbjk"), SV("lgokshjtpb"), 19, 19); + test(S("kojatdhlcmigpbfrqnes"), SV("bqjhtkfepimcnsgrlado"), 19, 19); + test(S("eaintpchlqsbdgrkjofm"), SV(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), SV("nocfa"), 20, 19); + test(S("spocfaktqdbiejlhngmr"), SV("bgtajmiedc"), 20, 18); + test(S("rphmlekgfscndtaobiqj"), SV("lsckfnqgdahejiopbtmr"), 20, 19); + test(S("liatsqdoegkmfcnbhrpj"), SV(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), SV("gfsrt"), 21, 12); + test(S("latkmisecnorjbfhqpdg"), SV("pfsocbhjtm"), 21, 17); + test(S("lecfratdjkhnsmqpoigb"), SV("tpflmdnoicjgkberhqsa"), 21, 19); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), SV(""), S::npos); - test(S(""), SV("laenf"), S::npos); - test(S(""), SV("pqlnkmbdjo"), S::npos); - test(S(""), SV("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), SV(""), S::npos); - test(S("lahfb"), SV("irkhs"), 2); - test(S("gmfhd"), SV("kantesmpgj"), 1); - test(S("odaft"), SV("oknlrstdpiqmjbaghcfe"), 4); - test(S("eolhfgpjqk"), SV(""), S::npos); - test(S("nbatdlmekr"), SV("bnrpe"), 9); - test(S("jdmciepkaq"), SV("jtdaefblso"), 8); - test(S("hkbgspoflt"), SV("oselktgbcapndfjihrmq"), 9); - test(S("gprdcokbnjhlsfmtieqa"), SV(""), S::npos); - test(S("qjghlnftcaismkropdeb"), SV("bjaht"), 19); - test(S("pnalfrdtkqcmojiesbhg"), SV("hjlcmgpket"), 19); - test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), 19); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), SV(""), S::npos); + test(S(""), SV("laenf"), S::npos); + test(S(""), SV("pqlnkmbdjo"), S::npos); + test(S(""), SV("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), SV(""), S::npos); + test(S("lahfb"), SV("irkhs"), 2); + test(S("gmfhd"), SV("kantesmpgj"), 1); + test(S("odaft"), SV("oknlrstdpiqmjbaghcfe"), 4); + test(S("eolhfgpjqk"), SV(""), S::npos); + test(S("nbatdlmekr"), SV("bnrpe"), 9); + test(S("jdmciepkaq"), SV("jtdaefblso"), 8); + test(S("hkbgspoflt"), SV("oselktgbcapndfjihrmq"), 9); + test(S("gprdcokbnjhlsfmtieqa"), SV(""), S::npos); + test(S("qjghlnftcaismkropdeb"), SV("bjaht"), 19); + test(S("pnalfrdtkqcmojiesbhg"), SV("hjlcmgpket"), 19); + test(S("pniotcfrhqsmgdkjbael"), SV("htaobedqikfplcgjsmrn"), 19); } TEST_CONSTEXPR_CXX20 bool test() { @@ -161,8 +155,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/char_size.pass.cpp @@ -18,23 +18,19 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(c, pos)); - assert(s.find(c, pos) == x); - if (x != S::npos) - assert(pos <= x && x + 1 <= s.size()); +test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(c, pos)); + assert(s.find(c, pos) == x); + if (x != S::npos) + assert(pos <= x && x + 1 <= s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(c)); - assert(s.find(c) == x); - if (x != S::npos) - assert(0 <= x && x + 1 <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(c)); + assert(s.find(c) == x); + if (x != S::npos) + assert(0 <= x && x + 1 <= s.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -100,8 +96,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size.pass.cpp @@ -18,135 +18,127 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos)); - assert(s.find(str, pos) == x); - if (x != S::npos) - { - typename S::size_type n = S::traits_type::length(str); - assert(pos <= x && x + n <= s.size()); - } +test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos)); + assert(s.find(str, pos) == x); + if (x != S::npos) { + typename S::size_type n = S::traits_type::length(str); + assert(pos <= x && x + n <= s.size()); + } } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str)); - assert(s.find(str) == x); - if (x != S::npos) - { - typename S::size_type n = S::traits_type::length(str); - assert(0 <= x && x + n <= s.size()); - } +TEST_CONSTEXPR_CXX20 void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str)); + assert(s.find(str) == x); + if (x != S::npos) { + typename S::size_type n = S::traits_type::length(str); + assert(0 <= x && x + n <= s.size()); + } } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, 0); - test(S(""), "abcde", 0, S::npos); - test(S(""), "abcdeabcde", 0, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "abcde", 1, S::npos); - test(S(""), "abcdeabcde", 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcde"), "", 0, 0); - test(S("abcde"), "abcde", 0, 0); - test(S("abcde"), "abcdeabcde", 0, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S("abcde"), "", 1, 1); - test(S("abcde"), "abcde", 1, S::npos); - test(S("abcde"), "abcdeabcde", 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcde"), "", 2, 2); - test(S("abcde"), "abcde", 2, S::npos); - test(S("abcde"), "abcdeabcde", 2, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, S::npos); - test(S("abcde"), "", 4, 4); - test(S("abcde"), "abcde", 4, S::npos); - test(S("abcde"), "abcdeabcde", 4, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, S::npos); - test(S("abcde"), "", 5, 5); - test(S("abcde"), "abcde", 5, S::npos); - test(S("abcde"), "abcdeabcde", 5, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, S::npos); - test(S("abcde"), "", 6, S::npos); - test(S("abcde"), "abcde", 6, S::npos); - test(S("abcde"), "abcdeabcde", 6, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, S::npos); - test(S("abcdeabcde"), "", 0, 0); - test(S("abcdeabcde"), "abcde", 0, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S("abcdeabcde"), "", 1, 1); - test(S("abcdeabcde"), "abcde", 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 1, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcdeabcde"), "", 5, 5); - test(S("abcdeabcde"), "abcde", 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, S::npos); - test(S("abcdeabcde"), "", 9, 9); - test(S("abcdeabcde"), "abcde", 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, S::npos); - test(S("abcdeabcde"), "", 10, 10); - test(S("abcdeabcde"), "abcde", 10, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); - test(S("abcdeabcde"), "", 11, S::npos); - test(S("abcdeabcde"), "abcde", 11, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "", 1, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 19, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 20, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, 0); + test(S(""), "abcde", 0, S::npos); + test(S(""), "abcdeabcde", 0, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "abcde", 1, S::npos); + test(S(""), "abcdeabcde", 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcde"), "", 0, 0); + test(S("abcde"), "abcde", 0, 0); + test(S("abcde"), "abcdeabcde", 0, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S("abcde"), "", 1, 1); + test(S("abcde"), "abcde", 1, S::npos); + test(S("abcde"), "abcdeabcde", 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcde"), "", 2, 2); + test(S("abcde"), "abcde", 2, S::npos); + test(S("abcde"), "abcdeabcde", 2, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, S::npos); + test(S("abcde"), "", 4, 4); + test(S("abcde"), "abcde", 4, S::npos); + test(S("abcde"), "abcdeabcde", 4, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, S::npos); + test(S("abcde"), "", 5, 5); + test(S("abcde"), "abcde", 5, S::npos); + test(S("abcde"), "abcdeabcde", 5, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, S::npos); + test(S("abcde"), "", 6, S::npos); + test(S("abcde"), "abcde", 6, S::npos); + test(S("abcde"), "abcdeabcde", 6, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, S::npos); + test(S("abcdeabcde"), "", 0, 0); + test(S("abcdeabcde"), "abcde", 0, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S("abcdeabcde"), "", 1, 1); + test(S("abcdeabcde"), "abcde", 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 1, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcdeabcde"), "", 5, 5); + test(S("abcdeabcde"), "abcde", 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, S::npos); + test(S("abcdeabcde"), "", 9, 9); + test(S("abcdeabcde"), "abcde", 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, S::npos); + test(S("abcdeabcde"), "", 10, 10); + test(S("abcdeabcde"), "abcde", 10, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); + test(S("abcdeabcde"), "", 11, S::npos); + test(S("abcdeabcde"), "abcde", 11, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "", 1, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 19, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 20, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), "", 0); - test(S(""), "abcde", S::npos); - test(S(""), "abcdeabcde", S::npos); - test(S(""), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcde"), "", 0); - test(S("abcde"), "abcde", 0); - test(S("abcde"), "abcdeabcde", S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcdeabcde"), "", 0); - test(S("abcdeabcde"), "abcde", 0); - test(S("abcdeabcde"), "abcdeabcde", 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), "", 0); + test(S(""), "abcde", S::npos); + test(S(""), "abcdeabcde", S::npos); + test(S(""), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcde"), "", 0); + test(S("abcde"), "abcde", 0); + test(S("abcde"), "abcdeabcde", S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcdeabcde"), "", 0); + test(S("abcdeabcde"), "abcde", 0); + test(S("abcdeabcde"), "abcdeabcde", 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -166,8 +158,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/pointer_size_size.pass.cpp @@ -18,353 +18,351 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos, n)); - assert(s.find(str, pos, n) == x); - if (x != S::npos) - assert(pos <= x && x + n <= s.size()); +test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos, n)); + assert(s.find(str, pos, n) == x); + if (x != S::npos) + assert(pos <= x && x + n <= s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, 0, 0); - test(S(""), "abcde", 0, 0, 0); - test(S(""), "abcde", 0, 1, S::npos); - test(S(""), "abcde", 0, 2, S::npos); - test(S(""), "abcde", 0, 4, S::npos); - test(S(""), "abcde", 0, 5, S::npos); - test(S(""), "abcdeabcde", 0, 0, 0); - test(S(""), "abcdeabcde", 0, 1, S::npos); - test(S(""), "abcdeabcde", 0, 5, S::npos); - test(S(""), "abcdeabcde", 0, 9, S::npos); - test(S(""), "abcdeabcde", 0, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "abcde", 1, 0, S::npos); - test(S(""), "abcde", 1, 1, S::npos); - test(S(""), "abcde", 1, 2, S::npos); - test(S(""), "abcde", 1, 4, S::npos); - test(S(""), "abcde", 1, 5, S::npos); - test(S(""), "abcdeabcde", 1, 0, S::npos); - test(S(""), "abcdeabcde", 1, 1, S::npos); - test(S(""), "abcdeabcde", 1, 5, S::npos); - test(S(""), "abcdeabcde", 1, 9, S::npos); - test(S(""), "abcdeabcde", 1, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 0, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcde"), "", 0, 0, 0); - test(S("abcde"), "abcde", 0, 0, 0); - test(S("abcde"), "abcde", 0, 1, 0); - test(S("abcde"), "abcde", 0, 2, 0); - test(S("abcde"), "abcde", 0, 4, 0); - test(S("abcde"), "abcde", 0, 5, 0); - test(S("abcde"), "abcdeabcde", 0, 0, 0); - test(S("abcde"), "abcdeabcde", 0, 1, 0); - test(S("abcde"), "abcdeabcde", 0, 5, 0); - test(S("abcde"), "abcdeabcde", 0, 9, S::npos); - test(S("abcde"), "abcdeabcde", 0, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S("abcde"), "", 1, 0, 1); - test(S("abcde"), "abcde", 1, 0, 1); - test(S("abcde"), "abcde", 1, 1, S::npos); - test(S("abcde"), "abcde", 1, 2, S::npos); - test(S("abcde"), "abcde", 1, 4, S::npos); - test(S("abcde"), "abcde", 1, 5, S::npos); - test(S("abcde"), "abcdeabcde", 1, 0, 1); - test(S("abcde"), "abcdeabcde", 1, 1, S::npos); - test(S("abcde"), "abcdeabcde", 1, 5, S::npos); - test(S("abcde"), "abcdeabcde", 1, 9, S::npos); - test(S("abcde"), "abcdeabcde", 1, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcde"), "", 2, 0, 2); - test(S("abcde"), "abcde", 2, 0, 2); - test(S("abcde"), "abcde", 2, 1, S::npos); - test(S("abcde"), "abcde", 2, 2, S::npos); - test(S("abcde"), "abcde", 2, 4, S::npos); - test(S("abcde"), "abcde", 2, 5, S::npos); - test(S("abcde"), "abcdeabcde", 2, 0, 2); - test(S("abcde"), "abcdeabcde", 2, 1, S::npos); - test(S("abcde"), "abcdeabcde", 2, 5, S::npos); - test(S("abcde"), "abcdeabcde", 2, 9, S::npos); - test(S("abcde"), "abcdeabcde", 2, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos); - test(S("abcde"), "", 4, 0, 4); - test(S("abcde"), "abcde", 4, 0, 4); - test(S("abcde"), "abcde", 4, 1, S::npos); - test(S("abcde"), "abcde", 4, 2, S::npos); - test(S("abcde"), "abcde", 4, 4, S::npos); - test(S("abcde"), "abcde", 4, 5, S::npos); - test(S("abcde"), "abcdeabcde", 4, 0, 4); - test(S("abcde"), "abcdeabcde", 4, 1, S::npos); - test(S("abcde"), "abcdeabcde", 4, 5, S::npos); - test(S("abcde"), "abcdeabcde", 4, 9, S::npos); - test(S("abcde"), "abcdeabcde", 4, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos); - test(S("abcde"), "", 5, 0, 5); - test(S("abcde"), "abcde", 5, 0, 5); - test(S("abcde"), "abcde", 5, 1, S::npos); - test(S("abcde"), "abcde", 5, 2, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, 0, 0); + test(S(""), "abcde", 0, 0, 0); + test(S(""), "abcde", 0, 1, S::npos); + test(S(""), "abcde", 0, 2, S::npos); + test(S(""), "abcde", 0, 4, S::npos); + test(S(""), "abcde", 0, 5, S::npos); + test(S(""), "abcdeabcde", 0, 0, 0); + test(S(""), "abcdeabcde", 0, 1, S::npos); + test(S(""), "abcdeabcde", 0, 5, S::npos); + test(S(""), "abcdeabcde", 0, 9, S::npos); + test(S(""), "abcdeabcde", 0, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "abcde", 1, 0, S::npos); + test(S(""), "abcde", 1, 1, S::npos); + test(S(""), "abcde", 1, 2, S::npos); + test(S(""), "abcde", 1, 4, S::npos); + test(S(""), "abcde", 1, 5, S::npos); + test(S(""), "abcdeabcde", 1, 0, S::npos); + test(S(""), "abcdeabcde", 1, 1, S::npos); + test(S(""), "abcdeabcde", 1, 5, S::npos); + test(S(""), "abcdeabcde", 1, 9, S::npos); + test(S(""), "abcdeabcde", 1, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 0, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcde"), "", 0, 0, 0); + test(S("abcde"), "abcde", 0, 0, 0); + test(S("abcde"), "abcde", 0, 1, 0); + test(S("abcde"), "abcde", 0, 2, 0); + test(S("abcde"), "abcde", 0, 4, 0); + test(S("abcde"), "abcde", 0, 5, 0); + test(S("abcde"), "abcdeabcde", 0, 0, 0); + test(S("abcde"), "abcdeabcde", 0, 1, 0); + test(S("abcde"), "abcdeabcde", 0, 5, 0); + test(S("abcde"), "abcdeabcde", 0, 9, S::npos); + test(S("abcde"), "abcdeabcde", 0, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S("abcde"), "", 1, 0, 1); + test(S("abcde"), "abcde", 1, 0, 1); + test(S("abcde"), "abcde", 1, 1, S::npos); + test(S("abcde"), "abcde", 1, 2, S::npos); + test(S("abcde"), "abcde", 1, 4, S::npos); + test(S("abcde"), "abcde", 1, 5, S::npos); + test(S("abcde"), "abcdeabcde", 1, 0, 1); + test(S("abcde"), "abcdeabcde", 1, 1, S::npos); + test(S("abcde"), "abcdeabcde", 1, 5, S::npos); + test(S("abcde"), "abcdeabcde", 1, 9, S::npos); + test(S("abcde"), "abcdeabcde", 1, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcde"), "", 2, 0, 2); + test(S("abcde"), "abcde", 2, 0, 2); + test(S("abcde"), "abcde", 2, 1, S::npos); + test(S("abcde"), "abcde", 2, 2, S::npos); + test(S("abcde"), "abcde", 2, 4, S::npos); + test(S("abcde"), "abcde", 2, 5, S::npos); + test(S("abcde"), "abcdeabcde", 2, 0, 2); + test(S("abcde"), "abcdeabcde", 2, 1, S::npos); + test(S("abcde"), "abcdeabcde", 2, 5, S::npos); + test(S("abcde"), "abcdeabcde", 2, 9, S::npos); + test(S("abcde"), "abcdeabcde", 2, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos); + test(S("abcde"), "", 4, 0, 4); + test(S("abcde"), "abcde", 4, 0, 4); + test(S("abcde"), "abcde", 4, 1, S::npos); + test(S("abcde"), "abcde", 4, 2, S::npos); + test(S("abcde"), "abcde", 4, 4, S::npos); + test(S("abcde"), "abcde", 4, 5, S::npos); + test(S("abcde"), "abcdeabcde", 4, 0, 4); + test(S("abcde"), "abcdeabcde", 4, 1, S::npos); + test(S("abcde"), "abcdeabcde", 4, 5, S::npos); + test(S("abcde"), "abcdeabcde", 4, 9, S::npos); + test(S("abcde"), "abcdeabcde", 4, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos); + test(S("abcde"), "", 5, 0, 5); + test(S("abcde"), "abcde", 5, 0, 5); + test(S("abcde"), "abcde", 5, 1, S::npos); + test(S("abcde"), "abcde", 5, 2, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("abcde"), "abcde", 5, 4, S::npos); - test(S("abcde"), "abcde", 5, 5, S::npos); - test(S("abcde"), "abcdeabcde", 5, 0, 5); - test(S("abcde"), "abcdeabcde", 5, 1, S::npos); - test(S("abcde"), "abcdeabcde", 5, 5, S::npos); - test(S("abcde"), "abcdeabcde", 5, 9, S::npos); - test(S("abcde"), "abcdeabcde", 5, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); - test(S("abcde"), "", 6, 0, S::npos); - test(S("abcde"), "abcde", 6, 0, S::npos); - test(S("abcde"), "abcde", 6, 1, S::npos); - test(S("abcde"), "abcde", 6, 2, S::npos); - test(S("abcde"), "abcde", 6, 4, S::npos); - test(S("abcde"), "abcde", 6, 5, S::npos); - test(S("abcde"), "abcdeabcde", 6, 0, S::npos); - test(S("abcde"), "abcdeabcde", 6, 1, S::npos); - test(S("abcde"), "abcdeabcde", 6, 5, S::npos); - test(S("abcde"), "abcdeabcde", 6, 9, S::npos); - test(S("abcde"), "abcdeabcde", 6, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos); - test(S("abcdeabcde"), "", 0, 0, 0); - test(S("abcdeabcde"), "abcde", 0, 0, 0); - test(S("abcdeabcde"), "abcde", 0, 1, 0); - test(S("abcdeabcde"), "abcde", 0, 2, 0); - test(S("abcdeabcde"), "abcde", 0, 4, 0); - test(S("abcdeabcde"), "abcde", 0, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 0, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 1, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S("abcdeabcde"), "", 1, 0, 1); - test(S("abcdeabcde"), "abcde", 1, 0, 1); - test(S("abcdeabcde"), "abcde", 1, 1, 5); - test(S("abcdeabcde"), "abcde", 1, 2, 5); - test(S("abcdeabcde"), "abcde", 1, 4, 5); - test(S("abcdeabcde"), "abcde", 1, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 1, 0, 1); - test(S("abcdeabcde"), "abcdeabcde", 1, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 1, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 1, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 1, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcdeabcde"), "", 5, 0, 5); - test(S("abcdeabcde"), "abcde", 5, 0, 5); - test(S("abcdeabcde"), "abcde", 5, 1, 5); - test(S("abcdeabcde"), "abcde", 5, 2, 5); - test(S("abcdeabcde"), "abcde", 5, 4, 5); - test(S("abcdeabcde"), "abcde", 5, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 0, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 5, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); - test(S("abcdeabcde"), "", 9, 0, 9); - test(S("abcdeabcde"), "abcde", 9, 0, 9); - test(S("abcdeabcde"), "abcde", 9, 1, S::npos); - test(S("abcdeabcde"), "abcde", 9, 2, S::npos); - test(S("abcdeabcde"), "abcde", 9, 4, S::npos); - test(S("abcdeabcde"), "abcde", 9, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, 0, 9); - test(S("abcdeabcde"), "abcdeabcde", 9, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos); - test(S("abcdeabcde"), "", 10, 0, 10); - test(S("abcdeabcde"), "abcde", 10, 0, 10); - test(S("abcdeabcde"), "abcde", 10, 1, S::npos); - test(S("abcdeabcde"), "abcde", 10, 2, S::npos); - test(S("abcdeabcde"), "abcde", 10, 4, S::npos); - test(S("abcdeabcde"), "abcde", 10, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 10, 0, 10); - test(S("abcdeabcde"), "abcdeabcde", 10, 1, S::npos); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("abcde"), "abcde", 5, 4, S::npos); + test(S("abcde"), "abcde", 5, 5, S::npos); + test(S("abcde"), "abcdeabcde", 5, 0, 5); + test(S("abcde"), "abcdeabcde", 5, 1, S::npos); + test(S("abcde"), "abcdeabcde", 5, 5, S::npos); + test(S("abcde"), "abcdeabcde", 5, 9, S::npos); + test(S("abcde"), "abcdeabcde", 5, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); + test(S("abcde"), "", 6, 0, S::npos); + test(S("abcde"), "abcde", 6, 0, S::npos); + test(S("abcde"), "abcde", 6, 1, S::npos); + test(S("abcde"), "abcde", 6, 2, S::npos); + test(S("abcde"), "abcde", 6, 4, S::npos); + test(S("abcde"), "abcde", 6, 5, S::npos); + test(S("abcde"), "abcdeabcde", 6, 0, S::npos); + test(S("abcde"), "abcdeabcde", 6, 1, S::npos); + test(S("abcde"), "abcdeabcde", 6, 5, S::npos); + test(S("abcde"), "abcdeabcde", 6, 9, S::npos); + test(S("abcde"), "abcdeabcde", 6, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos); + test(S("abcdeabcde"), "", 0, 0, 0); + test(S("abcdeabcde"), "abcde", 0, 0, 0); + test(S("abcdeabcde"), "abcde", 0, 1, 0); + test(S("abcdeabcde"), "abcde", 0, 2, 0); + test(S("abcdeabcde"), "abcde", 0, 4, 0); + test(S("abcdeabcde"), "abcde", 0, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 0, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 1, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S("abcdeabcde"), "", 1, 0, 1); + test(S("abcdeabcde"), "abcde", 1, 0, 1); + test(S("abcdeabcde"), "abcde", 1, 1, 5); + test(S("abcdeabcde"), "abcde", 1, 2, 5); + test(S("abcdeabcde"), "abcde", 1, 4, 5); + test(S("abcdeabcde"), "abcde", 1, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 1, 0, 1); + test(S("abcdeabcde"), "abcdeabcde", 1, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 1, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 1, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 1, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcdeabcde"), "", 5, 0, 5); + test(S("abcdeabcde"), "abcde", 5, 0, 5); + test(S("abcdeabcde"), "abcde", 5, 1, 5); + test(S("abcdeabcde"), "abcde", 5, 2, 5); + test(S("abcdeabcde"), "abcde", 5, 4, 5); + test(S("abcdeabcde"), "abcde", 5, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 0, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 5, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); + test(S("abcdeabcde"), "", 9, 0, 9); + test(S("abcdeabcde"), "abcde", 9, 0, 9); + test(S("abcdeabcde"), "abcde", 9, 1, S::npos); + test(S("abcdeabcde"), "abcde", 9, 2, S::npos); + test(S("abcdeabcde"), "abcde", 9, 4, S::npos); + test(S("abcdeabcde"), "abcde", 9, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, 0, 9); + test(S("abcdeabcde"), "abcdeabcde", 9, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos); + test(S("abcdeabcde"), "", 10, 0, 10); + test(S("abcdeabcde"), "abcde", 10, 0, 10); + test(S("abcdeabcde"), "abcde", 10, 1, S::npos); + test(S("abcdeabcde"), "abcde", 10, 2, S::npos); + test(S("abcdeabcde"), "abcde", 10, 4, S::npos); + test(S("abcdeabcde"), "abcde", 10, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 10, 0, 10); + test(S("abcdeabcde"), "abcdeabcde", 10, 1, S::npos); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("abcdeabcde"), "abcdeabcde", 10, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 10, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 10, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); - test(S("abcdeabcde"), "", 11, 0, S::npos); - test(S("abcdeabcde"), "abcde", 11, 0, S::npos); - test(S("abcdeabcde"), "abcde", 11, 1, S::npos); - test(S("abcdeabcde"), "abcde", 11, 2, S::npos); - test(S("abcdeabcde"), "abcde", 11, 4, S::npos); - test(S("abcdeabcde"), "abcde", 11, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 0, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 5); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 5); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("abcdeabcde"), "abcdeabcde", 10, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 10, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 10, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); + test(S("abcdeabcde"), "", 11, 0, S::npos); + test(S("abcdeabcde"), "abcde", 11, 0, S::npos); + test(S("abcdeabcde"), "abcde", 11, 1, S::npos); + test(S("abcdeabcde"), "abcde", 11, 2, S::npos); + test(S("abcdeabcde"), "abcde", 11, 4, S::npos); + test(S("abcdeabcde"), "abcde", 11, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 0, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 5); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 5); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20); } template -TEST_CONSTEXPR_CXX20 void test3() -{ - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 21, 0, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 0, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 2, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 4, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 0, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 9, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, S::npos); +TEST_CONSTEXPR_CXX20 void test3() { + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 21, 0, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 0, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 2, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 4, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 0, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 9, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, S::npos); } TEST_CONSTEXPR_CXX20 bool test() { @@ -388,8 +386,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/string_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos)); - assert(s.find(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x + str.size() <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos)); + assert(s.find(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x + str.size() <= s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str)); - assert(s.find(str) == x); - if (x != S::npos) - assert(0 <= x && x + str.size() <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str)); + assert(s.find(str) == x); + if (x != S::npos) + assert(0 <= x && x + str.size() <= s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), S(""), 0, 0); - test(S(""), S("abcde"), 0, S::npos); - test(S(""), S("abcdeabcde"), 0, S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("abcde"), 1, S::npos); - test(S(""), S("abcdeabcde"), 1, S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), S(""), 0, 0); - test(S("abcde"), S("abcde"), 0, 0); - test(S("abcde"), S("abcdeabcde"), 0, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcde"), S(""), 1, 1); - test(S("abcde"), S("abcde"), 1, S::npos); - test(S("abcde"), S("abcdeabcde"), 1, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), S(""), 2, 2); - test(S("abcde"), S("abcde"), 2, S::npos); - test(S("abcde"), S("abcdeabcde"), 2, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 2, S::npos); - test(S("abcde"), S(""), 4, 4); - test(S("abcde"), S("abcde"), 4, S::npos); - test(S("abcde"), S("abcdeabcde"), 4, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 4, S::npos); - test(S("abcde"), S(""), 5, 5); - test(S("abcde"), S("abcde"), 5, S::npos); - test(S("abcde"), S("abcdeabcde"), 5, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcde"), S(""), 6, S::npos); - test(S("abcde"), S("abcde"), 6, S::npos); - test(S("abcde"), S("abcdeabcde"), 6, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 6, S::npos); - test(S("abcdeabcde"), S(""), 0, 0); - test(S("abcdeabcde"), S("abcde"), 0, 0); - test(S("abcdeabcde"), S("abcdeabcde"), 0, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcdeabcde"), S(""), 1, 1); - test(S("abcdeabcde"), S("abcde"), 1, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), S(""), 5, 5); - test(S("abcdeabcde"), S("abcde"), 5, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), S(""), 9, 9); - test(S("abcdeabcde"), S("abcde"), 9, S::npos); - test(S("abcdeabcde"), S("abcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), S(""), 10, 10); - test(S("abcdeabcde"), S("abcde"), 10, S::npos); - test(S("abcdeabcde"), S("abcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), S(""), 11, S::npos); - test(S("abcdeabcde"), S("abcde"), 11, S::npos); - test(S("abcdeabcde"), S("abcdeabcde"), 11, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 1, 1); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 1, 5); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 1, 5); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 19, 19); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 20, 20); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), S(""), 0, 0); + test(S(""), S("abcde"), 0, S::npos); + test(S(""), S("abcdeabcde"), 0, S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("abcde"), 1, S::npos); + test(S(""), S("abcdeabcde"), 1, S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), S(""), 0, 0); + test(S("abcde"), S("abcde"), 0, 0); + test(S("abcde"), S("abcdeabcde"), 0, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcde"), S(""), 1, 1); + test(S("abcde"), S("abcde"), 1, S::npos); + test(S("abcde"), S("abcdeabcde"), 1, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), S(""), 2, 2); + test(S("abcde"), S("abcde"), 2, S::npos); + test(S("abcde"), S("abcdeabcde"), 2, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 2, S::npos); + test(S("abcde"), S(""), 4, 4); + test(S("abcde"), S("abcde"), 4, S::npos); + test(S("abcde"), S("abcdeabcde"), 4, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 4, S::npos); + test(S("abcde"), S(""), 5, 5); + test(S("abcde"), S("abcde"), 5, S::npos); + test(S("abcde"), S("abcdeabcde"), 5, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcde"), S(""), 6, S::npos); + test(S("abcde"), S("abcde"), 6, S::npos); + test(S("abcde"), S("abcdeabcde"), 6, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 6, S::npos); + test(S("abcdeabcde"), S(""), 0, 0); + test(S("abcdeabcde"), S("abcde"), 0, 0); + test(S("abcdeabcde"), S("abcdeabcde"), 0, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcdeabcde"), S(""), 1, 1); + test(S("abcdeabcde"), S("abcde"), 1, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), S(""), 5, 5); + test(S("abcdeabcde"), S("abcde"), 5, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), S(""), 9, 9); + test(S("abcdeabcde"), S("abcde"), 9, S::npos); + test(S("abcdeabcde"), S("abcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), S(""), 10, 10); + test(S("abcdeabcde"), S("abcde"), 10, S::npos); + test(S("abcdeabcde"), S("abcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), S(""), 11, S::npos); + test(S("abcdeabcde"), S("abcde"), 11, S::npos); + test(S("abcdeabcde"), S("abcdeabcde"), 11, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 1, 1); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 1, 5); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 1, 5); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 19, 19); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 20, 20); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), S(""), 0); - test(S(""), S("abcde"), S::npos); - test(S(""), S("abcdeabcde"), S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcde"), S(""), 0); - test(S("abcde"), S("abcde"), 0); - test(S("abcde"), S("abcdeabcde"), S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcde"), S(""), 0); - test(S("abcdeabcde"), S("abcde"), 0); - test(S("abcdeabcde"), S("abcdeabcde"), 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 0); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), S(""), 0); + test(S(""), S("abcde"), S::npos); + test(S(""), S("abcdeabcde"), S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcde"), S(""), 0); + test(S("abcde"), S("abcde"), 0); + test(S("abcde"), S("abcdeabcde"), S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcde"), S(""), 0); + test(S("abcdeabcde"), S("abcde"), 0); + test(S("abcdeabcde"), S("abcdeabcde"), 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 0); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -166,8 +160,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_find/string_view_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(sv, pos)); - assert(s.find(sv, pos) == x); - if (x != S::npos) - assert(pos <= x && x + sv.size() <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(sv, pos)); + assert(s.find(sv, pos) == x); + if (x != S::npos) + assert(pos <= x && x + sv.size() <= s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(sv)); - assert(s.find(sv) == x); - if (x != S::npos) - assert(0 <= x && x + sv.size() <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(sv)); + assert(s.find(sv) == x); + if (x != S::npos) + assert(0 <= x && x + sv.size() <= s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), SV(""), 0, 0); - test(S(""), SV("abcde"), 0, S::npos); - test(S(""), SV("abcdeabcde"), 0, S::npos); - test(S(""), SV("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S(""), SV(""), 1, S::npos); - test(S(""), SV("abcde"), 1, S::npos); - test(S(""), SV("abcdeabcde"), 1, S::npos); - test(S(""), SV("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), SV(""), 0, 0); - test(S("abcde"), SV("abcde"), 0, 0); - test(S("abcde"), SV("abcdeabcde"), 0, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcde"), SV(""), 1, 1); - test(S("abcde"), SV("abcde"), 1, S::npos); - test(S("abcde"), SV("abcdeabcde"), 1, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), SV(""), 2, 2); - test(S("abcde"), SV("abcde"), 2, S::npos); - test(S("abcde"), SV("abcdeabcde"), 2, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 2, S::npos); - test(S("abcde"), SV(""), 4, 4); - test(S("abcde"), SV("abcde"), 4, S::npos); - test(S("abcde"), SV("abcdeabcde"), 4, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 4, S::npos); - test(S("abcde"), SV(""), 5, 5); - test(S("abcde"), SV("abcde"), 5, S::npos); - test(S("abcde"), SV("abcdeabcde"), 5, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcde"), SV(""), 6, S::npos); - test(S("abcde"), SV("abcde"), 6, S::npos); - test(S("abcde"), SV("abcdeabcde"), 6, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 6, S::npos); - test(S("abcdeabcde"), SV(""), 0, 0); - test(S("abcdeabcde"), SV("abcde"), 0, 0); - test(S("abcdeabcde"), SV("abcdeabcde"), 0, 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcdeabcde"), SV(""), 1, 1); - test(S("abcdeabcde"), SV("abcde"), 1, 5); - test(S("abcdeabcde"), SV("abcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), SV(""), 5, 5); - test(S("abcdeabcde"), SV("abcde"), 5, 5); - test(S("abcdeabcde"), SV("abcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), SV(""), 9, 9); - test(S("abcdeabcde"), SV("abcde"), 9, S::npos); - test(S("abcdeabcde"), SV("abcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), SV(""), 10, 10); - test(S("abcdeabcde"), SV("abcde"), 10, S::npos); - test(S("abcdeabcde"), SV("abcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), SV(""), 11, S::npos); - test(S("abcdeabcde"), SV("abcde"), 11, S::npos); - test(S("abcdeabcde"), SV("abcdeabcde"), 11, S::npos); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV(""), 0, 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), SV(""), 1, 1); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 1, 5); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 1, 5); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV(""), 10, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV(""), 19, 19); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV(""), 20, 20); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV(""), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 21, S::npos); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), SV(""), 0, 0); + test(S(""), SV("abcde"), 0, S::npos); + test(S(""), SV("abcdeabcde"), 0, S::npos); + test(S(""), SV("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S(""), SV(""), 1, S::npos); + test(S(""), SV("abcde"), 1, S::npos); + test(S(""), SV("abcdeabcde"), 1, S::npos); + test(S(""), SV("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), SV(""), 0, 0); + test(S("abcde"), SV("abcde"), 0, 0); + test(S("abcde"), SV("abcdeabcde"), 0, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcde"), SV(""), 1, 1); + test(S("abcde"), SV("abcde"), 1, S::npos); + test(S("abcde"), SV("abcdeabcde"), 1, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), SV(""), 2, 2); + test(S("abcde"), SV("abcde"), 2, S::npos); + test(S("abcde"), SV("abcdeabcde"), 2, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 2, S::npos); + test(S("abcde"), SV(""), 4, 4); + test(S("abcde"), SV("abcde"), 4, S::npos); + test(S("abcde"), SV("abcdeabcde"), 4, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 4, S::npos); + test(S("abcde"), SV(""), 5, 5); + test(S("abcde"), SV("abcde"), 5, S::npos); + test(S("abcde"), SV("abcdeabcde"), 5, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcde"), SV(""), 6, S::npos); + test(S("abcde"), SV("abcde"), 6, S::npos); + test(S("abcde"), SV("abcdeabcde"), 6, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 6, S::npos); + test(S("abcdeabcde"), SV(""), 0, 0); + test(S("abcdeabcde"), SV("abcde"), 0, 0); + test(S("abcdeabcde"), SV("abcdeabcde"), 0, 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcdeabcde"), SV(""), 1, 1); + test(S("abcdeabcde"), SV("abcde"), 1, 5); + test(S("abcdeabcde"), SV("abcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), SV(""), 5, 5); + test(S("abcdeabcde"), SV("abcde"), 5, 5); + test(S("abcdeabcde"), SV("abcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), SV(""), 9, 9); + test(S("abcdeabcde"), SV("abcde"), 9, S::npos); + test(S("abcdeabcde"), SV("abcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), SV(""), 10, 10); + test(S("abcdeabcde"), SV("abcde"), 10, S::npos); + test(S("abcdeabcde"), SV("abcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), SV(""), 11, S::npos); + test(S("abcdeabcde"), SV("abcde"), 11, S::npos); + test(S("abcdeabcde"), SV("abcdeabcde"), 11, S::npos); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV(""), 0, 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), SV(""), 1, 1); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 1, 5); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 1, 5); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV(""), 10, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV(""), 19, 19); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV(""), 20, 20); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV(""), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 21, S::npos); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), SV(""), 0); - test(S(""), SV("abcde"), S::npos); - test(S(""), SV("abcdeabcde"), S::npos); - test(S(""), SV("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcde"), SV(""), 0); - test(S("abcde"), SV("abcde"), 0); - test(S("abcde"), SV("abcdeabcde"), S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcde"), SV(""), 0); - test(S("abcdeabcde"), SV("abcde"), 0); - test(S("abcdeabcde"), SV("abcdeabcde"), 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcdeabcdeabcde"), SV(""), 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), SV(""), 0); + test(S(""), SV("abcde"), S::npos); + test(S(""), SV("abcdeabcde"), S::npos); + test(S(""), SV("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcde"), SV(""), 0); + test(S("abcde"), SV("abcde"), 0); + test(S("abcde"), SV("abcdeabcde"), S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcde"), SV(""), 0); + test(S("abcdeabcde"), SV("abcde"), 0); + test(S("abcdeabcde"), SV("abcdeabcde"), 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcdeabcdeabcde"), SV(""), 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -161,8 +155,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/char_size.pass.cpp @@ -18,23 +18,19 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(c, pos)); - assert(s.rfind(c, pos) == x); - if (x != S::npos) - assert(x <= pos && x + 1 <= s.size()); +test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(c, pos)); + assert(s.rfind(c, pos) == x); + if (x != S::npos) + assert(x <= pos && x + 1 <= s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(c)); - assert(s.rfind(c) == x); - if (x != S::npos) - assert(x + 1 <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(c)); + assert(s.rfind(c) == x); + if (x != S::npos) + assert(x + 1 <= s.size()); } TEST_CONSTEXPR_CXX20 bool test() { @@ -100,8 +96,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size.pass.cpp @@ -18,136 +18,128 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos)); - assert(s.rfind(str, pos) == x); - if (x != S::npos) - { - typename S::size_type n = S::traits_type::length(str); - assert(x <= pos && x + n <= s.size()); - } +test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos)); + assert(s.rfind(str, pos) == x); + if (x != S::npos) { + typename S::size_type n = S::traits_type::length(str); + assert(x <= pos && x + n <= s.size()); + } } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str)); - assert(s.rfind(str) == x); - if (x != S::npos) - { - typename S::size_type pos = s.size(); - typename S::size_type n = S::traits_type::length(str); - assert(x <= pos && x + n <= s.size()); - } +TEST_CONSTEXPR_CXX20 void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str)); + assert(s.rfind(str) == x); + if (x != S::npos) { + typename S::size_type pos = s.size(); + typename S::size_type n = S::traits_type::length(str); + assert(x <= pos && x + n <= s.size()); + } } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, 0); - test(S(""), "abcde", 0, S::npos); - test(S(""), "abcdeabcde", 0, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S(""), "", 1, 0); - test(S(""), "abcde", 1, S::npos); - test(S(""), "abcdeabcde", 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcde"), "", 0, 0); - test(S("abcde"), "abcde", 0, 0); - test(S("abcde"), "abcdeabcde", 0, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S("abcde"), "", 1, 1); - test(S("abcde"), "abcde", 1, 0); - test(S("abcde"), "abcdeabcde", 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcde"), "", 2, 2); - test(S("abcde"), "abcde", 2, 0); - test(S("abcde"), "abcdeabcde", 2, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, S::npos); - test(S("abcde"), "", 4, 4); - test(S("abcde"), "abcde", 4, 0); - test(S("abcde"), "abcdeabcde", 4, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, S::npos); - test(S("abcde"), "", 5, 5); - test(S("abcde"), "abcde", 5, 0); - test(S("abcde"), "abcdeabcde", 5, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, S::npos); - test(S("abcde"), "", 6, 5); - test(S("abcde"), "abcde", 6, 0); - test(S("abcde"), "abcdeabcde", 6, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, S::npos); - test(S("abcdeabcde"), "", 0, 0); - test(S("abcdeabcde"), "abcde", 0, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S("abcdeabcde"), "", 1, 1); - test(S("abcdeabcde"), "abcde", 1, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcdeabcde"), "", 5, 5); - test(S("abcdeabcde"), "abcde", 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, S::npos); - test(S("abcdeabcde"), "", 9, 9); - test(S("abcdeabcde"), "abcde", 9, 5); - test(S("abcdeabcde"), "abcdeabcde", 9, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, S::npos); - test(S("abcdeabcde"), "", 10, 10); - test(S("abcdeabcde"), "abcde", 10, 5); - test(S("abcdeabcde"), "abcdeabcde", 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); - test(S("abcdeabcde"), "", 11, 10); - test(S("abcdeabcde"), "abcde", 11, 5); - test(S("abcdeabcde"), "abcdeabcde", 11, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "", 1, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0); - test(S("abcdeabcdeabcdeabcde"), "", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0); - test(S("abcdeabcdeabcdeabcde"), "", 19, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0); - test(S("abcdeabcdeabcdeabcde"), "", 20, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 21, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, 0); + test(S(""), "abcde", 0, S::npos); + test(S(""), "abcdeabcde", 0, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S(""), "", 1, 0); + test(S(""), "abcde", 1, S::npos); + test(S(""), "abcdeabcde", 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcde"), "", 0, 0); + test(S("abcde"), "abcde", 0, 0); + test(S("abcde"), "abcdeabcde", 0, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S("abcde"), "", 1, 1); + test(S("abcde"), "abcde", 1, 0); + test(S("abcde"), "abcdeabcde", 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcde"), "", 2, 2); + test(S("abcde"), "abcde", 2, 0); + test(S("abcde"), "abcdeabcde", 2, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, S::npos); + test(S("abcde"), "", 4, 4); + test(S("abcde"), "abcde", 4, 0); + test(S("abcde"), "abcdeabcde", 4, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, S::npos); + test(S("abcde"), "", 5, 5); + test(S("abcde"), "abcde", 5, 0); + test(S("abcde"), "abcdeabcde", 5, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, S::npos); + test(S("abcde"), "", 6, 5); + test(S("abcde"), "abcde", 6, 0); + test(S("abcde"), "abcdeabcde", 6, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, S::npos); + test(S("abcdeabcde"), "", 0, 0); + test(S("abcdeabcde"), "abcde", 0, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S("abcdeabcde"), "", 1, 1); + test(S("abcdeabcde"), "abcde", 1, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcdeabcde"), "", 5, 5); + test(S("abcdeabcde"), "abcde", 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, S::npos); + test(S("abcdeabcde"), "", 9, 9); + test(S("abcdeabcde"), "abcde", 9, 5); + test(S("abcdeabcde"), "abcdeabcde", 9, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, S::npos); + test(S("abcdeabcde"), "", 10, 10); + test(S("abcdeabcde"), "abcde", 10, 5); + test(S("abcdeabcde"), "abcdeabcde", 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); + test(S("abcdeabcde"), "", 11, 10); + test(S("abcdeabcde"), "abcde", 11, 5); + test(S("abcdeabcde"), "abcdeabcde", 11, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "", 1, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0); + test(S("abcdeabcdeabcdeabcde"), "", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0); + test(S("abcdeabcdeabcdeabcde"), "", 19, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0); + test(S("abcdeabcdeabcdeabcde"), "", 20, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 21, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), "", 0); - test(S(""), "abcde", S::npos); - test(S(""), "abcdeabcde", S::npos); - test(S(""), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcde"), "", 5); - test(S("abcde"), "abcde", 0); - test(S("abcde"), "abcdeabcde", S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcdeabcde"), "", 10); - test(S("abcdeabcde"), "abcde", 5); - test(S("abcdeabcde"), "abcdeabcde", 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), "", 0); + test(S(""), "abcde", S::npos); + test(S(""), "abcdeabcde", S::npos); + test(S(""), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcde"), "", 5); + test(S("abcde"), "abcde", 0); + test(S("abcde"), "abcdeabcde", S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcdeabcde"), "", 10); + test(S("abcdeabcde"), "abcde", 5); + test(S("abcdeabcde"), "abcdeabcde", 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -167,8 +159,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/pointer_size_size.pass.cpp @@ -18,353 +18,351 @@ template TEST_CONSTEXPR_CXX20 void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos, n)); - assert(s.rfind(str, pos, n) == x); - if (x != S::npos) - assert(x <= pos && x + n <= s.size()); +test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos, n)); + assert(s.rfind(str, pos, n) == x); + if (x != S::npos) + assert(x <= pos && x + n <= s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), "", 0, 0, 0); - test(S(""), "abcde", 0, 0, 0); - test(S(""), "abcde", 0, 1, S::npos); - test(S(""), "abcde", 0, 2, S::npos); - test(S(""), "abcde", 0, 4, S::npos); - test(S(""), "abcde", 0, 5, S::npos); - test(S(""), "abcdeabcde", 0, 0, 0); - test(S(""), "abcdeabcde", 0, 1, S::npos); - test(S(""), "abcdeabcde", 0, 5, S::npos); - test(S(""), "abcdeabcde", 0, 9, S::npos); - test(S(""), "abcdeabcde", 0, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S(""), "", 1, 0, 0); - test(S(""), "abcde", 1, 0, 0); - test(S(""), "abcde", 1, 1, S::npos); - test(S(""), "abcde", 1, 2, S::npos); - test(S(""), "abcde", 1, 4, S::npos); - test(S(""), "abcde", 1, 5, S::npos); - test(S(""), "abcdeabcde", 1, 0, 0); - test(S(""), "abcdeabcde", 1, 1, S::npos); - test(S(""), "abcdeabcde", 1, 5, S::npos); - test(S(""), "abcdeabcde", 1, 9, S::npos); - test(S(""), "abcdeabcde", 1, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 0, 0); - test(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcde"), "", 0, 0, 0); - test(S("abcde"), "abcde", 0, 0, 0); - test(S("abcde"), "abcde", 0, 1, 0); - test(S("abcde"), "abcde", 0, 2, 0); - test(S("abcde"), "abcde", 0, 4, 0); - test(S("abcde"), "abcde", 0, 5, 0); - test(S("abcde"), "abcdeabcde", 0, 0, 0); - test(S("abcde"), "abcdeabcde", 0, 1, 0); - test(S("abcde"), "abcdeabcde", 0, 5, 0); - test(S("abcde"), "abcdeabcde", 0, 9, S::npos); - test(S("abcde"), "abcdeabcde", 0, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S("abcde"), "", 1, 0, 1); - test(S("abcde"), "abcde", 1, 0, 1); - test(S("abcde"), "abcde", 1, 1, 0); - test(S("abcde"), "abcde", 1, 2, 0); - test(S("abcde"), "abcde", 1, 4, 0); - test(S("abcde"), "abcde", 1, 5, 0); - test(S("abcde"), "abcdeabcde", 1, 0, 1); - test(S("abcde"), "abcdeabcde", 1, 1, 0); - test(S("abcde"), "abcdeabcde", 1, 5, 0); - test(S("abcde"), "abcdeabcde", 1, 9, S::npos); - test(S("abcde"), "abcdeabcde", 1, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcde"), "", 2, 0, 2); - test(S("abcde"), "abcde", 2, 0, 2); - test(S("abcde"), "abcde", 2, 1, 0); - test(S("abcde"), "abcde", 2, 2, 0); - test(S("abcde"), "abcde", 2, 4, 0); - test(S("abcde"), "abcde", 2, 5, 0); - test(S("abcde"), "abcdeabcde", 2, 0, 2); - test(S("abcde"), "abcdeabcde", 2, 1, 0); - test(S("abcde"), "abcdeabcde", 2, 5, 0); - test(S("abcde"), "abcdeabcde", 2, 9, S::npos); - test(S("abcde"), "abcdeabcde", 2, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos); - test(S("abcde"), "", 4, 0, 4); - test(S("abcde"), "abcde", 4, 0, 4); - test(S("abcde"), "abcde", 4, 1, 0); - test(S("abcde"), "abcde", 4, 2, 0); - test(S("abcde"), "abcde", 4, 4, 0); - test(S("abcde"), "abcde", 4, 5, 0); - test(S("abcde"), "abcdeabcde", 4, 0, 4); - test(S("abcde"), "abcdeabcde", 4, 1, 0); - test(S("abcde"), "abcdeabcde", 4, 5, 0); - test(S("abcde"), "abcdeabcde", 4, 9, S::npos); - test(S("abcde"), "abcdeabcde", 4, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos); - test(S("abcde"), "", 5, 0, 5); - test(S("abcde"), "abcde", 5, 0, 5); - test(S("abcde"), "abcde", 5, 1, 0); - test(S("abcde"), "abcde", 5, 2, 0); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), "", 0, 0, 0); + test(S(""), "abcde", 0, 0, 0); + test(S(""), "abcde", 0, 1, S::npos); + test(S(""), "abcde", 0, 2, S::npos); + test(S(""), "abcde", 0, 4, S::npos); + test(S(""), "abcde", 0, 5, S::npos); + test(S(""), "abcdeabcde", 0, 0, 0); + test(S(""), "abcdeabcde", 0, 1, S::npos); + test(S(""), "abcdeabcde", 0, 5, S::npos); + test(S(""), "abcdeabcde", 0, 9, S::npos); + test(S(""), "abcdeabcde", 0, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S(""), "", 1, 0, 0); + test(S(""), "abcde", 1, 0, 0); + test(S(""), "abcde", 1, 1, S::npos); + test(S(""), "abcde", 1, 2, S::npos); + test(S(""), "abcde", 1, 4, S::npos); + test(S(""), "abcde", 1, 5, S::npos); + test(S(""), "abcdeabcde", 1, 0, 0); + test(S(""), "abcdeabcde", 1, 1, S::npos); + test(S(""), "abcdeabcde", 1, 5, S::npos); + test(S(""), "abcdeabcde", 1, 9, S::npos); + test(S(""), "abcdeabcde", 1, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 0, 0); + test(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcde"), "", 0, 0, 0); + test(S("abcde"), "abcde", 0, 0, 0); + test(S("abcde"), "abcde", 0, 1, 0); + test(S("abcde"), "abcde", 0, 2, 0); + test(S("abcde"), "abcde", 0, 4, 0); + test(S("abcde"), "abcde", 0, 5, 0); + test(S("abcde"), "abcdeabcde", 0, 0, 0); + test(S("abcde"), "abcdeabcde", 0, 1, 0); + test(S("abcde"), "abcdeabcde", 0, 5, 0); + test(S("abcde"), "abcdeabcde", 0, 9, S::npos); + test(S("abcde"), "abcdeabcde", 0, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S("abcde"), "", 1, 0, 1); + test(S("abcde"), "abcde", 1, 0, 1); + test(S("abcde"), "abcde", 1, 1, 0); + test(S("abcde"), "abcde", 1, 2, 0); + test(S("abcde"), "abcde", 1, 4, 0); + test(S("abcde"), "abcde", 1, 5, 0); + test(S("abcde"), "abcdeabcde", 1, 0, 1); + test(S("abcde"), "abcdeabcde", 1, 1, 0); + test(S("abcde"), "abcdeabcde", 1, 5, 0); + test(S("abcde"), "abcdeabcde", 1, 9, S::npos); + test(S("abcde"), "abcdeabcde", 1, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcde"), "", 2, 0, 2); + test(S("abcde"), "abcde", 2, 0, 2); + test(S("abcde"), "abcde", 2, 1, 0); + test(S("abcde"), "abcde", 2, 2, 0); + test(S("abcde"), "abcde", 2, 4, 0); + test(S("abcde"), "abcde", 2, 5, 0); + test(S("abcde"), "abcdeabcde", 2, 0, 2); + test(S("abcde"), "abcdeabcde", 2, 1, 0); + test(S("abcde"), "abcdeabcde", 2, 5, 0); + test(S("abcde"), "abcdeabcde", 2, 9, S::npos); + test(S("abcde"), "abcdeabcde", 2, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos); + test(S("abcde"), "", 4, 0, 4); + test(S("abcde"), "abcde", 4, 0, 4); + test(S("abcde"), "abcde", 4, 1, 0); + test(S("abcde"), "abcde", 4, 2, 0); + test(S("abcde"), "abcde", 4, 4, 0); + test(S("abcde"), "abcde", 4, 5, 0); + test(S("abcde"), "abcdeabcde", 4, 0, 4); + test(S("abcde"), "abcdeabcde", 4, 1, 0); + test(S("abcde"), "abcdeabcde", 4, 5, 0); + test(S("abcde"), "abcdeabcde", 4, 9, S::npos); + test(S("abcde"), "abcdeabcde", 4, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos); + test(S("abcde"), "", 5, 0, 5); + test(S("abcde"), "abcde", 5, 0, 5); + test(S("abcde"), "abcde", 5, 1, 0); + test(S("abcde"), "abcde", 5, 2, 0); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S("abcde"), "abcde", 5, 4, 0); - test(S("abcde"), "abcde", 5, 5, 0); - test(S("abcde"), "abcdeabcde", 5, 0, 5); - test(S("abcde"), "abcdeabcde", 5, 1, 0); - test(S("abcde"), "abcdeabcde", 5, 5, 0); - test(S("abcde"), "abcdeabcde", 5, 9, S::npos); - test(S("abcde"), "abcdeabcde", 5, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); - test(S("abcde"), "", 6, 0, 5); - test(S("abcde"), "abcde", 6, 0, 5); - test(S("abcde"), "abcde", 6, 1, 0); - test(S("abcde"), "abcde", 6, 2, 0); - test(S("abcde"), "abcde", 6, 4, 0); - test(S("abcde"), "abcde", 6, 5, 0); - test(S("abcde"), "abcdeabcde", 6, 0, 5); - test(S("abcde"), "abcdeabcde", 6, 1, 0); - test(S("abcde"), "abcdeabcde", 6, 5, 0); - test(S("abcde"), "abcdeabcde", 6, 9, S::npos); - test(S("abcde"), "abcdeabcde", 6, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, 5); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos); - test(S("abcdeabcde"), "", 0, 0, 0); - test(S("abcdeabcde"), "abcde", 0, 0, 0); - test(S("abcdeabcde"), "abcde", 0, 1, 0); - test(S("abcdeabcde"), "abcde", 0, 2, 0); - test(S("abcdeabcde"), "abcde", 0, 4, 0); - test(S("abcdeabcde"), "abcde", 0, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 0, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 1, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S("abcdeabcde"), "", 1, 0, 1); - test(S("abcdeabcde"), "abcde", 1, 0, 1); - test(S("abcdeabcde"), "abcde", 1, 1, 0); - test(S("abcdeabcde"), "abcde", 1, 2, 0); - test(S("abcdeabcde"), "abcde", 1, 4, 0); - test(S("abcdeabcde"), "abcde", 1, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 0, 1); - test(S("abcdeabcde"), "abcdeabcde", 1, 1, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcdeabcde"), "", 5, 0, 5); - test(S("abcdeabcde"), "abcde", 5, 0, 5); - test(S("abcdeabcde"), "abcde", 5, 1, 5); - test(S("abcdeabcde"), "abcde", 5, 2, 5); - test(S("abcdeabcde"), "abcde", 5, 4, 5); - test(S("abcdeabcde"), "abcde", 5, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 0, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 5, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); - test(S("abcdeabcde"), "", 9, 0, 9); - test(S("abcdeabcde"), "abcde", 9, 0, 9); - test(S("abcdeabcde"), "abcde", 9, 1, 5); - test(S("abcdeabcde"), "abcde", 9, 2, 5); - test(S("abcdeabcde"), "abcde", 9, 4, 5); - test(S("abcdeabcde"), "abcde", 9, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 9, 0, 9); - test(S("abcdeabcde"), "abcdeabcde", 9, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 9, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 9, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 9, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos); - test(S("abcdeabcde"), "", 10, 0, 10); - test(S("abcdeabcde"), "abcde", 10, 0, 10); - test(S("abcdeabcde"), "abcde", 10, 1, 5); - test(S("abcdeabcde"), "abcde", 10, 2, 5); - test(S("abcdeabcde"), "abcde", 10, 4, 5); - test(S("abcdeabcde"), "abcde", 10, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 10, 0, 10); - test(S("abcdeabcde"), "abcdeabcde", 10, 1, 5); +TEST_CONSTEXPR_CXX20 void test1() { + test(S("abcde"), "abcde", 5, 4, 0); + test(S("abcde"), "abcde", 5, 5, 0); + test(S("abcde"), "abcdeabcde", 5, 0, 5); + test(S("abcde"), "abcdeabcde", 5, 1, 0); + test(S("abcde"), "abcdeabcde", 5, 5, 0); + test(S("abcde"), "abcdeabcde", 5, 9, S::npos); + test(S("abcde"), "abcdeabcde", 5, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); + test(S("abcde"), "", 6, 0, 5); + test(S("abcde"), "abcde", 6, 0, 5); + test(S("abcde"), "abcde", 6, 1, 0); + test(S("abcde"), "abcde", 6, 2, 0); + test(S("abcde"), "abcde", 6, 4, 0); + test(S("abcde"), "abcde", 6, 5, 0); + test(S("abcde"), "abcdeabcde", 6, 0, 5); + test(S("abcde"), "abcdeabcde", 6, 1, 0); + test(S("abcde"), "abcdeabcde", 6, 5, 0); + test(S("abcde"), "abcdeabcde", 6, 9, S::npos); + test(S("abcde"), "abcdeabcde", 6, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, 5); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos); + test(S("abcdeabcde"), "", 0, 0, 0); + test(S("abcdeabcde"), "abcde", 0, 0, 0); + test(S("abcdeabcde"), "abcde", 0, 1, 0); + test(S("abcdeabcde"), "abcde", 0, 2, 0); + test(S("abcdeabcde"), "abcde", 0, 4, 0); + test(S("abcdeabcde"), "abcde", 0, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 0, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 1, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S("abcdeabcde"), "", 1, 0, 1); + test(S("abcdeabcde"), "abcde", 1, 0, 1); + test(S("abcdeabcde"), "abcde", 1, 1, 0); + test(S("abcdeabcde"), "abcde", 1, 2, 0); + test(S("abcdeabcde"), "abcde", 1, 4, 0); + test(S("abcdeabcde"), "abcde", 1, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 0, 1); + test(S("abcdeabcde"), "abcdeabcde", 1, 1, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcdeabcde"), "", 5, 0, 5); + test(S("abcdeabcde"), "abcde", 5, 0, 5); + test(S("abcdeabcde"), "abcde", 5, 1, 5); + test(S("abcdeabcde"), "abcde", 5, 2, 5); + test(S("abcdeabcde"), "abcde", 5, 4, 5); + test(S("abcdeabcde"), "abcde", 5, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 0, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 5, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); + test(S("abcdeabcde"), "", 9, 0, 9); + test(S("abcdeabcde"), "abcde", 9, 0, 9); + test(S("abcdeabcde"), "abcde", 9, 1, 5); + test(S("abcdeabcde"), "abcde", 9, 2, 5); + test(S("abcdeabcde"), "abcde", 9, 4, 5); + test(S("abcdeabcde"), "abcde", 9, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 9, 0, 9); + test(S("abcdeabcde"), "abcdeabcde", 9, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 9, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 9, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 9, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos); + test(S("abcdeabcde"), "", 10, 0, 10); + test(S("abcdeabcde"), "abcde", 10, 0, 10); + test(S("abcdeabcde"), "abcde", 10, 1, 5); + test(S("abcdeabcde"), "abcde", 10, 2, 5); + test(S("abcdeabcde"), "abcde", 10, 4, 5); + test(S("abcdeabcde"), "abcde", 10, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 10, 0, 10); + test(S("abcdeabcde"), "abcdeabcde", 10, 1, 5); } template -TEST_CONSTEXPR_CXX20 void test2() -{ - test(S("abcdeabcde"), "abcdeabcde", 10, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 10, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 10, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); - test(S("abcdeabcde"), "", 11, 0, 10); - test(S("abcdeabcde"), "abcde", 11, 0, 10); - test(S("abcdeabcde"), "abcde", 11, 1, 5); - test(S("abcdeabcde"), "abcde", 11, 2, 5); - test(S("abcdeabcde"), "abcde", 11, 4, 5); - test(S("abcdeabcde"), "abcde", 11, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 11, 0, 10); - test(S("abcdeabcde"), "abcdeabcde", 11, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 11, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 11, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 11, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, 10); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20); +TEST_CONSTEXPR_CXX20 void test2() { + test(S("abcdeabcde"), "abcdeabcde", 10, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 10, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 10, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); + test(S("abcdeabcde"), "", 11, 0, 10); + test(S("abcdeabcde"), "abcde", 11, 0, 10); + test(S("abcdeabcde"), "abcde", 11, 1, 5); + test(S("abcdeabcde"), "abcde", 11, 2, 5); + test(S("abcdeabcde"), "abcde", 11, 4, 5); + test(S("abcdeabcde"), "abcde", 11, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 11, 0, 10); + test(S("abcdeabcde"), "abcdeabcde", 11, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 11, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 11, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 11, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, 10); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20); } template -TEST_CONSTEXPR_CXX20 void test3() -{ - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 21, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 2, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 4, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, 0); +TEST_CONSTEXPR_CXX20 void test3() { + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 21, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 2, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 4, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -388,8 +386,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos)); - assert(s.rfind(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x + str.size() <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos)); + assert(s.rfind(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x + str.size() <= s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str)); - assert(s.rfind(str) == x); - if (x != S::npos) - assert(0 <= x && x + str.size() <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str)); + assert(s.rfind(str) == x); + if (x != S::npos) + assert(0 <= x && x + str.size() <= s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), S(""), 0, 0); - test(S(""), S("abcde"), 0, S::npos); - test(S(""), S("abcdeabcde"), 0, S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S(""), S(""), 1, 0); - test(S(""), S("abcde"), 1, S::npos); - test(S(""), S("abcdeabcde"), 1, S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), S(""), 0, 0); - test(S("abcde"), S("abcde"), 0, 0); - test(S("abcde"), S("abcdeabcde"), 0, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcde"), S(""), 1, 1); - test(S("abcde"), S("abcde"), 1, 0); - test(S("abcde"), S("abcdeabcde"), 1, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), S(""), 2, 2); - test(S("abcde"), S("abcde"), 2, 0); - test(S("abcde"), S("abcdeabcde"), 2, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 2, S::npos); - test(S("abcde"), S(""), 4, 4); - test(S("abcde"), S("abcde"), 4, 0); - test(S("abcde"), S("abcdeabcde"), 4, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 4, S::npos); - test(S("abcde"), S(""), 5, 5); - test(S("abcde"), S("abcde"), 5, 0); - test(S("abcde"), S("abcdeabcde"), 5, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcde"), S(""), 6, 5); - test(S("abcde"), S("abcde"), 6, 0); - test(S("abcde"), S("abcdeabcde"), 6, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 6, S::npos); - test(S("abcdeabcde"), S(""), 0, 0); - test(S("abcdeabcde"), S("abcde"), 0, 0); - test(S("abcdeabcde"), S("abcdeabcde"), 0, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcdeabcde"), S(""), 1, 1); - test(S("abcdeabcde"), S("abcde"), 1, 0); - test(S("abcdeabcde"), S("abcdeabcde"), 1, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), S(""), 5, 5); - test(S("abcdeabcde"), S("abcde"), 5, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 5, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), S(""), 9, 9); - test(S("abcdeabcde"), S("abcde"), 9, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 9, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), S(""), 10, 10); - test(S("abcdeabcde"), S("abcde"), 10, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 10, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), S(""), 11, 10); - test(S("abcdeabcde"), S("abcde"), 11, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 11, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 1, 1); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 19, 19); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 19, 15); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 19, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 19, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 20, 20); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 20, 15); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 20, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 20, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 21, 20); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 21, 15); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 21, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 21, 0); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), S(""), 0, 0); + test(S(""), S("abcde"), 0, S::npos); + test(S(""), S("abcdeabcde"), 0, S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S(""), S(""), 1, 0); + test(S(""), S("abcde"), 1, S::npos); + test(S(""), S("abcdeabcde"), 1, S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), S(""), 0, 0); + test(S("abcde"), S("abcde"), 0, 0); + test(S("abcde"), S("abcdeabcde"), 0, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcde"), S(""), 1, 1); + test(S("abcde"), S("abcde"), 1, 0); + test(S("abcde"), S("abcdeabcde"), 1, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), S(""), 2, 2); + test(S("abcde"), S("abcde"), 2, 0); + test(S("abcde"), S("abcdeabcde"), 2, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 2, S::npos); + test(S("abcde"), S(""), 4, 4); + test(S("abcde"), S("abcde"), 4, 0); + test(S("abcde"), S("abcdeabcde"), 4, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 4, S::npos); + test(S("abcde"), S(""), 5, 5); + test(S("abcde"), S("abcde"), 5, 0); + test(S("abcde"), S("abcdeabcde"), 5, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcde"), S(""), 6, 5); + test(S("abcde"), S("abcde"), 6, 0); + test(S("abcde"), S("abcdeabcde"), 6, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 6, S::npos); + test(S("abcdeabcde"), S(""), 0, 0); + test(S("abcdeabcde"), S("abcde"), 0, 0); + test(S("abcdeabcde"), S("abcdeabcde"), 0, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcdeabcde"), S(""), 1, 1); + test(S("abcdeabcde"), S("abcde"), 1, 0); + test(S("abcdeabcde"), S("abcdeabcde"), 1, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), S(""), 5, 5); + test(S("abcdeabcde"), S("abcde"), 5, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 5, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), S(""), 9, 9); + test(S("abcdeabcde"), S("abcde"), 9, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 9, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), S(""), 10, 10); + test(S("abcdeabcde"), S("abcde"), 10, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 10, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), S(""), 11, 10); + test(S("abcdeabcde"), S("abcde"), 11, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 11, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 1, 1); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 19, 19); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 19, 15); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 19, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 19, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 20, 20); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 20, 15); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 20, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 20, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 21, 20); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 21, 15); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 21, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 21, 0); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), S(""), 0); - test(S(""), S("abcde"), S::npos); - test(S(""), S("abcdeabcde"), S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcde"), S(""), 5); - test(S("abcde"), S("abcde"), 0); - test(S("abcde"), S("abcdeabcde"), S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcde"), S(""), 10); - test(S("abcdeabcde"), S("abcde"), 5); - test(S("abcdeabcde"), S("abcdeabcde"), 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 20); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 15); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), S(""), 0); + test(S(""), S("abcde"), S::npos); + test(S(""), S("abcdeabcde"), S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcde"), S(""), 5); + test(S("abcde"), S("abcde"), 0); + test(S("abcde"), S("abcdeabcde"), S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcde"), S(""), 10); + test(S("abcdeabcde"), S("abcde"), 5); + test(S("abcdeabcde"), S("abcdeabcde"), 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 20); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 15); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -166,8 +160,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_rfind/string_view_size.pass.cpp @@ -17,129 +17,123 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(sv, pos)); - assert(s.rfind(sv, pos) == x); - if (x != S::npos) - assert(x <= pos && x + sv.size() <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(sv, pos)); + assert(s.rfind(sv, pos) == x); + if (x != S::npos) + assert(x <= pos && x + sv.size() <= s.size()); } template -TEST_CONSTEXPR_CXX20 void -test(const S& s, SV sv, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(sv)); - assert(s.rfind(sv) == x); - if (x != S::npos) - assert(0 <= x && x + sv.size() <= s.size()); +TEST_CONSTEXPR_CXX20 void test(const S& s, SV sv, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(sv)); + assert(s.rfind(sv) == x); + if (x != S::npos) + assert(0 <= x && x + sv.size() <= s.size()); } template -TEST_CONSTEXPR_CXX20 void test0() -{ - test(S(""), SV(""), 0, 0); - test(S(""), SV("abcde"), 0, S::npos); - test(S(""), SV("abcdeabcde"), 0, S::npos); - test(S(""), SV("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S(""), SV(""), 1, 0); - test(S(""), SV("abcde"), 1, S::npos); - test(S(""), SV("abcdeabcde"), 1, S::npos); - test(S(""), SV("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), SV(""), 0, 0); - test(S("abcde"), SV("abcde"), 0, 0); - test(S("abcde"), SV("abcdeabcde"), 0, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcde"), SV(""), 1, 1); - test(S("abcde"), SV("abcde"), 1, 0); - test(S("abcde"), SV("abcdeabcde"), 1, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), SV(""), 2, 2); - test(S("abcde"), SV("abcde"), 2, 0); - test(S("abcde"), SV("abcdeabcde"), 2, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 2, S::npos); - test(S("abcde"), SV(""), 4, 4); - test(S("abcde"), SV("abcde"), 4, 0); - test(S("abcde"), SV("abcdeabcde"), 4, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 4, S::npos); - test(S("abcde"), SV(""), 5, 5); - test(S("abcde"), SV("abcde"), 5, 0); - test(S("abcde"), SV("abcdeabcde"), 5, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcde"), SV(""), 6, 5); - test(S("abcde"), SV("abcde"), 6, 0); - test(S("abcde"), SV("abcdeabcde"), 6, S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 6, S::npos); - test(S("abcdeabcde"), SV(""), 0, 0); - test(S("abcdeabcde"), SV("abcde"), 0, 0); - test(S("abcdeabcde"), SV("abcdeabcde"), 0, 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcdeabcde"), SV(""), 1, 1); - test(S("abcdeabcde"), SV("abcde"), 1, 0); - test(S("abcdeabcde"), SV("abcdeabcde"), 1, 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), SV(""), 5, 5); - test(S("abcdeabcde"), SV("abcde"), 5, 5); - test(S("abcdeabcde"), SV("abcdeabcde"), 5, 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), SV(""), 9, 9); - test(S("abcdeabcde"), SV("abcde"), 9, 5); - test(S("abcdeabcde"), SV("abcdeabcde"), 9, 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), SV(""), 10, 10); - test(S("abcdeabcde"), SV("abcde"), 10, 5); - test(S("abcdeabcde"), SV("abcdeabcde"), 10, 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), SV(""), 11, 10); - test(S("abcdeabcde"), SV("abcde"), 11, 5); - test(S("abcdeabcde"), SV("abcdeabcde"), 11, 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), SV(""), 0, 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), SV(""), 1, 1); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), SV(""), 10, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 10, 0); - test(S("abcdeabcdeabcdeabcde"), SV(""), 19, 19); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 19, 15); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 19, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 19, 0); - test(S("abcdeabcdeabcdeabcde"), SV(""), 20, 20); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 20, 15); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 20, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 20, 0); - test(S("abcdeabcdeabcdeabcde"), SV(""), 21, 20); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 21, 15); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 21, 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 21, 0); +TEST_CONSTEXPR_CXX20 void test0() { + test(S(""), SV(""), 0, 0); + test(S(""), SV("abcde"), 0, S::npos); + test(S(""), SV("abcdeabcde"), 0, S::npos); + test(S(""), SV("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S(""), SV(""), 1, 0); + test(S(""), SV("abcde"), 1, S::npos); + test(S(""), SV("abcdeabcde"), 1, S::npos); + test(S(""), SV("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), SV(""), 0, 0); + test(S("abcde"), SV("abcde"), 0, 0); + test(S("abcde"), SV("abcdeabcde"), 0, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcde"), SV(""), 1, 1); + test(S("abcde"), SV("abcde"), 1, 0); + test(S("abcde"), SV("abcdeabcde"), 1, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), SV(""), 2, 2); + test(S("abcde"), SV("abcde"), 2, 0); + test(S("abcde"), SV("abcdeabcde"), 2, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 2, S::npos); + test(S("abcde"), SV(""), 4, 4); + test(S("abcde"), SV("abcde"), 4, 0); + test(S("abcde"), SV("abcdeabcde"), 4, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 4, S::npos); + test(S("abcde"), SV(""), 5, 5); + test(S("abcde"), SV("abcde"), 5, 0); + test(S("abcde"), SV("abcdeabcde"), 5, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcde"), SV(""), 6, 5); + test(S("abcde"), SV("abcde"), 6, 0); + test(S("abcde"), SV("abcdeabcde"), 6, S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), 6, S::npos); + test(S("abcdeabcde"), SV(""), 0, 0); + test(S("abcdeabcde"), SV("abcde"), 0, 0); + test(S("abcdeabcde"), SV("abcdeabcde"), 0, 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcdeabcde"), SV(""), 1, 1); + test(S("abcdeabcde"), SV("abcde"), 1, 0); + test(S("abcdeabcde"), SV("abcdeabcde"), 1, 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), SV(""), 5, 5); + test(S("abcdeabcde"), SV("abcde"), 5, 5); + test(S("abcdeabcde"), SV("abcdeabcde"), 5, 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), SV(""), 9, 9); + test(S("abcdeabcde"), SV("abcde"), 9, 5); + test(S("abcdeabcde"), SV("abcdeabcde"), 9, 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), SV(""), 10, 10); + test(S("abcdeabcde"), SV("abcde"), 10, 5); + test(S("abcdeabcde"), SV("abcdeabcde"), 10, 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), SV(""), 11, 10); + test(S("abcdeabcde"), SV("abcde"), 11, 5); + test(S("abcdeabcde"), SV("abcdeabcde"), 11, 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), SV(""), 0, 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), SV(""), 1, 1); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), SV(""), 10, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 10, 0); + test(S("abcdeabcdeabcdeabcde"), SV(""), 19, 19); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 19, 15); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 19, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 19, 0); + test(S("abcdeabcdeabcdeabcde"), SV(""), 20, 20); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 20, 15); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 20, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 20, 0); + test(S("abcdeabcdeabcdeabcde"), SV(""), 21, 20); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 21, 15); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 21, 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 21, 0); } template -TEST_CONSTEXPR_CXX20 void test1() -{ - test(S(""), SV(""), 0); - test(S(""), SV("abcde"), S::npos); - test(S(""), SV("abcdeabcde"), S::npos); - test(S(""), SV("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcde"), SV(""), 5); - test(S("abcde"), SV("abcde"), 0); - test(S("abcde"), SV("abcdeabcde"), S::npos); - test(S("abcde"), SV("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcde"), SV(""), 10); - test(S("abcdeabcde"), SV("abcde"), 5); - test(S("abcdeabcde"), SV("abcdeabcde"), 0); - test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcdeabcdeabcde"), SV(""), 20); - test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 15); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 10); - test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0); +TEST_CONSTEXPR_CXX20 void test1() { + test(S(""), SV(""), 0); + test(S(""), SV("abcde"), S::npos); + test(S(""), SV("abcdeabcde"), S::npos); + test(S(""), SV("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcde"), SV(""), 5); + test(S("abcde"), SV("abcde"), 0); + test(S("abcde"), SV("abcdeabcde"), S::npos); + test(S("abcde"), SV("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcde"), SV(""), 10); + test(S("abcdeabcde"), SV("abcde"), 5); + test(S("abcdeabcde"), SV("abcdeabcde"), 0); + test(S("abcdeabcde"), SV("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcdeabcdeabcde"), SV(""), 20); + test(S("abcdeabcdeabcdeabcde"), SV("abcde"), 15); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcde"), 10); + test(S("abcdeabcdeabcdeabcde"), SV("abcdeabcdeabcdeabcde"), 0); } TEST_CONSTEXPR_CXX20 bool test() { @@ -161,8 +155,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp b/libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.ops/string_substr/substr.pass.cpp @@ -21,31 +21,24 @@ #include "min_allocator.h" template -TEST_CONSTEXPR_CXX20 void -test(const S& s, typename S::size_type pos, typename S::size_type n) -{ - if (pos <= s.size()) - { - S str = s.substr(pos, n); - LIBCPP_ASSERT(str.__invariants()); - assert(pos <= s.size()); - typename S::size_type rlen = std::min(n, s.size() - pos); - assert(str.size() == rlen); - assert(S::traits_type::compare(s.data()+pos, str.data(), rlen) == 0); - } +TEST_CONSTEXPR_CXX20 void test(const S& s, typename S::size_type pos, typename S::size_type n) { + if (pos <= s.size()) { + S str = s.substr(pos, n); + LIBCPP_ASSERT(str.__invariants()); + assert(pos <= s.size()); + typename S::size_type rlen = std::min(n, s.size() - pos); + assert(str.size() == rlen); + assert(S::traits_type::compare(s.data() + pos, str.data(), rlen) == 0); + } #ifndef TEST_HAS_NO_EXCEPTIONS - else if (!TEST_IS_CONSTANT_EVALUATED) - { - try - { - S str = s.substr(pos, n); - assert(false); - } - catch (std::out_of_range&) - { - assert(pos > s.size()); - } + else if (!TEST_IS_CONSTANT_EVALUATED) { + try { + S str = s.substr(pos, n); + assert(false); + } catch (std::out_of_range&) { + assert(pos > s.size()); } + } #endif } @@ -127,14 +120,14 @@ test_allocator_statistics stats; { string str = string(alloc(&stats)); - stats = test_allocator_statistics(); + stats = test_allocator_statistics(); (void)str.substr(); assert(stats.moved == 0); assert(stats.copied == 0); } { string str = string(alloc(&stats)); - stats = test_allocator_statistics(); + stats = test_allocator_statistics(); (void)std::move(str).substr(); assert(stats.moved == 0); assert(stats.copied == 0); @@ -144,8 +137,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); test_alloc(); #if TEST_STD_VER > 17 diff --git a/libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp b/libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.require/contiguous.pass.cpp @@ -17,12 +17,10 @@ #include "test_allocator.h" #include "min_allocator.h" - template -TEST_CONSTEXPR_CXX20 void test_contiguous ( const C &c ) -{ - for ( std::size_t i = 0; i < c.size(); ++i ) - assert ( *(c.begin() + static_cast(i)) == *(std::addressof(*c.begin()) + i)); +TEST_CONSTEXPR_CXX20 void test_contiguous(const C& c) { + for (std::size_t i = 0; i < c.size(); ++i) + assert(*(c.begin() + static_cast(i)) == *(std::addressof(*c.begin()) + i)); } TEST_CONSTEXPR_CXX20 bool test() { @@ -53,8 +51,7 @@ return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.char.pass.cpp b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.char.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.char.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.char.pass.cpp @@ -19,22 +19,21 @@ constexpr bool test() { { typedef std::string S; - S s1 {}; - S s2 { "abcde", 5 }; + S s1{}; + S s2{"abcde", 5}; ASSERT_NOEXCEPT(s1.starts_with('e')); - assert (!s1.starts_with('a')); - assert (!s1.starts_with('x')); - assert ( s2.starts_with('a')); - assert (!s2.starts_with('x')); + assert(!s1.starts_with('a')); + assert(!s1.starts_with('x')); + assert(s2.starts_with('a')); + assert(!s2.starts_with('x')); } return true; } -int main(int, char**) -{ +int main(int, char**) { test(); static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.ptr.pass.cpp b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.ptr.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.ptr.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.ptr.pass.cpp @@ -19,50 +19,49 @@ constexpr bool test() { { typedef std::string S; - const char *s = "abcde"; - S s0 {}; - S s1 { s, 1 }; - S s2 { s, 2 }; -// S s3 { s, 3 }; -// S s4 { s, 4 }; -// S s5 { s, 5 }; - S sNot {"def", 3 }; + const char* s = "abcde"; + S s0{}; + S s1{s, 1}; + S s2{s, 2}; + // S s3 { s, 3 }; + // S s4 { s, 4 }; + // S s5 { s, 5 }; + S sNot{"def", 3}; LIBCPP_ASSERT_NOEXCEPT(s0.starts_with("")); - assert ( s0.starts_with("")); - assert (!s0.starts_with("a")); + assert(s0.starts_with("")); + assert(!s0.starts_with("a")); - assert ( s1.starts_with("")); - assert ( s1.starts_with("a")); - assert (!s1.starts_with("ab")); - assert (!s1.starts_with("abc")); - assert (!s1.starts_with("abcd")); - assert (!s1.starts_with("abcde")); - assert (!s1.starts_with("def")); + assert(s1.starts_with("")); + assert(s1.starts_with("a")); + assert(!s1.starts_with("ab")); + assert(!s1.starts_with("abc")); + assert(!s1.starts_with("abcd")); + assert(!s1.starts_with("abcde")); + assert(!s1.starts_with("def")); - assert ( s2.starts_with("")); - assert ( s2.starts_with("a")); - assert ( s2.starts_with("ab")); - assert (!s2.starts_with("abc")); - assert (!s2.starts_with("abcd")); - assert (!s2.starts_with("abcde")); - assert (!s2.starts_with("def")); + assert(s2.starts_with("")); + assert(s2.starts_with("a")); + assert(s2.starts_with("ab")); + assert(!s2.starts_with("abc")); + assert(!s2.starts_with("abcd")); + assert(!s2.starts_with("abcde")); + assert(!s2.starts_with("def")); - assert ( sNot.starts_with("")); - assert (!sNot.starts_with("a")); - assert (!sNot.starts_with("ab")); - assert (!sNot.starts_with("abc")); - assert (!sNot.starts_with("abcd")); - assert (!sNot.starts_with("abcde")); - assert ( sNot.starts_with("def")); + assert(sNot.starts_with("")); + assert(!sNot.starts_with("a")); + assert(!sNot.starts_with("ab")); + assert(!sNot.starts_with("abc")); + assert(!sNot.starts_with("abcd")); + assert(!sNot.starts_with("abcde")); + assert(sNot.starts_with("def")); } return true; } -int main(int, char**) -{ +int main(int, char**) { test(); static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.string_view.pass.cpp b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.string_view.pass.cpp --- a/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.string_view.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.starts_with/starts_with.string_view.pass.cpp @@ -17,60 +17,59 @@ #include "test_macros.h" constexpr bool test() { - typedef std::string S; - typedef std::string_view SV; - const char *s = "abcde"; + typedef std::string S; + typedef std::string_view SV; + const char* s = "abcde"; - S s0; - S s1 { s, 1 }; - S s2 { s, 2 }; -// S s3 { s, 3 }; -// S s4 { s, 4 }; -// S s5 { s, 5 }; - S sNot { "def", 3 }; + S s0; + S s1{s, 1}; + S s2{s, 2}; + // S s3 { s, 3 }; + // S s4 { s, 4 }; + // S s5 { s, 5 }; + S sNot{"def", 3}; - SV sv0; - SV sv1 { s, 1 }; - SV sv2 { s, 2 }; - SV sv3 { s, 3 }; - SV sv4 { s, 4 }; - SV sv5 { s, 5 }; - SV svNot {"def", 3 }; + SV sv0; + SV sv1{s, 1}; + SV sv2{s, 2}; + SV sv3{s, 3}; + SV sv4{s, 4}; + SV sv5{s, 5}; + SV svNot{"def", 3}; - ASSERT_NOEXCEPT(s0.starts_with(sv0)); + ASSERT_NOEXCEPT(s0.starts_with(sv0)); - assert ( s0.starts_with(sv0)); - assert (!s0.starts_with(sv1)); + assert(s0.starts_with(sv0)); + assert(!s0.starts_with(sv1)); - assert ( s1.starts_with(sv0)); - assert ( s1.starts_with(sv1)); - assert (!s1.starts_with(sv2)); - assert (!s1.starts_with(sv3)); - assert (!s1.starts_with(sv4)); - assert (!s1.starts_with(sv5)); - assert (!s1.starts_with(svNot)); + assert(s1.starts_with(sv0)); + assert(s1.starts_with(sv1)); + assert(!s1.starts_with(sv2)); + assert(!s1.starts_with(sv3)); + assert(!s1.starts_with(sv4)); + assert(!s1.starts_with(sv5)); + assert(!s1.starts_with(svNot)); - assert ( s2.starts_with(sv0)); - assert ( s2.starts_with(sv1)); - assert ( s2.starts_with(sv2)); - assert (!s2.starts_with(sv3)); - assert (!s2.starts_with(sv4)); - assert (!s2.starts_with(sv5)); - assert (!s2.starts_with(svNot)); + assert(s2.starts_with(sv0)); + assert(s2.starts_with(sv1)); + assert(s2.starts_with(sv2)); + assert(!s2.starts_with(sv3)); + assert(!s2.starts_with(sv4)); + assert(!s2.starts_with(sv5)); + assert(!s2.starts_with(svNot)); - assert ( sNot.starts_with(sv0)); - assert (!sNot.starts_with(sv1)); - assert (!sNot.starts_with(sv2)); - assert (!sNot.starts_with(sv3)); - assert (!sNot.starts_with(sv4)); - assert (!sNot.starts_with(sv5)); - assert ( sNot.starts_with(svNot)); + assert(sNot.starts_with(sv0)); + assert(!sNot.starts_with(sv1)); + assert(!sNot.starts_with(sv2)); + assert(!sNot.starts_with(sv3)); + assert(!sNot.starts_with(sv4)); + assert(!sNot.starts_with(sv5)); + assert(sNot.starts_with(svNot)); - return true; + return true; } -int main(int, char**) -{ +int main(int, char**) { test(); static_assert(test()); diff --git a/libcxx/test/std/strings/basic.string/test_traits.h b/libcxx/test/std/strings/basic.string/test_traits.h --- a/libcxx/test/std/strings/basic.string/test_traits.h +++ b/libcxx/test/std/strings/basic.string/test_traits.h @@ -10,9 +10,8 @@ #define TEST_TRAITS_H template -struct test_traits -{ - typedef charT char_type; +struct test_traits { + typedef charT char_type; }; #endif // TEST_TRAITS_H diff --git a/libcxx/test/std/strings/basic.string/traits_mismatch.verify.cpp b/libcxx/test/std/strings/basic.string/traits_mismatch.verify.cpp --- a/libcxx/test/std/strings/basic.string/traits_mismatch.verify.cpp +++ b/libcxx/test/std/strings/basic.string/traits_mismatch.verify.cpp @@ -13,4 +13,5 @@ #include -std::basic_string > s; // expected-error@*:* {{traits_type::char_type must be the same type as CharT}} +std::basic_string > + s; // expected-error@*:* {{traits_type::char_type must be the same type as CharT}} diff --git a/libcxx/test/std/strings/basic.string/types.pass.cpp b/libcxx/test/std/strings/basic.string/types.pass.cpp --- a/libcxx/test/std/strings/basic.string/types.pass.cpp +++ b/libcxx/test/std/strings/basic.string/types.pass.cpp @@ -41,48 +41,44 @@ #include "min_allocator.h" template -void -test() -{ - typedef std::basic_string S; +void test() { + typedef std::basic_string S; - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::size_type>::value), ""); - static_assert((std::is_same::difference_type>::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::pointer>::value), ""); - static_assert((std::is_same::const_pointer>::value), ""); - static_assert((std::is_same< - typename std::iterator_traits::iterator_category, - std::random_access_iterator_tag>::value), ""); - static_assert((std::is_same< - typename std::iterator_traits::iterator_category, - std::random_access_iterator_tag>::value), ""); - static_assert((std::is_same< - typename S::reverse_iterator, - std::reverse_iterator >::value), ""); - static_assert((std::is_same< - typename S::const_reverse_iterator, - std::reverse_iterator >::value), ""); - static_assert(S::npos == -1, ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::size_type>::value), ""); + static_assert( + (std::is_same::difference_type>::value), + ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::pointer>::value), ""); + static_assert( + (std::is_same::const_pointer>::value), ""); + static_assert((std::is_same< typename std::iterator_traits::iterator_category, + std::random_access_iterator_tag>::value), + ""); + static_assert((std::is_same< typename std::iterator_traits::iterator_category, + std::random_access_iterator_tag>::value), + ""); + static_assert((std::is_same< typename S::reverse_iterator, std::reverse_iterator >::value), ""); + static_assert( + (std::is_same< typename S::const_reverse_iterator, std::reverse_iterator >::value), + ""); + static_assert(S::npos == -1, ""); } -int main(int, char**) -{ - test, test_allocator >(); +int main(int, char**) { + test, test_allocator >(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test, std::allocator >(); + test, std::allocator >(); #endif - static_assert((std::is_same::traits_type, - std::char_traits >::value), ""); - static_assert((std::is_same::allocator_type, - std::allocator >::value), ""); + static_assert((std::is_same::traits_type, std::char_traits >::value), ""); + static_assert((std::is_same::allocator_type, std::allocator >::value), ""); #if TEST_STD_VER >= 11 - test, min_allocator >(); + test, min_allocator >(); #endif return 0; diff --git a/libcxx/test/std/strings/c.strings/cctype.pass.cpp b/libcxx/test/std/strings/c.strings/cctype.pass.cpp --- a/libcxx/test/std/strings/c.strings/cctype.pass.cpp +++ b/libcxx/test/std/strings/c.strings/cctype.pass.cpp @@ -15,93 +15,91 @@ #include "test_macros.h" #ifdef isalnum -#error isalnum defined +# error isalnum defined #endif #ifdef isalpha -#error isalpha defined +# error isalpha defined #endif #ifdef isblank -#error isblank defined +# error isblank defined #endif #ifdef iscntrl -#error iscntrl defined +# error iscntrl defined #endif #ifdef isdigit -#error isdigit defined +# error isdigit defined #endif #ifdef isgraph -#error isgraph defined +# error isgraph defined #endif #ifdef islower -#error islower defined +# error islower defined #endif #ifdef isprint -#error isprint defined +# error isprint defined #endif #ifdef ispunct -#error ispunct defined +# error ispunct defined #endif #ifdef isspace -#error isspace defined +# error isspace defined #endif #ifdef isupper -#error isupper defined +# error isupper defined #endif #ifdef isxdigit -#error isxdigit defined +# error isxdigit defined #endif #ifdef tolower -#error tolower defined +# error tolower defined #endif #ifdef toupper -#error toupper defined +# error toupper defined #endif -int main(int, char**) -{ - - ASSERT_SAME_TYPE(int, decltype(std::isalnum(0))); - ASSERT_SAME_TYPE(int, decltype(std::isalpha(0))); - ASSERT_SAME_TYPE(int, decltype(std::isblank(0))); - ASSERT_SAME_TYPE(int, decltype(std::iscntrl(0))); - ASSERT_SAME_TYPE(int, decltype(std::isdigit(0))); - ASSERT_SAME_TYPE(int, decltype(std::isgraph(0))); - ASSERT_SAME_TYPE(int, decltype(std::islower(0))); - ASSERT_SAME_TYPE(int, decltype(std::isprint(0))); - ASSERT_SAME_TYPE(int, decltype(std::ispunct(0))); - ASSERT_SAME_TYPE(int, decltype(std::isspace(0))); - ASSERT_SAME_TYPE(int, decltype(std::isupper(0))); - ASSERT_SAME_TYPE(int, decltype(std::isxdigit(0))); - ASSERT_SAME_TYPE(int, decltype(std::tolower(0))); - ASSERT_SAME_TYPE(int, decltype(std::toupper(0))); - - assert( std::isalnum('a')); - assert( std::isalpha('a')); - assert( std::isblank(' ')); - assert(!std::iscntrl(' ')); - assert(!std::isdigit('a')); - assert( std::isgraph('a')); - assert( std::islower('a')); - assert( std::isprint('a')); - assert(!std::ispunct('a')); - assert(!std::isspace('a')); - assert(!std::isupper('a')); - assert( std::isxdigit('a')); - assert( std::tolower('A') == 'a'); - assert( std::toupper('a') == 'A'); +int main(int, char**) { + ASSERT_SAME_TYPE(int, decltype(std::isalnum(0))); + ASSERT_SAME_TYPE(int, decltype(std::isalpha(0))); + ASSERT_SAME_TYPE(int, decltype(std::isblank(0))); + ASSERT_SAME_TYPE(int, decltype(std::iscntrl(0))); + ASSERT_SAME_TYPE(int, decltype(std::isdigit(0))); + ASSERT_SAME_TYPE(int, decltype(std::isgraph(0))); + ASSERT_SAME_TYPE(int, decltype(std::islower(0))); + ASSERT_SAME_TYPE(int, decltype(std::isprint(0))); + ASSERT_SAME_TYPE(int, decltype(std::ispunct(0))); + ASSERT_SAME_TYPE(int, decltype(std::isspace(0))); + ASSERT_SAME_TYPE(int, decltype(std::isupper(0))); + ASSERT_SAME_TYPE(int, decltype(std::isxdigit(0))); + ASSERT_SAME_TYPE(int, decltype(std::tolower(0))); + ASSERT_SAME_TYPE(int, decltype(std::toupper(0))); + + assert(std::isalnum('a')); + assert(std::isalpha('a')); + assert(std::isblank(' ')); + assert(!std::iscntrl(' ')); + assert(!std::isdigit('a')); + assert(std::isgraph('a')); + assert(std::islower('a')); + assert(std::isprint('a')); + assert(!std::ispunct('a')); + assert(!std::isspace('a')); + assert(!std::isupper('a')); + assert(std::isxdigit('a')); + assert(std::tolower('A') == 'a'); + assert(std::toupper('a') == 'A'); return 0; } diff --git a/libcxx/test/std/strings/c.strings/cstring.pass.cpp b/libcxx/test/std/strings/c.strings/cstring.pass.cpp --- a/libcxx/test/std/strings/c.strings/cstring.pass.cpp +++ b/libcxx/test/std/strings/c.strings/cstring.pass.cpp @@ -15,124 +15,123 @@ #include "test_macros.h" #ifndef NULL -#error NULL not defined +# error NULL not defined #endif -int main(int, char**) -{ - // Functions we get directly from the C library (just check the signature) - { - std::size_t s = 0; - void* vp = 0; - const void* vpc = 0; - char* cp = 0; - const char* cpc = 0; - ASSERT_SAME_TYPE(void*, decltype(std::memcpy(vp, vpc, s))); - ASSERT_SAME_TYPE(void*, decltype(std::memmove(vp, vpc, s))); - ASSERT_SAME_TYPE(char*, decltype(std::strcpy(cp, cpc))); - ASSERT_SAME_TYPE(char*, decltype(std::strncpy(cp, cpc, s))); - ASSERT_SAME_TYPE(char*, decltype(std::strcat(cp, cpc))); - ASSERT_SAME_TYPE(char*, decltype(std::strncat(cp, cpc, s))); - ASSERT_SAME_TYPE(int, decltype(std::memcmp(vpc, vpc, s))); - ASSERT_SAME_TYPE(int, decltype(std::strcmp(cpc, cpc))); - ASSERT_SAME_TYPE(int, decltype(std::strncmp(cpc, cpc, s))); - ASSERT_SAME_TYPE(int, decltype(std::strcoll(cpc, cpc))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::strxfrm(cp, cpc, s))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::strcspn(cpc, cpc))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::strspn(cpc, cpc))); - ASSERT_SAME_TYPE(char*, decltype(std::strtok(cp, cpc))); - ASSERT_SAME_TYPE(void*, decltype(std::memset(vp, 0, s))); - ASSERT_SAME_TYPE(char*, decltype(std::strerror(0))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::strlen(cpc))); - } +int main(int, char**) { + // Functions we get directly from the C library (just check the signature) + { + std::size_t s = 0; + void* vp = 0; + const void* vpc = 0; + char* cp = 0; + const char* cpc = 0; + ASSERT_SAME_TYPE(void*, decltype(std::memcpy(vp, vpc, s))); + ASSERT_SAME_TYPE(void*, decltype(std::memmove(vp, vpc, s))); + ASSERT_SAME_TYPE(char*, decltype(std::strcpy(cp, cpc))); + ASSERT_SAME_TYPE(char*, decltype(std::strncpy(cp, cpc, s))); + ASSERT_SAME_TYPE(char*, decltype(std::strcat(cp, cpc))); + ASSERT_SAME_TYPE(char*, decltype(std::strncat(cp, cpc, s))); + ASSERT_SAME_TYPE(int, decltype(std::memcmp(vpc, vpc, s))); + ASSERT_SAME_TYPE(int, decltype(std::strcmp(cpc, cpc))); + ASSERT_SAME_TYPE(int, decltype(std::strncmp(cpc, cpc, s))); + ASSERT_SAME_TYPE(int, decltype(std::strcoll(cpc, cpc))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::strxfrm(cp, cpc, s))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::strcspn(cpc, cpc))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::strspn(cpc, cpc))); + ASSERT_SAME_TYPE(char*, decltype(std::strtok(cp, cpc))); + ASSERT_SAME_TYPE(void*, decltype(std::memset(vp, 0, s))); + ASSERT_SAME_TYPE(char*, decltype(std::strerror(0))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::strlen(cpc))); + } - // Functions we (may) reimplement - { - // const char* strchr(const char*, int) - char storage[] = "hello world"; - const char* s = storage; - ASSERT_SAME_TYPE(const char*, decltype(std::strchr(s, 'l'))); - const char* res = std::strchr(s, 'l'); - assert(res == &s[2]); - } - { - // char* strchr(char*, int) - char storage[] = "hello world"; - char* s = storage; - ASSERT_SAME_TYPE(char*, decltype(std::strchr(s, 'l'))); - char* res = std::strchr(s, 'l'); - assert(res == &s[2]); - } + // Functions we (may) reimplement + { + // const char* strchr(const char*, int) + char storage[] = "hello world"; + const char* s = storage; + ASSERT_SAME_TYPE(const char*, decltype(std::strchr(s, 'l'))); + const char* res = std::strchr(s, 'l'); + assert(res == &s[2]); + } + { + // char* strchr(char*, int) + char storage[] = "hello world"; + char* s = storage; + ASSERT_SAME_TYPE(char*, decltype(std::strchr(s, 'l'))); + char* res = std::strchr(s, 'l'); + assert(res == &s[2]); + } - { - // const char* strpbrk(const char*, const char*) - char storage[] = "hello world"; - const char* s = storage; - ASSERT_SAME_TYPE(const char*, decltype(std::strpbrk(s, "el"))); - const char* res = std::strpbrk(s, "el"); - assert(res == &s[1]); - } - { - // char* strpbrk(char*, const char*) - char storage[] = "hello world"; - char* s = storage; - ASSERT_SAME_TYPE(char*, decltype(std::strpbrk(s, "el"))); - char* res = std::strpbrk(s, "el"); - assert(res == &s[1]); - } + { + // const char* strpbrk(const char*, const char*) + char storage[] = "hello world"; + const char* s = storage; + ASSERT_SAME_TYPE(const char*, decltype(std::strpbrk(s, "el"))); + const char* res = std::strpbrk(s, "el"); + assert(res == &s[1]); + } + { + // char* strpbrk(char*, const char*) + char storage[] = "hello world"; + char* s = storage; + ASSERT_SAME_TYPE(char*, decltype(std::strpbrk(s, "el"))); + char* res = std::strpbrk(s, "el"); + assert(res == &s[1]); + } - { - // const char* strrchr(const char*, int) - char storage[] = "hello world"; - const char* s = storage; - ASSERT_SAME_TYPE(const char*, decltype(std::strrchr(s, 'l'))); - const char* res = std::strrchr(s, 'l'); - assert(res == &s[9]); - } - { - // char* strrchr(char*, int) - char storage[] = "hello world"; - char* s = storage; - ASSERT_SAME_TYPE(char*, decltype(std::strrchr(s, 'l'))); - char* res = std::strrchr(s, 'l'); - assert(res == &s[9]); - } + { + // const char* strrchr(const char*, int) + char storage[] = "hello world"; + const char* s = storage; + ASSERT_SAME_TYPE(const char*, decltype(std::strrchr(s, 'l'))); + const char* res = std::strrchr(s, 'l'); + assert(res == &s[9]); + } + { + // char* strrchr(char*, int) + char storage[] = "hello world"; + char* s = storage; + ASSERT_SAME_TYPE(char*, decltype(std::strrchr(s, 'l'))); + char* res = std::strrchr(s, 'l'); + assert(res == &s[9]); + } - { - // const void* memchr(const void*, int, size_t) - char storage[] = "hello world"; - std::size_t count = 11; - const void* s = storage; - ASSERT_SAME_TYPE(const void*, decltype(std::memchr(s, 'l', count))); - const void* res = std::memchr(s, 'l', count); - assert(res == &storage[2]); - } - { - // void* memchr(void*, int, size_t) - char storage[] = "hello world"; - std::size_t count = 11; - void* s = storage; - ASSERT_SAME_TYPE(void*, decltype(std::memchr(s, 'l', count))); - void* res = std::memchr(s, 'l', count); - assert(res == &storage[2]); - } + { + // const void* memchr(const void*, int, size_t) + char storage[] = "hello world"; + std::size_t count = 11; + const void* s = storage; + ASSERT_SAME_TYPE(const void*, decltype(std::memchr(s, 'l', count))); + const void* res = std::memchr(s, 'l', count); + assert(res == &storage[2]); + } + { + // void* memchr(void*, int, size_t) + char storage[] = "hello world"; + std::size_t count = 11; + void* s = storage; + ASSERT_SAME_TYPE(void*, decltype(std::memchr(s, 'l', count))); + void* res = std::memchr(s, 'l', count); + assert(res == &storage[2]); + } - { - // const char* strstr(const char*, const char*) - char storage[] = "hello world"; - const char* s = storage; - ASSERT_SAME_TYPE(const char*, decltype(std::strstr(s, "wor"))); - const char* res = std::strstr(s, "wor"); - assert(res == &storage[6]); - } - { - // char* strstr(char*, const char*) - char storage[] = "hello world"; - char* s = storage; - ASSERT_SAME_TYPE(char*, decltype(std::strstr(s, "wor"))); - char* res = std::strstr(s, "wor"); - assert(res == &storage[6]); - } + { + // const char* strstr(const char*, const char*) + char storage[] = "hello world"; + const char* s = storage; + ASSERT_SAME_TYPE(const char*, decltype(std::strstr(s, "wor"))); + const char* res = std::strstr(s, "wor"); + assert(res == &storage[6]); + } + { + // char* strstr(char*, const char*) + char storage[] = "hello world"; + char* s = storage; + ASSERT_SAME_TYPE(char*, decltype(std::strstr(s, "wor"))); + char* res = std::strstr(s, "wor"); + assert(res == &storage[6]); + } - return 0; + return 0; } diff --git a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp --- a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp +++ b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp @@ -19,112 +19,111 @@ #include "test_macros.h" #ifndef NULL -#error NULL not defined +# error NULL not defined #endif #ifndef WCHAR_MAX -#error WCHAR_MAX not defined +# error WCHAR_MAX not defined #endif #ifndef WCHAR_MIN -#error WCHAR_MIN not defined +# error WCHAR_MIN not defined #endif #ifndef WEOF -#error WEOF not defined +# error WEOF not defined #endif -int main(int, char**) -{ - std::mbstate_t mb = {}; - std::size_t s = 0; - std::tm *tm = 0; - std::wint_t w = 0; - ::FILE* fp = 0; - std::va_list va; +int main(int, char**) { + std::mbstate_t mb = {}; + std::size_t s = 0; + std::tm* tm = 0; + std::wint_t w = 0; + ::FILE* fp = 0; + std::va_list va; - char* ns = 0; - wchar_t* ws = 0; - const wchar_t* cws = 0; - wchar_t** wsp = 0; + char* ns = 0; + wchar_t* ws = 0; + const wchar_t* cws = 0; + wchar_t** wsp = 0; - ((void)mb); // Prevent unused warning - ((void)s); // Prevent unused warning - ((void)tm); // Prevent unused warning - ((void)w); // Prevent unused warning - ((void)fp); // Prevent unused warning - ((void)va); // Prevent unused warning - ((void)ns); // Prevent unused warning - ((void)ws); // Prevent unused warning - ((void)cws); // Prevent unused warning - ((void)wsp); // Prevent unused warning + ((void)mb); // Prevent unused warning + ((void)s); // Prevent unused warning + ((void)tm); // Prevent unused warning + ((void)w); // Prevent unused warning + ((void)fp); // Prevent unused warning + ((void)va); // Prevent unused warning + ((void)ns); // Prevent unused warning + ((void)ws); // Prevent unused warning + ((void)cws); // Prevent unused warning + ((void)wsp); // Prevent unused warning - ASSERT_SAME_TYPE(int, decltype(std::fwprintf(fp, L""))); - ASSERT_SAME_TYPE(int, decltype(std::fwscanf(fp, L""))); - ASSERT_SAME_TYPE(int, decltype(std::swprintf(ws, s, L""))); - ASSERT_SAME_TYPE(int, decltype(std::swscanf(L"", L""))); - ASSERT_SAME_TYPE(int, decltype(std::vfwprintf(fp, L"", va))); - ASSERT_SAME_TYPE(int, decltype(std::vfwscanf(fp, L"", va))); - ASSERT_SAME_TYPE(int, decltype(std::vswprintf(ws, s, L"", va))); - ASSERT_SAME_TYPE(int, decltype(std::vswscanf(L"", L"", va))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::fgetwc(fp))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::fgetws(ws, 0, fp))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::fputwc(L' ', fp))); - ASSERT_SAME_TYPE(int, decltype(std::fputws(L"", fp))); - ASSERT_SAME_TYPE(int, decltype(std::fwide(fp, 0))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::getwc(fp))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::putwc(L' ', fp))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::ungetwc(L' ', fp))); - ASSERT_SAME_TYPE(double, decltype(std::wcstod(L"", wsp))); - ASSERT_SAME_TYPE(float, decltype(std::wcstof(L"", wsp))); - ASSERT_SAME_TYPE(long double, decltype(std::wcstold(L"", wsp))); - ASSERT_SAME_TYPE(long, decltype(std::wcstol(L"", wsp, 0))); - ASSERT_SAME_TYPE(long long, decltype(std::wcstoll(L"", wsp, 0))); - ASSERT_SAME_TYPE(unsigned long, decltype(std::wcstoul(L"", wsp, 0))); - ASSERT_SAME_TYPE(unsigned long long, decltype(std::wcstoull(L"", wsp, 0))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcscpy(ws, L""))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsncpy(ws, L"", s))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcscat(ws, L""))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsncat(ws, L"", s))); - ASSERT_SAME_TYPE(int, decltype(std::wcscmp(L"", L""))); - ASSERT_SAME_TYPE(int, decltype(std::wcscoll(L"", L""))); - ASSERT_SAME_TYPE(int, decltype(std::wcsncmp(L"", L"", s))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsxfrm(ws, L"", s))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcschr(ws, L' '))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcschr(cws, L' '))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::wcscspn(L"", L""))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::wcslen(L""))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcspbrk(ws, L""))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcspbrk(cws, L""))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsrchr(ws, L' '))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsrchr(cws, L' '))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsspn(L"", L""))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsstr(ws, L""))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsstr(cws, L""))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcstok(ws, L"", wsp))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemchr(ws, L' ', s))); - ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wmemchr(cws, L' ', s))); - ASSERT_SAME_TYPE(int, decltype(std::wmemcmp(L"", L"", s))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemcpy(ws, L"", s))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemmove(ws, L"", s))); - ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemset(ws, L' ', s))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsftime(ws, s, L"", tm))); - ASSERT_SAME_TYPE(wint_t, decltype(std::btowc(0))); - ASSERT_SAME_TYPE(int, decltype(std::wctob(w))); - ASSERT_SAME_TYPE(int, decltype(std::mbsinit(&mb))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::mbrlen("", s, &mb))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::mbrtowc(ws, "", s, &mb))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::wcrtomb(ns, L' ', &mb))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::mbsrtowcs(ws, (const char**)0, s, &mb))); - ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsrtombs(ns, (const wchar_t**)0, s, &mb))); + ASSERT_SAME_TYPE(int, decltype(std::fwprintf(fp, L""))); + ASSERT_SAME_TYPE(int, decltype(std::fwscanf(fp, L""))); + ASSERT_SAME_TYPE(int, decltype(std::swprintf(ws, s, L""))); + ASSERT_SAME_TYPE(int, decltype(std::swscanf(L"", L""))); + ASSERT_SAME_TYPE(int, decltype(std::vfwprintf(fp, L"", va))); + ASSERT_SAME_TYPE(int, decltype(std::vfwscanf(fp, L"", va))); + ASSERT_SAME_TYPE(int, decltype(std::vswprintf(ws, s, L"", va))); + ASSERT_SAME_TYPE(int, decltype(std::vswscanf(L"", L"", va))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::fgetwc(fp))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::fgetws(ws, 0, fp))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::fputwc(L' ', fp))); + ASSERT_SAME_TYPE(int, decltype(std::fputws(L"", fp))); + ASSERT_SAME_TYPE(int, decltype(std::fwide(fp, 0))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::getwc(fp))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::putwc(L' ', fp))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::ungetwc(L' ', fp))); + ASSERT_SAME_TYPE(double, decltype(std::wcstod(L"", wsp))); + ASSERT_SAME_TYPE(float, decltype(std::wcstof(L"", wsp))); + ASSERT_SAME_TYPE(long double, decltype(std::wcstold(L"", wsp))); + ASSERT_SAME_TYPE(long, decltype(std::wcstol(L"", wsp, 0))); + ASSERT_SAME_TYPE(long long, decltype(std::wcstoll(L"", wsp, 0))); + ASSERT_SAME_TYPE(unsigned long, decltype(std::wcstoul(L"", wsp, 0))); + ASSERT_SAME_TYPE(unsigned long long, decltype(std::wcstoull(L"", wsp, 0))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcscpy(ws, L""))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsncpy(ws, L"", s))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcscat(ws, L""))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsncat(ws, L"", s))); + ASSERT_SAME_TYPE(int, decltype(std::wcscmp(L"", L""))); + ASSERT_SAME_TYPE(int, decltype(std::wcscoll(L"", L""))); + ASSERT_SAME_TYPE(int, decltype(std::wcsncmp(L"", L"", s))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsxfrm(ws, L"", s))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcschr(ws, L' '))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcschr(cws, L' '))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::wcscspn(L"", L""))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::wcslen(L""))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcspbrk(ws, L""))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcspbrk(cws, L""))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsrchr(ws, L' '))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsrchr(cws, L' '))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsspn(L"", L""))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcsstr(ws, L""))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wcsstr(cws, L""))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wcstok(ws, L"", wsp))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemchr(ws, L' ', s))); + ASSERT_SAME_TYPE(const wchar_t*, decltype(std::wmemchr(cws, L' ', s))); + ASSERT_SAME_TYPE(int, decltype(std::wmemcmp(L"", L"", s))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemcpy(ws, L"", s))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemmove(ws, L"", s))); + ASSERT_SAME_TYPE(wchar_t*, decltype(std::wmemset(ws, L' ', s))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsftime(ws, s, L"", tm))); + ASSERT_SAME_TYPE(wint_t, decltype(std::btowc(0))); + ASSERT_SAME_TYPE(int, decltype(std::wctob(w))); + ASSERT_SAME_TYPE(int, decltype(std::mbsinit(&mb))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::mbrlen("", s, &mb))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::mbrtowc(ws, "", s, &mb))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::wcrtomb(ns, L' ', &mb))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::mbsrtowcs(ws, (const char**)0, s, &mb))); + ASSERT_SAME_TYPE(std::size_t, decltype(std::wcsrtombs(ns, (const wchar_t**)0, s, &mb))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::getwchar())); - ASSERT_SAME_TYPE(int, decltype(std::vwscanf(L"", va))); - ASSERT_SAME_TYPE(int, decltype(std::wscanf(L""))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::getwchar())); + ASSERT_SAME_TYPE(int, decltype(std::vwscanf(L"", va))); + ASSERT_SAME_TYPE(int, decltype(std::wscanf(L""))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::putwchar(L' '))); - ASSERT_SAME_TYPE(int, decltype(std::vwprintf(L"", va))); - ASSERT_SAME_TYPE(int, decltype(std::wprintf(L""))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::putwchar(L' '))); + ASSERT_SAME_TYPE(int, decltype(std::vwprintf(L"", va))); + ASSERT_SAME_TYPE(int, decltype(std::wprintf(L""))); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/c.strings/cwctype.pass.cpp b/libcxx/test/std/strings/c.strings/cwctype.pass.cpp --- a/libcxx/test/std/strings/c.strings/cwctype.pass.cpp +++ b/libcxx/test/std/strings/c.strings/cwctype.pass.cpp @@ -15,106 +15,104 @@ #include "test_macros.h" - #ifndef WEOF -#error WEOF not defined +# error WEOF not defined #endif #ifdef iswalnum -#error iswalnum defined +# error iswalnum defined #endif #ifdef iswalpha -#error iswalpha defined +# error iswalpha defined #endif #ifdef iswblank -#error iswblank defined +# error iswblank defined #endif #ifdef iswcntrl -#error iswcntrl defined +# error iswcntrl defined #endif #ifdef iswdigit -#error iswdigit defined +# error iswdigit defined #endif #ifdef iswgraph -#error iswgraph defined +# error iswgraph defined #endif #ifdef iswlower -#error iswlower defined +# error iswlower defined #endif #ifdef iswprint -#error iswprint defined +# error iswprint defined #endif #ifdef iswpunct -#error iswpunct defined +# error iswpunct defined #endif #ifdef iswspace -#error iswspace defined +# error iswspace defined #endif #ifdef iswupper -#error iswupper defined +# error iswupper defined #endif #ifdef iswxdigit -#error iswxdigit defined +# error iswxdigit defined #endif #ifdef iswctype -#error iswctype defined +# error iswctype defined #endif #ifdef wctype -#error wctype defined +# error wctype defined #endif #ifdef towlower -#error towlower defined +# error towlower defined #endif #ifdef towupper -#error towupper defined +# error towupper defined #endif #ifdef towctrans -#error towctrans defined +# error towctrans defined #endif #ifdef wctrans -#error wctrans defined -#endif - -int main(int, char**) -{ - std::wint_t w = 0; - ASSERT_SAME_TYPE(int, decltype(std::iswalnum(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswalpha(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswblank(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswcntrl(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswdigit(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswgraph(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswlower(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswprint(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswpunct(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswspace(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswupper(w))); - ASSERT_SAME_TYPE(int, decltype(std::iswxdigit(w))); - - ASSERT_SAME_TYPE(int, decltype(std::iswctype(w, std::wctype_t()))); - - ASSERT_SAME_TYPE(std::wctype_t, decltype(std::wctype(""))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::towlower(w))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::towupper(w))); - ASSERT_SAME_TYPE(std::wint_t, decltype(std::towctrans(w, std::wctrans_t()))); - ASSERT_SAME_TYPE(std::wctrans_t, decltype(std::wctrans(""))); +# error wctrans defined +#endif + +int main(int, char**) { + std::wint_t w = 0; + ASSERT_SAME_TYPE(int, decltype(std::iswalnum(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswalpha(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswblank(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswcntrl(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswdigit(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswgraph(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswlower(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswprint(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswpunct(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswspace(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswupper(w))); + ASSERT_SAME_TYPE(int, decltype(std::iswxdigit(w))); + + ASSERT_SAME_TYPE(int, decltype(std::iswctype(w, std::wctype_t()))); + + ASSERT_SAME_TYPE(std::wctype_t, decltype(std::wctype(""))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::towlower(w))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::towupper(w))); + ASSERT_SAME_TYPE(std::wint_t, decltype(std::towctrans(w, std::wctrans_t()))); + ASSERT_SAME_TYPE(std::wctrans_t, decltype(std::wctrans(""))); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.require/nothing_to_do.pass.cpp @@ -6,8 +6,4 @@ // //===----------------------------------------------------------------------===// -int main(int, char**) -{ - - return 0; -} +int main(int, char**) { return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign2.pass.cpp @@ -19,22 +19,20 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - char c = '1'; - std::char_traits::assign(c, 'a'); - return c == 'a'; +constexpr bool test_constexpr() { + char c = '1'; + std::char_traits::assign(c, 'a'); + return c == 'a'; } #endif -int main(int, char**) -{ - char c = '\0'; - std::char_traits::assign(c, 'a'); - assert(c == 'a'); +int main(int, char**) { + char c = '\0'; + std::char_traits::assign(c, 'a'); + assert(c == 'a'); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/assign3.pass.cpp @@ -17,24 +17,22 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char s2[3] = {0}; - assert(std::char_traits::assign(s2, 3, char(5)) == s2); - assert(s2[0] == char(5)); - assert(s2[1] == char(5)); - assert(s2[2] == char(5)); - assert(std::char_traits::assign(NULL, 0, char(5)) == NULL); +TEST_CONSTEXPR_CXX20 bool test() { + char s2[3] = {0}; + assert(std::char_traits::assign(s2, 3, char(5)) == s2); + assert(s2[0] == char(5)); + assert(s2[1] == char(5)); + assert(s2[2] == char(5)); + assert(std::char_traits::assign(NULL, 0, char(5)) == NULL); return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/copy.pass.cpp @@ -17,26 +17,24 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char s1[] = {1, 2, 3}; - char s2[3] = {0}; - assert(std::char_traits::copy(s2, s1, 3) == s2); - assert(s2[0] == char(1)); - assert(s2[1] == char(2)); - assert(s2[2] == char(3)); - assert(std::char_traits::copy(NULL, s1, 0) == NULL); - assert(std::char_traits::copy(s1, NULL, 0) == s1); +TEST_CONSTEXPR_CXX20 bool test() { + char s1[] = {1, 2, 3}; + char s2[3] = {0}; + assert(std::char_traits::copy(s2, s1, 3) == s2); + assert(s2[0] == char(1)); + assert(s2[1] == char(2)); + assert(s2[2] == char(3)); + assert(std::char_traits::copy(NULL, s1, 0) == NULL); + assert(std::char_traits::copy(s1, NULL, 0) == s1); return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eof.pass.cpp @@ -17,9 +17,8 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::eof() == EOF); +int main(int, char**) { + assert(std::char_traits::eof() == EOF); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq.pass.cpp @@ -17,10 +17,9 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::eq('a', 'a')); - assert(!std::char_traits::eq('a', 'A')); +int main(int, char**) { + assert(std::char_traits::eq('a', 'a')); + assert(!std::char_traits::eq('a', 'A')); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/eq_int_type.pass.cpp @@ -17,13 +17,11 @@ #include "test_macros.h" -int main(int, char**) -{ - assert( std::char_traits::eq_int_type('a', 'a')); - assert(!std::char_traits::eq_int_type('a', 'A')); - assert(!std::char_traits::eq_int_type(std::char_traits::eof(), 'A')); - assert( std::char_traits::eq_int_type(std::char_traits::eof(), - std::char_traits::eof())); +int main(int, char**) { + assert(std::char_traits::eq_int_type('a', 'a')); + assert(!std::char_traits::eq_int_type('a', 'A')); + assert(!std::char_traits::eq_int_type(std::char_traits::eof(), 'A')); + assert(std::char_traits::eq_int_type(std::char_traits::eof(), std::char_traits::eof())); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/find.pass.cpp @@ -19,28 +19,24 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - constexpr const char *p = "123"; - return std::char_traits::find(p, 3, '1') == p - && std::char_traits::find(p, 3, '2') == p + 1 - && std::char_traits::find(p, 3, '3') == p + 2 - && std::char_traits::find(p, 3, '4') == nullptr; +constexpr bool test_constexpr() { + constexpr const char* p = "123"; + return std::char_traits::find(p, 3, '1') == p && std::char_traits::find(p, 3, '2') == p + 1 && + std::char_traits::find(p, 3, '3') == p + 2 && std::char_traits::find(p, 3, '4') == nullptr; } #endif -int main(int, char**) -{ - char s1[] = {1, 2, 3}; - assert(std::char_traits::find(s1, 3, char(1)) == s1); - assert(std::char_traits::find(s1, 3, char(2)) == s1+1); - assert(std::char_traits::find(s1, 3, char(3)) == s1+2); - assert(std::char_traits::find(s1, 3, char(4)) == 0); - assert(std::char_traits::find(s1, 3, char(0)) == 0); - assert(std::char_traits::find(NULL, 0, char(0)) == 0); +int main(int, char**) { + char s1[] = {1, 2, 3}; + assert(std::char_traits::find(s1, 3, char(1)) == s1); + assert(std::char_traits::find(s1, 3, char(2)) == s1 + 1); + assert(std::char_traits::find(s1, 3, char(3)) == s1 + 2); + assert(std::char_traits::find(s1, 3, char(4)) == 0); + assert(std::char_traits::find(s1, 3, char(0)) == 0); + assert(std::char_traits::find(NULL, 0, char(0)) == 0); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/length.pass.cpp @@ -19,24 +19,20 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - return std::char_traits::length("") == 0 - && std::char_traits::length("abcd") == 4; +constexpr bool test_constexpr() { + return std::char_traits::length("") == 0 && std::char_traits::length("abcd") == 4; } #endif - -int main(int, char**) -{ - assert(std::char_traits::length("") == 0); - assert(std::char_traits::length("a") == 1); - assert(std::char_traits::length("aa") == 2); - assert(std::char_traits::length("aaa") == 3); - assert(std::char_traits::length("aaaa") == 4); +int main(int, char**) { + assert(std::char_traits::length("") == 0); + assert(std::char_traits::length("a") == 1); + assert(std::char_traits::length("aa") == 2); + assert(std::char_traits::length("aaa") == 3); + assert(std::char_traits::length("aaaa") == 4); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/lt.pass.cpp @@ -17,8 +17,7 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { assert(std::char_traits::lt('\0', 'A') == ('\0' < 'A')); assert(std::char_traits::lt('A', '\0') == ('A' < '\0')); diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/move.pass.cpp @@ -17,30 +17,28 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char s1[] = {1, 2, 3}; - assert(std::char_traits::move(s1, s1+1, 2) == s1); - assert(s1[0] == char(2)); - assert(s1[1] == char(3)); - assert(s1[2] == char(3)); - s1[2] = char(0); - assert(std::char_traits::move(s1+1, s1, 2) == s1+1); - assert(s1[0] == char(2)); - assert(s1[1] == char(2)); - assert(s1[2] == char(3)); - assert(std::char_traits::move(NULL, s1, 0) == NULL); - assert(std::char_traits::move(s1, NULL, 0) == s1); +TEST_CONSTEXPR_CXX20 bool test() { + char s1[] = {1, 2, 3}; + assert(std::char_traits::move(s1, s1 + 1, 2) == s1); + assert(s1[0] == char(2)); + assert(s1[1] == char(3)); + assert(s1[2] == char(3)); + s1[2] = char(0); + assert(std::char_traits::move(s1 + 1, s1, 2) == s1 + 1); + assert(s1[0] == char(2)); + assert(s1[1] == char(2)); + assert(s1[2] == char(3)); + assert(std::char_traits::move(NULL, s1, 0) == NULL); + assert(std::char_traits::move(s1, NULL, 0) == s1); return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/not_eof.pass.cpp @@ -17,13 +17,11 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::not_eof('a') == 'a'); - assert(std::char_traits::not_eof('A') == 'A'); - assert(std::char_traits::not_eof(0) == 0); - assert(std::char_traits::not_eof(std::char_traits::eof()) != - std::char_traits::eof()); +int main(int, char**) { + assert(std::char_traits::not_eof('a') == 'a'); + assert(std::char_traits::not_eof('A') == 'A'); + assert(std::char_traits::not_eof(0) == 0); + assert(std::char_traits::not_eof(std::char_traits::eof()) != std::char_traits::eof()); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_char_type.pass.cpp @@ -17,11 +17,10 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::to_char_type('a') == 'a'); - assert(std::char_traits::to_char_type('A') == 'A'); - assert(std::char_traits::to_char_type(0) == 0); +int main(int, char**) { + assert(std::char_traits::to_char_type('a') == 'a'); + assert(std::char_traits::to_char_type('A') == 'A'); + assert(std::char_traits::to_char_type(0) == 0); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char/to_int_type.pass.cpp @@ -17,11 +17,10 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::to_int_type('a') == 'a'); - assert(std::char_traits::to_int_type('A') == 'A'); - assert(std::char_traits::to_int_type(0) == 0); +int main(int, char**) { + assert(std::char_traits::to_int_type('a') == 'a'); + assert(std::char_traits::to_int_type('A') == 'A'); + assert(std::char_traits::to_int_type(0) == 0); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign2.pass.cpp @@ -19,24 +19,22 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - char16_t c = u'1'; - std::char_traits::assign(c, u'a'); - return c == u'a'; +constexpr bool test_constexpr() { + char16_t c = u'1'; + std::char_traits::assign(c, u'a'); + return c == u'a'; } #endif -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - char16_t c = u'\0'; - std::char_traits::assign(c, u'a'); - assert(c == u'a'); + char16_t c = u'\0'; + std::char_traits::assign(c, u'a'); + assert(c == u'a'); #endif #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/assign3.pass.cpp @@ -17,24 +17,22 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char16_t s2[3] = {0}; - assert(std::char_traits::assign(s2, 3, char16_t(5)) == s2); - assert(s2[0] == char16_t(5)); - assert(s2[1] == char16_t(5)); - assert(s2[2] == char16_t(5)); - assert(std::char_traits::assign(NULL, 0, char16_t(5)) == NULL); +TEST_CONSTEXPR_CXX20 bool test() { + char16_t s2[3] = {0}; + assert(std::char_traits::assign(s2, 3, char16_t(5)) == s2); + assert(s2[0] == char16_t(5)); + assert(s2[1] == char16_t(5)); + assert(s2[2] == char16_t(5)); + assert(std::char_traits::assign(NULL, 0, char16_t(5)) == NULL); return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/compare.pass.cpp @@ -19,42 +19,39 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - return std::char_traits::compare(u"123", u"223", 3) < 0 - && std::char_traits::compare(u"223", u"123", 3) > 0 - && std::char_traits::compare(u"123", u"123", 3) == 0; +constexpr bool test_constexpr() { + return std::char_traits::compare(u"123", u"223", 3) < 0 && + std::char_traits::compare(u"223", u"123", 3) > 0 && + std::char_traits::compare(u"123", u"123", 3) == 0; } #endif - -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::compare(u"", u"", 0) == 0); - assert(std::char_traits::compare(NULL, NULL, 0) == 0); - - assert(std::char_traits::compare(u"1", u"1", 1) == 0); - assert(std::char_traits::compare(u"1", u"2", 1) < 0); - assert(std::char_traits::compare(u"2", u"1", 1) > 0); - - assert(std::char_traits::compare(u"12", u"12", 2) == 0); - assert(std::char_traits::compare(u"12", u"13", 2) < 0); - assert(std::char_traits::compare(u"12", u"22", 2) < 0); - assert(std::char_traits::compare(u"13", u"12", 2) > 0); - assert(std::char_traits::compare(u"22", u"12", 2) > 0); - - assert(std::char_traits::compare(u"123", u"123", 3) == 0); - assert(std::char_traits::compare(u"123", u"223", 3) < 0); - assert(std::char_traits::compare(u"123", u"133", 3) < 0); - assert(std::char_traits::compare(u"123", u"124", 3) < 0); - assert(std::char_traits::compare(u"223", u"123", 3) > 0); - assert(std::char_traits::compare(u"133", u"123", 3) > 0); - assert(std::char_traits::compare(u"124", u"123", 3) > 0); + assert(std::char_traits::compare(u"", u"", 0) == 0); + assert(std::char_traits::compare(NULL, NULL, 0) == 0); + + assert(std::char_traits::compare(u"1", u"1", 1) == 0); + assert(std::char_traits::compare(u"1", u"2", 1) < 0); + assert(std::char_traits::compare(u"2", u"1", 1) > 0); + + assert(std::char_traits::compare(u"12", u"12", 2) == 0); + assert(std::char_traits::compare(u"12", u"13", 2) < 0); + assert(std::char_traits::compare(u"12", u"22", 2) < 0); + assert(std::char_traits::compare(u"13", u"12", 2) > 0); + assert(std::char_traits::compare(u"22", u"12", 2) > 0); + + assert(std::char_traits::compare(u"123", u"123", 3) == 0); + assert(std::char_traits::compare(u"123", u"223", 3) < 0); + assert(std::char_traits::compare(u"123", u"133", 3) < 0); + assert(std::char_traits::compare(u"123", u"124", 3) < 0); + assert(std::char_traits::compare(u"223", u"123", 3) > 0); + assert(std::char_traits::compare(u"133", u"123", 3) > 0); + assert(std::char_traits::compare(u"124", u"123", 3) > 0); #endif #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/copy.pass.cpp @@ -17,27 +17,25 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char16_t s1[] = {1, 2, 3}; - char16_t s2[3] = {0}; - assert(std::char_traits::copy(s2, s1, 3) == s2); - assert(s2[0] == char16_t(1)); - assert(s2[1] == char16_t(2)); - assert(s2[2] == char16_t(3)); - assert(std::char_traits::copy(NULL, s1, 0) == NULL); - assert(std::char_traits::copy(s1, NULL, 0) == s1); - - return true; +TEST_CONSTEXPR_CXX20 bool test() { + char16_t s1[] = {1, 2, 3}; + char16_t s2[3] = {0}; + assert(std::char_traits::copy(s2, s1, 3) == s2); + assert(s2[0] == char16_t(1)); + assert(s2[1] == char16_t(2)); + assert(s2[2] == char16_t(3)); + assert(std::char_traits::copy(NULL, s1, 0) == NULL); + assert(std::char_traits::copy(s1, NULL, 0) == s1); + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eof.pass.cpp @@ -14,9 +14,8 @@ #include -int main(int, char**) -{ - std::char_traits::int_type i = std::char_traits::eof(); - ((void)i); // Prevent unused warning - return 0; +int main(int, char**) { + std::char_traits::int_type i = std::char_traits::eof(); + ((void)i); // Prevent unused warning + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq.pass.cpp @@ -17,9 +17,8 @@ #include #include -int main(int, char**) -{ - assert(std::char_traits::eq(u'a', u'a')); - assert(!std::char_traits::eq(u'a', u'A')); - return 0; +int main(int, char**) { + assert(std::char_traits::eq(u'a', u'a')); + assert(!std::char_traits::eq(u'a', u'A')); + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/eq_int_type.pass.cpp @@ -17,15 +17,13 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert( std::char_traits::eq_int_type(u'a', u'a')); - assert(!std::char_traits::eq_int_type(u'a', u'A')); - assert(!std::char_traits::eq_int_type(std::char_traits::eof(), u'A')); + assert(std::char_traits::eq_int_type(u'a', u'a')); + assert(!std::char_traits::eq_int_type(u'a', u'A')); + assert(!std::char_traits::eq_int_type(std::char_traits::eof(), u'A')); #endif - assert( std::char_traits::eq_int_type(std::char_traits::eof(), - std::char_traits::eof())); + assert(std::char_traits::eq_int_type(std::char_traits::eof(), std::char_traits::eof())); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/find.pass.cpp @@ -19,28 +19,25 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - constexpr const char16_t *p = u"123"; - return std::char_traits::find(p, 3, u'1') == p - && std::char_traits::find(p, 3, u'2') == p + 1 - && std::char_traits::find(p, 3, u'3') == p + 2 - && std::char_traits::find(p, 3, u'4') == nullptr; +constexpr bool test_constexpr() { + constexpr const char16_t* p = u"123"; + return std::char_traits::find(p, 3, u'1') == p && std::char_traits::find(p, 3, u'2') == p + 1 && + std::char_traits::find(p, 3, u'3') == p + 2 && + std::char_traits::find(p, 3, u'4') == nullptr; } #endif -int main(int, char**) -{ - char16_t s1[] = {1, 2, 3}; - assert(std::char_traits::find(s1, 3, char16_t(1)) == s1); - assert(std::char_traits::find(s1, 3, char16_t(2)) == s1+1); - assert(std::char_traits::find(s1, 3, char16_t(3)) == s1+2); - assert(std::char_traits::find(s1, 3, char16_t(4)) == 0); - assert(std::char_traits::find(s1, 3, char16_t(0)) == 0); - assert(std::char_traits::find(NULL, 0, char16_t(0)) == 0); +int main(int, char**) { + char16_t s1[] = {1, 2, 3}; + assert(std::char_traits::find(s1, 3, char16_t(1)) == s1); + assert(std::char_traits::find(s1, 3, char16_t(2)) == s1 + 1); + assert(std::char_traits::find(s1, 3, char16_t(3)) == s1 + 2); + assert(std::char_traits::find(s1, 3, char16_t(4)) == 0); + assert(std::char_traits::find(s1, 3, char16_t(0)) == 0); + assert(std::char_traits::find(NULL, 0, char16_t(0)) == 0); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/length.pass.cpp @@ -19,25 +19,22 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - return std::char_traits::length(u"") == 0 - && std::char_traits::length(u"abcd") == 4; +constexpr bool test_constexpr() { + return std::char_traits::length(u"") == 0 && std::char_traits::length(u"abcd") == 4; } #endif -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::length(u"") == 0); - assert(std::char_traits::length(u"a") == 1); - assert(std::char_traits::length(u"aa") == 2); - assert(std::char_traits::length(u"aaa") == 3); - assert(std::char_traits::length(u"aaaa") == 4); + assert(std::char_traits::length(u"") == 0); + assert(std::char_traits::length(u"a") == 1); + assert(std::char_traits::length(u"aa") == 2); + assert(std::char_traits::length(u"aaa") == 3); + assert(std::char_traits::length(u"aaaa") == 4); #endif #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/lt.pass.cpp @@ -17,9 +17,8 @@ #include #include -int main(int, char**) -{ - assert(!std::char_traits::lt(u'a', u'a')); - assert( std::char_traits::lt(u'A', u'a')); - return 0; +int main(int, char**) { + assert(!std::char_traits::lt(u'a', u'a')); + assert(std::char_traits::lt(u'A', u'a')); + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/move.pass.cpp @@ -17,30 +17,28 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char16_t s1[] = {1, 2, 3}; - assert(std::char_traits::move(s1, s1+1, 2) == s1); - assert(s1[0] == char16_t(2)); - assert(s1[1] == char16_t(3)); - assert(s1[2] == char16_t(3)); - s1[2] = char16_t(0); - assert(std::char_traits::move(s1+1, s1, 2) == s1+1); - assert(s1[0] == char16_t(2)); - assert(s1[1] == char16_t(2)); - assert(s1[2] == char16_t(3)); - assert(std::char_traits::move(NULL, s1, 0) == NULL); - assert(std::char_traits::move(s1, NULL, 0) == s1); - - return true; +TEST_CONSTEXPR_CXX20 bool test() { + char16_t s1[] = {1, 2, 3}; + assert(std::char_traits::move(s1, s1 + 1, 2) == s1); + assert(s1[0] == char16_t(2)); + assert(s1[1] == char16_t(3)); + assert(s1[2] == char16_t(3)); + s1[2] = char16_t(0); + assert(std::char_traits::move(s1 + 1, s1, 2) == s1 + 1); + assert(s1[0] == char16_t(2)); + assert(s1[1] == char16_t(2)); + assert(s1[2] == char16_t(3)); + assert(std::char_traits::move(NULL, s1, 0) == NULL); + assert(std::char_traits::move(s1, NULL, 0) == s1); + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/not_eof.pass.cpp @@ -17,15 +17,13 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::not_eof(u'a') == u'a'); - assert(std::char_traits::not_eof(u'A') == u'A'); + assert(std::char_traits::not_eof(u'a') == u'a'); + assert(std::char_traits::not_eof(u'A') == u'A'); #endif - assert(std::char_traits::not_eof(0) == 0); - assert(std::char_traits::not_eof(std::char_traits::eof()) != - std::char_traits::eof()); + assert(std::char_traits::not_eof(0) == 0); + assert(std::char_traits::not_eof(std::char_traits::eof()) != std::char_traits::eof()); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_char_type.pass.cpp @@ -17,13 +17,12 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::to_char_type(u'a') == u'a'); - assert(std::char_traits::to_char_type(u'A') == u'A'); + assert(std::char_traits::to_char_type(u'a') == u'a'); + assert(std::char_traits::to_char_type(u'A') == u'A'); #endif - assert(std::char_traits::to_char_type(0) == 0); + assert(std::char_traits::to_char_type(0) == 0); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char16_t/to_int_type.pass.cpp @@ -17,13 +17,12 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::to_int_type(u'a') == u'a'); - assert(std::char_traits::to_int_type(u'A') == u'A'); + assert(std::char_traits::to_int_type(u'a') == u'a'); + assert(std::char_traits::to_int_type(u'A') == u'A'); #endif - assert(std::char_traits::to_int_type(0) == 0); + assert(std::char_traits::to_int_type(0) == 0); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign2.pass.cpp @@ -19,25 +19,23 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - char32_t c = U'1'; - std::char_traits::assign(c, U'a'); - return c == U'a'; +constexpr bool test_constexpr() { + char32_t c = U'1'; + std::char_traits::assign(c, U'a'); + return c == U'a'; } #endif -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - char32_t c = U'\0'; - std::char_traits::assign(c, U'a'); - assert(c == U'a'); + char32_t c = U'\0'; + std::char_traits::assign(c, U'a'); + assert(c == U'a'); #endif #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/assign3.pass.cpp @@ -17,24 +17,22 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char32_t s2[3] = {0}; - assert(std::char_traits::assign(s2, 3, char32_t(5)) == s2); - assert(s2[0] == char32_t(5)); - assert(s2[1] == char32_t(5)); - assert(s2[2] == char32_t(5)); - assert(std::char_traits::assign(NULL, 0, char32_t(5)) == NULL); - - return true; +TEST_CONSTEXPR_CXX20 bool test() { + char32_t s2[3] = {0}; + assert(std::char_traits::assign(s2, 3, char32_t(5)) == s2); + assert(s2[0] == char32_t(5)); + assert(s2[1] == char32_t(5)); + assert(s2[2] == char32_t(5)); + assert(std::char_traits::assign(NULL, 0, char32_t(5)) == NULL); + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/compare.pass.cpp @@ -19,41 +19,39 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - return std::char_traits::compare(U"123", U"223", 3) < 0 - && std::char_traits::compare(U"223", U"123", 3) > 0 - && std::char_traits::compare(U"123", U"123", 3) == 0; +constexpr bool test_constexpr() { + return std::char_traits::compare(U"123", U"223", 3) < 0 && + std::char_traits::compare(U"223", U"123", 3) > 0 && + std::char_traits::compare(U"123", U"123", 3) == 0; } #endif -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::compare(U"", U"", 0) == 0); - assert(std::char_traits::compare(NULL, NULL, 0) == 0); - - assert(std::char_traits::compare(U"1", U"1", 1) == 0); - assert(std::char_traits::compare(U"1", U"2", 1) < 0); - assert(std::char_traits::compare(U"2", U"1", 1) > 0); - - assert(std::char_traits::compare(U"12", U"12", 2) == 0); - assert(std::char_traits::compare(U"12", U"13", 2) < 0); - assert(std::char_traits::compare(U"12", U"22", 2) < 0); - assert(std::char_traits::compare(U"13", U"12", 2) > 0); - assert(std::char_traits::compare(U"22", U"12", 2) > 0); - - assert(std::char_traits::compare(U"123", U"123", 3) == 0); - assert(std::char_traits::compare(U"123", U"223", 3) < 0); - assert(std::char_traits::compare(U"123", U"133", 3) < 0); - assert(std::char_traits::compare(U"123", U"124", 3) < 0); - assert(std::char_traits::compare(U"223", U"123", 3) > 0); - assert(std::char_traits::compare(U"133", U"123", 3) > 0); - assert(std::char_traits::compare(U"124", U"123", 3) > 0); + assert(std::char_traits::compare(U"", U"", 0) == 0); + assert(std::char_traits::compare(NULL, NULL, 0) == 0); + + assert(std::char_traits::compare(U"1", U"1", 1) == 0); + assert(std::char_traits::compare(U"1", U"2", 1) < 0); + assert(std::char_traits::compare(U"2", U"1", 1) > 0); + + assert(std::char_traits::compare(U"12", U"12", 2) == 0); + assert(std::char_traits::compare(U"12", U"13", 2) < 0); + assert(std::char_traits::compare(U"12", U"22", 2) < 0); + assert(std::char_traits::compare(U"13", U"12", 2) > 0); + assert(std::char_traits::compare(U"22", U"12", 2) > 0); + + assert(std::char_traits::compare(U"123", U"123", 3) == 0); + assert(std::char_traits::compare(U"123", U"223", 3) < 0); + assert(std::char_traits::compare(U"123", U"133", 3) < 0); + assert(std::char_traits::compare(U"123", U"124", 3) < 0); + assert(std::char_traits::compare(U"223", U"123", 3) > 0); + assert(std::char_traits::compare(U"133", U"123", 3) > 0); + assert(std::char_traits::compare(U"124", U"123", 3) > 0); #endif #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/copy.pass.cpp @@ -17,26 +17,24 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char32_t s1[] = {1, 2, 3}; - char32_t s2[3] = {0}; - assert(std::char_traits::copy(s2, s1, 3) == s2); - assert(s2[0] == char32_t(1)); - assert(s2[1] == char32_t(2)); - assert(s2[2] == char32_t(3)); - assert(std::char_traits::copy(NULL, s1, 0) == NULL); - assert(std::char_traits::copy(s1, NULL, 0) == s1); - - return true; +TEST_CONSTEXPR_CXX20 bool test() { + char32_t s1[] = {1, 2, 3}; + char32_t s2[3] = {0}; + assert(std::char_traits::copy(s2, s1, 3) == s2); + assert(s2[0] == char32_t(1)); + assert(s2[1] == char32_t(2)); + assert(s2[2] == char32_t(3)); + assert(std::char_traits::copy(NULL, s1, 0) == NULL); + assert(std::char_traits::copy(s1, NULL, 0) == s1); + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eof.pass.cpp @@ -17,10 +17,9 @@ #include "test_macros.h" -int main(int, char**) -{ - std::char_traits::int_type i = std::char_traits::eof(); - ((void)i); // Prevent unused warning +int main(int, char**) { + std::char_traits::int_type i = std::char_traits::eof(); + ((void)i); // Prevent unused warning - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq.pass.cpp @@ -17,9 +17,8 @@ #include #include -int main(int, char**) -{ - assert(std::char_traits::eq(U'a', U'a')); - assert(!std::char_traits::eq(U'a', U'A')); - return 0; +int main(int, char**) { + assert(std::char_traits::eq(U'a', U'a')); + assert(!std::char_traits::eq(U'a', U'A')); + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/eq_int_type.pass.cpp @@ -17,15 +17,13 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert( std::char_traits::eq_int_type(U'a', U'a')); - assert(!std::char_traits::eq_int_type(U'a', U'A')); - assert(!std::char_traits::eq_int_type(std::char_traits::eof(), U'A')); + assert(std::char_traits::eq_int_type(U'a', U'a')); + assert(!std::char_traits::eq_int_type(U'a', U'A')); + assert(!std::char_traits::eq_int_type(std::char_traits::eof(), U'A')); #endif - assert( std::char_traits::eq_int_type(std::char_traits::eof(), - std::char_traits::eof())); + assert(std::char_traits::eq_int_type(std::char_traits::eof(), std::char_traits::eof())); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/find.pass.cpp @@ -19,29 +19,26 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - constexpr const char32_t *p = U"123"; - return std::char_traits::find(p, 3, U'1') == p - && std::char_traits::find(p, 3, U'2') == p + 1 - && std::char_traits::find(p, 3, U'3') == p + 2 - && std::char_traits::find(p, 3, U'4') == nullptr; +constexpr bool test_constexpr() { + constexpr const char32_t* p = U"123"; + return std::char_traits::find(p, 3, U'1') == p && std::char_traits::find(p, 3, U'2') == p + 1 && + std::char_traits::find(p, 3, U'3') == p + 2 && + std::char_traits::find(p, 3, U'4') == nullptr; } #endif -int main(int, char**) -{ - char32_t s1[] = {1, 2, 3}; - assert(std::char_traits::find(s1, 3, char32_t(1)) == s1); - assert(std::char_traits::find(s1, 3, char32_t(2)) == s1+1); - assert(std::char_traits::find(s1, 3, char32_t(3)) == s1+2); - assert(std::char_traits::find(s1, 3, char32_t(4)) == 0); - assert(std::char_traits::find(s1, 3, char32_t(0)) == 0); - assert(std::char_traits::find(NULL, 0, char32_t(0)) == 0); +int main(int, char**) { + char32_t s1[] = {1, 2, 3}; + assert(std::char_traits::find(s1, 3, char32_t(1)) == s1); + assert(std::char_traits::find(s1, 3, char32_t(2)) == s1 + 1); + assert(std::char_traits::find(s1, 3, char32_t(3)) == s1 + 2); + assert(std::char_traits::find(s1, 3, char32_t(4)) == 0); + assert(std::char_traits::find(s1, 3, char32_t(0)) == 0); + assert(std::char_traits::find(NULL, 0, char32_t(0)) == 0); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/length.pass.cpp @@ -19,26 +19,23 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - return std::char_traits::length(U"") == 0 - && std::char_traits::length(U"abcd") == 4; +constexpr bool test_constexpr() { + return std::char_traits::length(U"") == 0 && std::char_traits::length(U"abcd") == 4; } #endif -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::length(U"") == 0); - assert(std::char_traits::length(U"a") == 1); - assert(std::char_traits::length(U"aa") == 2); - assert(std::char_traits::length(U"aaa") == 3); - assert(std::char_traits::length(U"aaaa") == 4); + assert(std::char_traits::length(U"") == 0); + assert(std::char_traits::length(U"a") == 1); + assert(std::char_traits::length(U"aa") == 2); + assert(std::char_traits::length(U"aaa") == 3); + assert(std::char_traits::length(U"aaaa") == 4); #endif #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/lt.pass.cpp @@ -17,9 +17,8 @@ #include #include -int main(int, char**) -{ - assert(!std::char_traits::lt(U'a', U'a')); - assert( std::char_traits::lt(U'A', U'a')); - return 0; +int main(int, char**) { + assert(!std::char_traits::lt(U'a', U'a')); + assert(std::char_traits::lt(U'A', U'a')); + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/move.pass.cpp @@ -17,30 +17,28 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - char32_t s1[] = {1, 2, 3}; - assert(std::char_traits::move(s1, s1+1, 2) == s1); - assert(s1[0] == char32_t(2)); - assert(s1[1] == char32_t(3)); - assert(s1[2] == char32_t(3)); - s1[2] = char32_t(0); - assert(std::char_traits::move(s1+1, s1, 2) == s1+1); - assert(s1[0] == char32_t(2)); - assert(s1[1] == char32_t(2)); - assert(s1[2] == char32_t(3)); - assert(std::char_traits::move(NULL, s1, 0) == NULL); - assert(std::char_traits::move(s1, NULL, 0) == s1); - - return true; +TEST_CONSTEXPR_CXX20 bool test() { + char32_t s1[] = {1, 2, 3}; + assert(std::char_traits::move(s1, s1 + 1, 2) == s1); + assert(s1[0] == char32_t(2)); + assert(s1[1] == char32_t(3)); + assert(s1[2] == char32_t(3)); + s1[2] = char32_t(0); + assert(std::char_traits::move(s1 + 1, s1, 2) == s1 + 1); + assert(s1[0] == char32_t(2)); + assert(s1[1] == char32_t(2)); + assert(s1[2] == char32_t(3)); + assert(std::char_traits::move(NULL, s1, 0) == NULL); + assert(std::char_traits::move(s1, NULL, 0) == s1); + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/not_eof.pass.cpp @@ -17,15 +17,13 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::not_eof(U'a') == U'a'); - assert(std::char_traits::not_eof(U'A') == U'A'); + assert(std::char_traits::not_eof(U'a') == U'a'); + assert(std::char_traits::not_eof(U'A') == U'A'); #endif - assert(std::char_traits::not_eof(0) == 0); - assert(std::char_traits::not_eof(std::char_traits::eof()) != - std::char_traits::eof()); + assert(std::char_traits::not_eof(0) == 0); + assert(std::char_traits::not_eof(std::char_traits::eof()) != std::char_traits::eof()); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_char_type.pass.cpp @@ -17,13 +17,12 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::to_char_type(U'a') == U'a'); - assert(std::char_traits::to_char_type(U'A') == U'A'); + assert(std::char_traits::to_char_type(U'a') == U'a'); + assert(std::char_traits::to_char_type(U'A') == U'A'); #endif - assert(std::char_traits::to_char_type(0) == 0); + assert(std::char_traits::to_char_type(0) == 0); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char32_t/to_int_type.pass.cpp @@ -17,13 +17,12 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #if TEST_STD_VER >= 11 - assert(std::char_traits::to_int_type(U'a') == U'a'); - assert(std::char_traits::to_int_type(U'A') == U'A'); + assert(std::char_traits::to_int_type(U'a') == U'a'); + assert(std::char_traits::to_int_type(U'A') == U'A'); #endif - assert(std::char_traits::to_int_type(0) == 0); + assert(std::char_traits::to_int_type(0) == 0); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign2.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign2.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign2.pass.cpp @@ -18,24 +18,20 @@ #include "test_macros.h" #ifndef TEST_HAS_NO_CHAR8_T -constexpr bool test_constexpr() -{ - char8_t c = u'1'; - std::char_traits::assign(c, u'a'); - return c == u'a'; +constexpr bool test_constexpr() { + char8_t c = u'1'; + std::char_traits::assign(c, u'a'); + return c == u'a'; } -int main(int, char**) -{ - char8_t c = u8'\0'; - std::char_traits::assign(c, u8'a'); - assert(c == u8'a'); - - static_assert(test_constexpr(), ""); - return 0; -} -#else int main(int, char**) { + char8_t c = u8'\0'; + std::char_traits::assign(c, u8'a'); + assert(c == u8'a'); + + static_assert(test_constexpr(), ""); return 0; } +#else +int main(int, char**) { return 0; } #endif diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/assign3.pass.cpp @@ -19,26 +19,24 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ +TEST_CONSTEXPR_CXX20 bool test() { #ifndef TEST_HAS_NO_CHAR8_T - char8_t s2[3] = {0}; - assert(std::char_traits::assign(s2, 3, char8_t(5)) == s2); - assert(s2[0] == char8_t(5)); - assert(s2[1] == char8_t(5)); - assert(s2[2] == char8_t(5)); - assert(std::char_traits::assign(NULL, 0, char8_t(5)) == NULL); + char8_t s2[3] = {0}; + assert(std::char_traits::assign(s2, 3, char8_t(5)) == s2); + assert(s2[0] == char8_t(5)); + assert(s2[1] == char8_t(5)); + assert(s2[2] == char8_t(5)); + assert(std::char_traits::assign(NULL, 0, char8_t(5)) == NULL); #endif return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/compare.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/compare.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/compare.pass.cpp @@ -19,42 +19,37 @@ #include "test_macros.h" #ifndef TEST_HAS_NO_CHAR8_T -constexpr bool test_constexpr() -{ - return std::char_traits::compare(u8"123", u8"223", 3) < 0 - && std::char_traits::compare(u8"223", u8"123", 3) > 0 - && std::char_traits::compare(u8"123", u8"123", 3) == 0; +constexpr bool test_constexpr() { + return std::char_traits::compare(u8"123", u8"223", 3) < 0 && + std::char_traits::compare(u8"223", u8"123", 3) > 0 && + std::char_traits::compare(u8"123", u8"123", 3) == 0; } - -int main(int, char**) -{ - assert(std::char_traits::compare(u8"", u8"", 0) == 0); - assert(std::char_traits::compare(NULL, NULL, 0) == 0); - - assert(std::char_traits::compare(u8"1", u8"1", 1) == 0); - assert(std::char_traits::compare(u8"1", u8"2", 1) < 0); - assert(std::char_traits::compare(u8"2", u8"1", 1) > 0); - - assert(std::char_traits::compare(u8"12", u8"12", 2) == 0); - assert(std::char_traits::compare(u8"12", u8"13", 2) < 0); - assert(std::char_traits::compare(u8"12", u8"22", 2) < 0); - assert(std::char_traits::compare(u8"13", u8"12", 2) > 0); - assert(std::char_traits::compare(u8"22", u8"12", 2) > 0); - - assert(std::char_traits::compare(u8"123", u8"123", 3) == 0); - assert(std::char_traits::compare(u8"123", u8"223", 3) < 0); - assert(std::char_traits::compare(u8"123", u8"133", 3) < 0); - assert(std::char_traits::compare(u8"123", u8"124", 3) < 0); - assert(std::char_traits::compare(u8"223", u8"123", 3) > 0); - assert(std::char_traits::compare(u8"133", u8"123", 3) > 0); - assert(std::char_traits::compare(u8"124", u8"123", 3) > 0); - - static_assert(test_constexpr(), "" ); - return 0; -} -#else int main(int, char**) { + assert(std::char_traits::compare(u8"", u8"", 0) == 0); + assert(std::char_traits::compare(NULL, NULL, 0) == 0); + + assert(std::char_traits::compare(u8"1", u8"1", 1) == 0); + assert(std::char_traits::compare(u8"1", u8"2", 1) < 0); + assert(std::char_traits::compare(u8"2", u8"1", 1) > 0); + + assert(std::char_traits::compare(u8"12", u8"12", 2) == 0); + assert(std::char_traits::compare(u8"12", u8"13", 2) < 0); + assert(std::char_traits::compare(u8"12", u8"22", 2) < 0); + assert(std::char_traits::compare(u8"13", u8"12", 2) > 0); + assert(std::char_traits::compare(u8"22", u8"12", 2) > 0); + + assert(std::char_traits::compare(u8"123", u8"123", 3) == 0); + assert(std::char_traits::compare(u8"123", u8"223", 3) < 0); + assert(std::char_traits::compare(u8"123", u8"133", 3) < 0); + assert(std::char_traits::compare(u8"123", u8"124", 3) < 0); + assert(std::char_traits::compare(u8"223", u8"123", 3) > 0); + assert(std::char_traits::compare(u8"133", u8"123", 3) > 0); + assert(std::char_traits::compare(u8"124", u8"123", 3) > 0); + + static_assert(test_constexpr(), ""); return 0; } +#else +int main(int, char**) { return 0; } #endif diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/copy.pass.cpp @@ -19,28 +19,26 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ +TEST_CONSTEXPR_CXX20 bool test() { #ifndef TEST_HAS_NO_CHAR8_T - char8_t s1[] = {1, 2, 3}; - char8_t s2[3] = {0}; - assert(std::char_traits::copy(s2, s1, 3) == s2); - assert(s2[0] == char8_t(1)); - assert(s2[1] == char8_t(2)); - assert(s2[2] == char8_t(3)); - assert(std::char_traits::copy(NULL, s1, 0) == NULL); - assert(std::char_traits::copy(s1, NULL, 0) == s1); + char8_t s1[] = {1, 2, 3}; + char8_t s2[3] = {0}; + assert(std::char_traits::copy(s2, s1, 3) == s2); + assert(s2[0] == char8_t(1)); + assert(s2[1] == char8_t(2)); + assert(s2[2] == char8_t(3)); + assert(std::char_traits::copy(NULL, s1, 0) == NULL); + assert(std::char_traits::copy(s1, NULL, 0) == s1); #endif return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eof.pass.cpp @@ -18,11 +18,10 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #ifndef TEST_HAS_NO_CHAR8_T - std::char_traits::int_type i = std::char_traits::eof(); - ((void)i); // Prevent unused warning + std::char_traits::int_type i = std::char_traits::eof(); + ((void)i); // Prevent unused warning #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq.pass.cpp @@ -18,11 +18,10 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #ifndef TEST_HAS_NO_CHAR8_T - assert( std::char_traits::eq(u8'a', u8'a')); - assert(!std::char_traits::eq(u8'a', u8'A')); + assert(std::char_traits::eq(u8'a', u8'a')); + assert(!std::char_traits::eq(u8'a', u8'A')); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/eq_int_type.pass.cpp @@ -18,14 +18,12 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #ifndef TEST_HAS_NO_CHAR8_T - assert( std::char_traits::eq_int_type(u8'a', u8'a')); - assert(!std::char_traits::eq_int_type(u8'a', u8'A')); - assert(!std::char_traits::eq_int_type(std::char_traits::eof(), u8'A')); - assert( std::char_traits::eq_int_type(std::char_traits::eof(), - std::char_traits::eof())); + assert(std::char_traits::eq_int_type(u8'a', u8'a')); + assert(!std::char_traits::eq_int_type(u8'a', u8'A')); + assert(!std::char_traits::eq_int_type(std::char_traits::eof(), u8'A')); + assert(std::char_traits::eq_int_type(std::char_traits::eof(), std::char_traits::eof())); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/find.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/find.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/find.pass.cpp @@ -19,30 +19,25 @@ #include "test_macros.h" #ifndef TEST_HAS_NO_CHAR8_T -constexpr bool test_constexpr() -{ - constexpr const char8_t *p = u8"123"; - return std::char_traits::find(p, 3, u8'1') == p - && std::char_traits::find(p, 3, u8'2') == p + 1 - && std::char_traits::find(p, 3, u8'3') == p + 2 - && std::char_traits::find(p, 3, u8'4') == nullptr; +constexpr bool test_constexpr() { + constexpr const char8_t* p = u8"123"; + return std::char_traits::find(p, 3, u8'1') == p && std::char_traits::find(p, 3, u8'2') == p + 1 && + std::char_traits::find(p, 3, u8'3') == p + 2 && + std::char_traits::find(p, 3, u8'4') == nullptr; } -int main(int, char**) -{ - char8_t s1[] = {1, 2, 3}; - assert(std::char_traits::find(s1, 3, char8_t(1)) == s1); - assert(std::char_traits::find(s1, 3, char8_t(2)) == s1+1); - assert(std::char_traits::find(s1, 3, char8_t(3)) == s1+2); - assert(std::char_traits::find(s1, 3, char8_t(4)) == 0); - assert(std::char_traits::find(s1, 3, char8_t(0)) == 0); - assert(std::char_traits::find(NULL, 0, char8_t(0)) == 0); - - static_assert(test_constexpr(), "" ); - return 0; -} -#else int main(int, char**) { + char8_t s1[] = {1, 2, 3}; + assert(std::char_traits::find(s1, 3, char8_t(1)) == s1); + assert(std::char_traits::find(s1, 3, char8_t(2)) == s1 + 1); + assert(std::char_traits::find(s1, 3, char8_t(3)) == s1 + 2); + assert(std::char_traits::find(s1, 3, char8_t(4)) == 0); + assert(std::char_traits::find(s1, 3, char8_t(0)) == 0); + assert(std::char_traits::find(NULL, 0, char8_t(0)) == 0); + + static_assert(test_constexpr(), ""); return 0; } +#else +int main(int, char**) { return 0; } #endif diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/length.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/length.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/length.pass.cpp @@ -19,25 +19,20 @@ #include "test_macros.h" #ifndef TEST_HAS_NO_CHAR8_T -constexpr bool test_constexpr() -{ - return std::char_traits::length(u8"") == 0 - && std::char_traits::length(u8"abcd") == 4; +constexpr bool test_constexpr() { + return std::char_traits::length(u8"") == 0 && std::char_traits::length(u8"abcd") == 4; } -int main(int, char**) -{ - assert(std::char_traits::length(u8"") == 0); - assert(std::char_traits::length(u8"a") == 1); - assert(std::char_traits::length(u8"aa") == 2); - assert(std::char_traits::length(u8"aaa") == 3); - assert(std::char_traits::length(u8"aaaa") == 4); - - static_assert(test_constexpr(), ""); - return 0; -} -#else int main(int, char**) { + assert(std::char_traits::length(u8"") == 0); + assert(std::char_traits::length(u8"a") == 1); + assert(std::char_traits::length(u8"aa") == 2); + assert(std::char_traits::length(u8"aaa") == 3); + assert(std::char_traits::length(u8"aaaa") == 4); + + static_assert(test_constexpr(), ""); return 0; } +#else +int main(int, char**) { return 0; } #endif diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/lt.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/lt.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/lt.pass.cpp @@ -18,11 +18,10 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #ifndef TEST_HAS_NO_CHAR8_T - assert(!std::char_traits::lt(u8'a', u8'a')); - assert( std::char_traits::lt(u8'A', u8'a')); + assert(!std::char_traits::lt(u8'a', u8'a')); + assert(std::char_traits::lt(u8'A', u8'a')); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/move.pass.cpp @@ -19,32 +19,30 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ +TEST_CONSTEXPR_CXX20 bool test() { #ifndef TEST_HAS_NO_CHAR8_T - char8_t s1[] = {1, 2, 3}; - assert(std::char_traits::move(s1, s1+1, 2) == s1); - assert(s1[0] == char8_t(2)); - assert(s1[1] == char8_t(3)); - assert(s1[2] == char8_t(3)); - s1[2] = char8_t(0); - assert(std::char_traits::move(s1+1, s1, 2) == s1+1); - assert(s1[0] == char8_t(2)); - assert(s1[1] == char8_t(2)); - assert(s1[2] == char8_t(3)); - assert(std::char_traits::move(NULL, s1, 0) == NULL); - assert(std::char_traits::move(s1, NULL, 0) == s1); + char8_t s1[] = {1, 2, 3}; + assert(std::char_traits::move(s1, s1 + 1, 2) == s1); + assert(s1[0] == char8_t(2)); + assert(s1[1] == char8_t(3)); + assert(s1[2] == char8_t(3)); + s1[2] = char8_t(0); + assert(std::char_traits::move(s1 + 1, s1, 2) == s1 + 1); + assert(s1[0] == char8_t(2)); + assert(s1[1] == char8_t(2)); + assert(s1[2] == char8_t(3)); + assert(std::char_traits::move(NULL, s1, 0) == NULL); + assert(std::char_traits::move(s1, NULL, 0) == s1); #endif return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/not_eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/not_eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/not_eof.pass.cpp @@ -18,14 +18,12 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #ifndef TEST_HAS_NO_CHAR8_T - assert(std::char_traits::not_eof(u8'a') == u8'a'); - assert(std::char_traits::not_eof(u8'A') == u8'A'); - assert(std::char_traits::not_eof(0) == 0); - assert(std::char_traits::not_eof(std::char_traits::eof()) != - std::char_traits::eof()); + assert(std::char_traits::not_eof(u8'a') == u8'a'); + assert(std::char_traits::not_eof(u8'A') == u8'A'); + assert(std::char_traits::not_eof(0) == 0); + assert(std::char_traits::not_eof(std::char_traits::eof()) != std::char_traits::eof()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_char_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_char_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_char_type.pass.cpp @@ -18,12 +18,11 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #ifndef TEST_HAS_NO_CHAR8_T - assert(std::char_traits::to_char_type(u8'a') == u8'a'); - assert(std::char_traits::to_char_type(u8'A') == u8'A'); - assert(std::char_traits::to_char_type(0) == 0); + assert(std::char_traits::to_char_type(u8'a') == u8'a'); + assert(std::char_traits::to_char_type(u8'A') == u8'A'); + assert(std::char_traits::to_char_type(0) == 0); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.char8_t/to_int_type.pass.cpp @@ -18,12 +18,11 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { #ifndef TEST_HAS_NO_CHAR8_T - assert(std::char_traits::to_int_type(u8'a') == u8'a'); - assert(std::char_traits::to_int_type(u8'A') == u8'A'); - assert(std::char_traits::to_int_type(0) == 0); + assert(std::char_traits::to_int_type(u8'a') == u8'a'); + assert(std::char_traits::to_int_type(u8'A') == u8'A'); + assert(std::char_traits::to_int_type(0) == 0); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/assign2.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/assign2.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/assign2.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/assign2.pass.cpp @@ -21,22 +21,20 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - wchar_t c = L'1'; - std::char_traits::assign(c, L'a'); - return c == L'a'; +constexpr bool test_constexpr() { + wchar_t c = L'1'; + std::char_traits::assign(c, L'a'); + return c == L'a'; } #endif -int main(int, char**) -{ - wchar_t c = L'\0'; - std::char_traits::assign(c, L'a'); - assert(c == L'a'); +int main(int, char**) { + wchar_t c = L'\0'; + std::char_traits::assign(c, L'a'); + assert(c == L'a'); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/assign3.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/assign3.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/assign3.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/assign3.pass.cpp @@ -19,24 +19,22 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - wchar_t s2[3] = {0}; - assert(std::char_traits::assign(s2, 3, wchar_t(5)) == s2); - assert(s2[0] == wchar_t(5)); - assert(s2[1] == wchar_t(5)); - assert(s2[2] == wchar_t(5)); - assert(std::char_traits::assign(NULL, 0, wchar_t(5)) == NULL); +TEST_CONSTEXPR_CXX20 bool test() { + wchar_t s2[3] = {0}; + assert(std::char_traits::assign(s2, 3, wchar_t(5)) == s2); + assert(s2[0] == wchar_t(5)); + assert(s2[1] == wchar_t(5)); + assert(s2[2] == wchar_t(5)); + assert(std::char_traits::assign(NULL, 0, wchar_t(5)) == NULL); return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 - static_assert(test()); + static_assert(test()); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/compare.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/compare.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/compare.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/compare.pass.cpp @@ -21,39 +21,37 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - return std::char_traits::compare(L"123", L"223", 3) < 0 - && std::char_traits::compare(L"223", L"123", 3) > 0 - && std::char_traits::compare(L"123", L"123", 3) == 0; +constexpr bool test_constexpr() { + return std::char_traits::compare(L"123", L"223", 3) < 0 && + std::char_traits::compare(L"223", L"123", 3) > 0 && + std::char_traits::compare(L"123", L"123", 3) == 0; } #endif -int main(int, char**) -{ - assert(std::char_traits::compare(L"", L"", 0) == 0); - assert(std::char_traits::compare(NULL, NULL, 0) == 0); - - assert(std::char_traits::compare(L"1", L"1", 1) == 0); - assert(std::char_traits::compare(L"1", L"2", 1) < 0); - assert(std::char_traits::compare(L"2", L"1", 1) > 0); - - assert(std::char_traits::compare(L"12", L"12", 2) == 0); - assert(std::char_traits::compare(L"12", L"13", 2) < 0); - assert(std::char_traits::compare(L"12", L"22", 2) < 0); - assert(std::char_traits::compare(L"13", L"12", 2) > 0); - assert(std::char_traits::compare(L"22", L"12", 2) > 0); - - assert(std::char_traits::compare(L"123", L"123", 3) == 0); - assert(std::char_traits::compare(L"123", L"223", 3) < 0); - assert(std::char_traits::compare(L"123", L"133", 3) < 0); - assert(std::char_traits::compare(L"123", L"124", 3) < 0); - assert(std::char_traits::compare(L"223", L"123", 3) > 0); - assert(std::char_traits::compare(L"133", L"123", 3) > 0); - assert(std::char_traits::compare(L"124", L"123", 3) > 0); +int main(int, char**) { + assert(std::char_traits::compare(L"", L"", 0) == 0); + assert(std::char_traits::compare(NULL, NULL, 0) == 0); + + assert(std::char_traits::compare(L"1", L"1", 1) == 0); + assert(std::char_traits::compare(L"1", L"2", 1) < 0); + assert(std::char_traits::compare(L"2", L"1", 1) > 0); + + assert(std::char_traits::compare(L"12", L"12", 2) == 0); + assert(std::char_traits::compare(L"12", L"13", 2) < 0); + assert(std::char_traits::compare(L"12", L"22", 2) < 0); + assert(std::char_traits::compare(L"13", L"12", 2) > 0); + assert(std::char_traits::compare(L"22", L"12", 2) > 0); + + assert(std::char_traits::compare(L"123", L"123", 3) == 0); + assert(std::char_traits::compare(L"123", L"223", 3) < 0); + assert(std::char_traits::compare(L"123", L"133", 3) < 0); + assert(std::char_traits::compare(L"123", L"124", 3) < 0); + assert(std::char_traits::compare(L"223", L"123", 3) > 0); + assert(std::char_traits::compare(L"133", L"123", 3) > 0); + assert(std::char_traits::compare(L"124", L"123", 3) > 0); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/copy.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/copy.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/copy.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/copy.pass.cpp @@ -19,22 +19,20 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - wchar_t s1[] = {1, 2, 3}; - wchar_t s2[3] = {0}; - assert(std::char_traits::copy(s2, s1, 3) == s2); - assert(s2[0] == wchar_t(1)); - assert(s2[1] == wchar_t(2)); - assert(s2[2] == wchar_t(3)); - assert(std::char_traits::copy(NULL, s1, 0) == NULL); - assert(std::char_traits::copy(s1, NULL, 0) == s1); +TEST_CONSTEXPR_CXX20 bool test() { + wchar_t s1[] = {1, 2, 3}; + wchar_t s2[3] = {0}; + assert(std::char_traits::copy(s2, s1, 3) == s2); + assert(s2[0] == wchar_t(1)); + assert(s2[1] == wchar_t(2)); + assert(s2[2] == wchar_t(3)); + assert(std::char_traits::copy(NULL, s1, 0) == NULL); + assert(std::char_traits::copy(s1, NULL, 0) == s1); return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eof.pass.cpp @@ -19,9 +19,8 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::eof() == WEOF); +int main(int, char**) { + assert(std::char_traits::eof() == WEOF); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eq.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eq.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eq.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eq.pass.cpp @@ -19,10 +19,9 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::eq(L'a', L'a')); - assert(!std::char_traits::eq(L'a', L'A')); +int main(int, char**) { + assert(std::char_traits::eq(L'a', L'a')); + assert(!std::char_traits::eq(L'a', L'A')); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eq_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eq_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eq_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/eq_int_type.pass.cpp @@ -19,13 +19,11 @@ #include "test_macros.h" -int main(int, char**) -{ - assert( std::char_traits::eq_int_type(L'a', L'a')); - assert(!std::char_traits::eq_int_type(L'a', L'A')); - assert(!std::char_traits::eq_int_type(std::char_traits::eof(), L'A')); - assert( std::char_traits::eq_int_type(std::char_traits::eof(), - std::char_traits::eof())); +int main(int, char**) { + assert(std::char_traits::eq_int_type(L'a', L'a')); + assert(!std::char_traits::eq_int_type(L'a', L'A')); + assert(!std::char_traits::eq_int_type(std::char_traits::eof(), L'A')); + assert(std::char_traits::eq_int_type(std::char_traits::eof(), std::char_traits::eof())); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/find.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/find.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/find.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/find.pass.cpp @@ -21,28 +21,24 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - constexpr const wchar_t *p = L"123"; - return std::char_traits::find(p, 3, L'1') == p - && std::char_traits::find(p, 3, L'2') == p + 1 - && std::char_traits::find(p, 3, L'3') == p + 2 - && std::char_traits::find(p, 3, L'4') == nullptr; +constexpr bool test_constexpr() { + constexpr const wchar_t* p = L"123"; + return std::char_traits::find(p, 3, L'1') == p && std::char_traits::find(p, 3, L'2') == p + 1 && + std::char_traits::find(p, 3, L'3') == p + 2 && std::char_traits::find(p, 3, L'4') == nullptr; } #endif -int main(int, char**) -{ - wchar_t s1[] = {1, 2, 3}; - assert(std::char_traits::find(s1, 3, wchar_t(1)) == s1); - assert(std::char_traits::find(s1, 3, wchar_t(2)) == s1+1); - assert(std::char_traits::find(s1, 3, wchar_t(3)) == s1+2); - assert(std::char_traits::find(s1, 3, wchar_t(4)) == 0); - assert(std::char_traits::find(s1, 3, wchar_t(0)) == 0); - assert(std::char_traits::find(NULL, 0, wchar_t(0)) == 0); +int main(int, char**) { + wchar_t s1[] = {1, 2, 3}; + assert(std::char_traits::find(s1, 3, wchar_t(1)) == s1); + assert(std::char_traits::find(s1, 3, wchar_t(2)) == s1 + 1); + assert(std::char_traits::find(s1, 3, wchar_t(3)) == s1 + 2); + assert(std::char_traits::find(s1, 3, wchar_t(4)) == 0); + assert(std::char_traits::find(s1, 3, wchar_t(0)) == 0); + assert(std::char_traits::find(NULL, 0, wchar_t(0)) == 0); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/length.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/length.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/length.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/length.pass.cpp @@ -21,23 +21,20 @@ #include "test_macros.h" #if TEST_STD_VER > 14 -constexpr bool test_constexpr() -{ - return std::char_traits::length(L"") == 0 - && std::char_traits::length(L"abcd") == 4; +constexpr bool test_constexpr() { + return std::char_traits::length(L"") == 0 && std::char_traits::length(L"abcd") == 4; } #endif -int main(int, char**) -{ - assert(std::char_traits::length(L"") == 0); - assert(std::char_traits::length(L"a") == 1); - assert(std::char_traits::length(L"aa") == 2); - assert(std::char_traits::length(L"aaa") == 3); - assert(std::char_traits::length(L"aaaa") == 4); +int main(int, char**) { + assert(std::char_traits::length(L"") == 0); + assert(std::char_traits::length(L"a") == 1); + assert(std::char_traits::length(L"aa") == 2); + assert(std::char_traits::length(L"aaa") == 3); + assert(std::char_traits::length(L"aaaa") == 4); #if TEST_STD_VER > 14 - static_assert(test_constexpr(), "" ); + static_assert(test_constexpr(), ""); #endif return 0; diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/lt.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/lt.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/lt.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/lt.pass.cpp @@ -19,8 +19,7 @@ #include "test_macros.h" -int main(int, char**) -{ +int main(int, char**) { assert(std::char_traits::lt(L'\0', L'A') == (L'\0' < L'A')); assert(std::char_traits::lt(L'A', L'\0') == (L'A' < L'\0')); diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/move.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/move.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/move.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/move.pass.cpp @@ -19,26 +19,24 @@ #include "test_macros.h" -TEST_CONSTEXPR_CXX20 bool test() -{ - wchar_t s1[] = {1, 2, 3}; - assert(std::char_traits::move(s1, s1+1, 2) == s1); - assert(s1[0] == wchar_t(2)); - assert(s1[1] == wchar_t(3)); - assert(s1[2] == wchar_t(3)); - s1[2] = wchar_t(0); - assert(std::char_traits::move(s1+1, s1, 2) == s1+1); - assert(s1[0] == wchar_t(2)); - assert(s1[1] == wchar_t(2)); - assert(s1[2] == wchar_t(3)); - assert(std::char_traits::move(NULL, s1, 0) == NULL); - assert(std::char_traits::move(s1, NULL, 0) == s1); +TEST_CONSTEXPR_CXX20 bool test() { + wchar_t s1[] = {1, 2, 3}; + assert(std::char_traits::move(s1, s1 + 1, 2) == s1); + assert(s1[0] == wchar_t(2)); + assert(s1[1] == wchar_t(3)); + assert(s1[2] == wchar_t(3)); + s1[2] = wchar_t(0); + assert(std::char_traits::move(s1 + 1, s1, 2) == s1 + 1); + assert(s1[0] == wchar_t(2)); + assert(s1[1] == wchar_t(2)); + assert(s1[2] == wchar_t(3)); + assert(std::char_traits::move(NULL, s1, 0) == NULL); + assert(std::char_traits::move(s1, NULL, 0) == s1); return true; } -int main(int, char**) -{ +int main(int, char**) { test(); #if TEST_STD_VER > 17 diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/not_eof.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/not_eof.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/not_eof.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/not_eof.pass.cpp @@ -19,13 +19,11 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::not_eof(L'a') == L'a'); - assert(std::char_traits::not_eof(L'A') == L'A'); - assert(std::char_traits::not_eof(0) == 0); - assert(std::char_traits::not_eof(std::char_traits::eof()) != - std::char_traits::eof()); +int main(int, char**) { + assert(std::char_traits::not_eof(L'a') == L'a'); + assert(std::char_traits::not_eof(L'A') == L'A'); + assert(std::char_traits::not_eof(0) == 0); + assert(std::char_traits::not_eof(std::char_traits::eof()) != std::char_traits::eof()); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/to_char_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/to_char_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/to_char_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/to_char_type.pass.cpp @@ -19,11 +19,10 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::to_char_type(L'a') == L'a'); - assert(std::char_traits::to_char_type(L'A') == L'A'); - assert(std::char_traits::to_char_type(0) == 0); +int main(int, char**) { + assert(std::char_traits::to_char_type(L'a') == L'a'); + assert(std::char_traits::to_char_type(L'A') == L'A'); + assert(std::char_traits::to_char_type(0) == 0); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/to_int_type.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/to_int_type.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/to_int_type.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.specializations/char.traits.specializations.wchar_t/to_int_type.pass.cpp @@ -19,11 +19,10 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::char_traits::to_int_type(L'a') == L'a'); - assert(std::char_traits::to_int_type(L'A') == L'A'); - assert(std::char_traits::to_int_type(0) == 0); +int main(int, char**) { + assert(std::char_traits::to_int_type(L'a') == L'a'); + assert(std::char_traits::to_int_type(L'A') == L'A'); + assert(std::char_traits::to_int_type(0) == 0); return 0; } diff --git a/libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp b/libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp --- a/libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp +++ b/libcxx/test/std/strings/char.traits/char.traits.typedefs/nothing_to_do.pass.cpp @@ -6,8 +6,4 @@ // //===----------------------------------------------------------------------===// -int main(int, char**) -{ - - return 0; -} +int main(int, char**) { return 0; } diff --git a/libcxx/test/std/strings/string.conversions/stod.pass.cpp b/libcxx/test/std/strings/string.conversions/stod.pass.cpp --- a/libcxx/test/std/strings/string.conversions/stod.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/stod.pass.cpp @@ -18,141 +18,140 @@ #include "test_macros.h" -int main(int, char**) -{ - // char - { - assert(std::stod("0") == 0); - assert(std::stod("-0") == 0); - assert(std::stod("-10") == -10); - assert(std::stod(" 10") == 10); - { - std::size_t idx = 0; - assert(std::stod("10g", &idx) == 10); - assert(idx == 2); - } - { - std::size_t idx = 0; - assert(std::stod("1.e60", &idx) == 1.e60); - assert(idx == 5); - } - { - std::size_t idx = 0; - assert(std::stod("INF", &idx) == INFINITY); - assert(idx == 3); - } - { - std::size_t idx = 0; - assert(std::isnan(std::stod("NAN", &idx))); - assert(idx == 3); - } +int main(int, char**) { + // char + { + assert(std::stod("0") == 0); + assert(std::stod("-0") == 0); + assert(std::stod("-10") == -10); + assert(std::stod(" 10") == 10); + { + std::size_t idx = 0; + assert(std::stod("10g", &idx) == 10); + assert(idx == 2); + } + { + std::size_t idx = 0; + assert(std::stod("1.e60", &idx) == 1.e60); + assert(idx == 5); + } + { + std::size_t idx = 0; + assert(std::stod("INF", &idx) == INFINITY); + assert(idx == 3); + } + { + std::size_t idx = 0; + assert(std::isnan(std::stod("NAN", &idx))); + assert(idx == 3); + } #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - assert(std::stod("1.e360", &idx) == INFINITY); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stod("", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stod(" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stod("a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } -#endif // TEST_HAS_NO_EXCEPTIONS + { + std::size_t idx = 0; + try { + assert(std::stod("1.e360", &idx) == INFINITY); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stod("", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stod(" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stod("a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } } +#endif // TEST_HAS_NO_EXCEPTIONS + } - // wchar_t + // wchar_t #ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + assert(std::stod(L"0") == 0); + assert(std::stod(L"-0") == 0); + assert(std::stod(L"-10.5") == -10.5); + assert(std::stod(L" 10") == 10); { - assert(std::stod(L"0") == 0); - assert(std::stod(L"-0") == 0); - assert(std::stod(L"-10.5") == -10.5); - assert(std::stod(L" 10") == 10); - { - std::size_t idx = 0; - assert(std::stod(L"10g", &idx) == 10); - assert(idx == 2); - } - { - std::size_t idx = 0; - assert(std::stod(L"1.e60", &idx) == 1.e60); - assert(idx == 5); - } - { - std::size_t idx = 0; - assert(std::stod(L"INF", &idx) == INFINITY); - assert(idx == 3); - } - { - std::size_t idx = 0; - assert(std::isnan(std::stod(L"NAN", &idx))); - assert(idx == 3); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - assert(std::stod(L"1.e360", &idx) == INFINITY); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stod(L"", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stod(L" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stod(L"a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } -#endif // TEST_HAS_NO_EXCEPTIONS + std::size_t idx = 0; + assert(std::stod(L"10g", &idx) == 10); + assert(idx == 2); + } + { + std::size_t idx = 0; + assert(std::stod(L"1.e60", &idx) == 1.e60); + assert(idx == 5); + } + { + std::size_t idx = 0; + assert(std::stod(L"INF", &idx) == INFINITY); + assert(idx == 3); + } + { + std::size_t idx = 0; + assert(std::isnan(std::stod(L"NAN", &idx))); + assert(idx == 3); + } +# ifndef TEST_HAS_NO_EXCEPTIONS + { + std::size_t idx = 0; + try { + assert(std::stod(L"1.e360", &idx) == INFINITY); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stod(L"", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stod(L" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stod(L"a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } } +# endif // TEST_HAS_NO_EXCEPTIONS + } #endif // TEST_HAS_NO_WIDE_CHARACTERS return 0; diff --git a/libcxx/test/std/strings/string.conversions/stof.pass.cpp b/libcxx/test/std/strings/string.conversions/stof.pass.cpp --- a/libcxx/test/std/strings/string.conversions/stof.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/stof.pass.cpp @@ -18,143 +18,142 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::stof("0") == 0); - assert(std::stof("-0") == 0); - assert(std::stof("-10") == -10); - assert(std::stof(" 10") == 10); - { - std::size_t idx = 0; - assert(std::stof("10g", &idx) == 10); - assert(idx == 2); - } - { - std::size_t idx = 0; - assert(std::stof("INF", &idx) == INFINITY); - assert(idx == 3); - } - { - std::size_t idx = 0; - assert(std::isnan(std::stof("NAN", &idx))); - assert(idx == 3); - } +int main(int, char**) { + assert(std::stof("0") == 0); + assert(std::stof("-0") == 0); + assert(std::stof("-10") == -10); + assert(std::stof(" 10") == 10); + { + std::size_t idx = 0; + assert(std::stof("10g", &idx) == 10); + assert(idx == 2); + } + { + std::size_t idx = 0; + assert(std::stof("INF", &idx) == INFINITY); + assert(idx == 3); + } + { + std::size_t idx = 0; + assert(std::isnan(std::stof("NAN", &idx))); + assert(idx == 3); + } #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - assert(std::stof("1.e60", &idx) == INFINITY); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - assert(std::stof("1.e360", &idx) == INFINITY); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stof("", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stof(" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stof("a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } + { + std::size_t idx = 0; + try { + assert(std::stof("1.e60", &idx) == INFINITY); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + assert(std::stof("1.e360", &idx) == INFINITY); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stof("", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stof(" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stof("a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } #endif // TEST_HAS_NO_EXCEPTIONS #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert(std::stof(L"0") == 0); - assert(std::stof(L"-0") == 0); - assert(std::stof(L"-10.5") == -10.5); - assert(std::stof(L" 10") == 10); - { - std::size_t idx = 0; - assert(std::stof(L"10g", &idx) == 10); - assert(idx == 2); - } - { - std::size_t idx = 0; - assert(std::stof(L"INF", &idx) == INFINITY); - assert(idx == 3); - } - { - std::size_t idx = 0; - assert(std::isnan(std::stof(L"NAN", &idx))); - assert(idx == 3); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - assert(std::stof(L"1.e60", &idx) == INFINITY); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - assert(std::stof(L"1.e360", &idx) == INFINITY); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stof(L"", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stof(L" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stof(L"a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } -#endif // TEST_HAS_NO_EXCEPTIONS -#endif // TEST_HAS_NO_WIDE_CHARACTERS + assert(std::stof(L"0") == 0); + assert(std::stof(L"-0") == 0); + assert(std::stof(L"-10.5") == -10.5); + assert(std::stof(L" 10") == 10); + { + std::size_t idx = 0; + assert(std::stof(L"10g", &idx) == 10); + assert(idx == 2); + } + { + std::size_t idx = 0; + assert(std::stof(L"INF", &idx) == INFINITY); + assert(idx == 3); + } + { + std::size_t idx = 0; + assert(std::isnan(std::stof(L"NAN", &idx))); + assert(idx == 3); + } +# ifndef TEST_HAS_NO_EXCEPTIONS + { + std::size_t idx = 0; + try { + assert(std::stof(L"1.e60", &idx) == INFINITY); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + assert(std::stof(L"1.e360", &idx) == INFINITY); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stof(L"", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stof(L" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stof(L"a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } +# endif // TEST_HAS_NO_EXCEPTIONS +#endif // TEST_HAS_NO_WIDE_CHARACTERS return 0; } diff --git a/libcxx/test/std/strings/string.conversions/stoi.pass.cpp b/libcxx/test/std/strings/string.conversions/stoi.pass.cpp --- a/libcxx/test/std/strings/string.conversions/stoi.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/stoi.pass.cpp @@ -17,105 +17,102 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::stoi("0") == 0); - assert(std::stoi("-0") == 0); - assert(std::stoi("-10") == -10); - assert(std::stoi(" 10") == 10); - { - std::size_t idx = 0; - assert(std::stoi("10g", &idx, 16) == 16); - assert(idx == 2); - } +int main(int, char**) { + assert(std::stoi("0") == 0); + assert(std::stoi("-0") == 0); + assert(std::stoi("-10") == -10); + assert(std::stoi(" 10") == 10); + { + std::size_t idx = 0; + assert(std::stoi("10g", &idx, 16) == 16); + assert(idx == 2); + } #ifndef TEST_HAS_NO_EXCEPTIONS - if (std::numeric_limits::max() > std::numeric_limits::max()) { - std::size_t idx = 0; - try { - (void)std::stoi("0x100000000", &idx, 16); - assert(false); - } catch (const std::out_of_range&) { - - } + if (std::numeric_limits::max() > std::numeric_limits::max()) { + std::size_t idx = 0; + try { + (void)std::stoi("0x100000000", &idx, 16); + assert(false); + } catch (const std::out_of_range&) { } - { - std::size_t idx = 0; - try { - (void)std::stoi("", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoi("", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoi(" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoi(" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoi("a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoi("a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } + } #endif // TEST_HAS_NO_EXCEPTIONS #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert(std::stoi(L"0") == 0); - assert(std::stoi(L"-0") == 0); - assert(std::stoi(L"-10") == -10); - assert(std::stoi(L" 10") == 10); - { - std::size_t idx = 0; - assert(std::stoi(L"10g", &idx, 16) == 16); - assert(idx == 2); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - if (std::numeric_limits::max() > std::numeric_limits::max()) { - std::size_t idx = 0; - try { - (void)std::stoi(L"0x100000000", &idx, 16); - assert(false); - } catch (const std::out_of_range&) { - - } + assert(std::stoi(L"0") == 0); + assert(std::stoi(L"-0") == 0); + assert(std::stoi(L"-10") == -10); + assert(std::stoi(L" 10") == 10); + { + std::size_t idx = 0; + assert(std::stoi(L"10g", &idx, 16) == 16); + assert(idx == 2); + } +# ifndef TEST_HAS_NO_EXCEPTIONS + if (std::numeric_limits::max() > std::numeric_limits::max()) { + std::size_t idx = 0; + try { + (void)std::stoi(L"0x100000000", &idx, 16); + assert(false); + } catch (const std::out_of_range&) { } - { - std::size_t idx = 0; - try { - (void)std::stoi(L"", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoi(L"", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoi(L" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoi(L" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoi(L"a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoi(L"a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } -#endif // TEST_HAS_NO_EXCEPTIONS -#endif // TEST_HAS_NO_WIDE_CHARACTERS + } +# endif // TEST_HAS_NO_EXCEPTIONS +#endif // TEST_HAS_NO_WIDE_CHARACTERS return 0; } diff --git a/libcxx/test/std/strings/string.conversions/stol.pass.cpp b/libcxx/test/std/strings/string.conversions/stol.pass.cpp --- a/libcxx/test/std/strings/string.conversions/stol.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/stol.pass.cpp @@ -17,107 +17,106 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::stol("0") == 0); - assert(std::stol("-0") == 0); - assert(std::stol("-10") == -10); - assert(std::stol(" 10") == 10); - { - std::size_t idx = 0; - assert(std::stol("10g", &idx, 16) == 16); - assert(idx == 2); - } +int main(int, char**) { + assert(std::stol("0") == 0); + assert(std::stol("-0") == 0); + assert(std::stol("-10") == -10); + assert(std::stol(" 10") == 10); + { + std::size_t idx = 0; + assert(std::stol("10g", &idx, 16) == 16); + assert(idx == 2); + } #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stol("", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + { + std::size_t idx = 0; + try { + (void)std::stol("", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stol(" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stol(" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stol("a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stol("a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - // LWG#2009 and PR14919 - (void)std::stol("9999999999999999999999999999999999999999999999999", &idx); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + // LWG#2009 and PR14919 + (void)std::stol("9999999999999999999999999999999999999999999999999", &idx); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); } + } #endif // TEST_HAS_NO_EXCEPTIONS #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert(std::stol(L"0") == 0); - assert(std::stol(L"-0") == 0); - assert(std::stol(L"-10") == -10); - assert(std::stol(L" 10") == 10); - { - std::size_t idx = 0; - assert(std::stol(L"10g", &idx, 16) == 16); - assert(idx == 2); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stol(L"", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + assert(std::stol(L"0") == 0); + assert(std::stol(L"-0") == 0); + assert(std::stol(L"-10") == -10); + assert(std::stol(L" 10") == 10); + { + std::size_t idx = 0; + assert(std::stol(L"10g", &idx, 16) == 16); + assert(idx == 2); + } +# ifndef TEST_HAS_NO_EXCEPTIONS + { + std::size_t idx = 0; + try { + (void)std::stol(L"", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stol(L" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stol(L" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stol(L"a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stol(L"a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - // LWG#2009 and PR14919 - (void)std::stol(L"9999999999999999999999999999999999999999999999999", &idx); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + // LWG#2009 and PR14919 + (void)std::stol(L"9999999999999999999999999999999999999999999999999", &idx); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); } -#endif // TEST_HAS_NO_EXCEPTIONS -#endif // TEST_HAS_NO_WIDE_CHARACTERS + } +# endif // TEST_HAS_NO_EXCEPTIONS +#endif // TEST_HAS_NO_WIDE_CHARACTERS return 0; } diff --git a/libcxx/test/std/strings/string.conversions/stold.pass.cpp b/libcxx/test/std/strings/string.conversions/stold.pass.cpp --- a/libcxx/test/std/strings/string.conversions/stold.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/stold.pass.cpp @@ -18,136 +18,135 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::stold("0") == 0); - assert(std::stold("-0") == 0); - assert(std::stold("-10") == -10); - assert(std::stold(" 10") == 10); - { - std::size_t idx = 0; - assert(std::stold("10g", &idx) == 10); - assert(idx == 2); - } - { - std::size_t idx = 0; - assert(std::stold("1.e60", &idx) == 1.e60L); - assert(idx == 5); - } - { - std::size_t idx = 0; - assert(std::stold("INF", &idx) == INFINITY); - assert(idx == 3); - } - { - std::size_t idx = 0; - assert(std::isnan(std::stold("NAN", &idx))); - assert(idx == 3); - } +int main(int, char**) { + assert(std::stold("0") == 0); + assert(std::stold("-0") == 0); + assert(std::stold("-10") == -10); + assert(std::stold(" 10") == 10); + { + std::size_t idx = 0; + assert(std::stold("10g", &idx) == 10); + assert(idx == 2); + } + { + std::size_t idx = 0; + assert(std::stold("1.e60", &idx) == 1.e60L); + assert(idx == 5); + } + { + std::size_t idx = 0; + assert(std::stold("INF", &idx) == INFINITY); + assert(idx == 3); + } + { + std::size_t idx = 0; + assert(std::isnan(std::stold("NAN", &idx))); + assert(idx == 3); + } #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stold("", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stold(" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stold("a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - assert(std::stold("1.e6000", &idx) == INFINITY); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } - } + { + std::size_t idx = 0; + try { + (void)std::stold("", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stold(" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stold("a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + assert(std::stold("1.e6000", &idx) == INFINITY); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); + } + } #endif // TEST_HAS_NO_EXCEPTIONS #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert(std::stold(L"0") == 0); - assert(std::stold(L"-0") == 0); - assert(std::stold(L"-10.5") == -10.5); - assert(std::stold(L" 10") == 10); - { - std::size_t idx = 0; - assert(std::stold(L"10g", &idx) == 10); - assert(idx == 2); - } - { - std::size_t idx = 0; - assert(std::stold(L"1.e60", &idx) == 1.e60L); - assert(idx == 5); - } - { - std::size_t idx = 0; - assert(std::stold(L"INF", &idx) == INFINITY); - assert(idx == 3); - } - { - std::size_t idx = 0; - assert(std::isnan(std::stold(L"NAN", &idx))); - assert(idx == 3); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stold(L"", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stold(L" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - (void)std::stold(L"a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } - } - { - std::size_t idx = 0; - try { - assert(std::stold(L"1.e6000", &idx) == INFINITY); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } - } -#endif // TEST_HAS_NO_EXCEPTIONS -#endif // TEST_HAS_NO_WIDE_CHARACTERS + assert(std::stold(L"0") == 0); + assert(std::stold(L"-0") == 0); + assert(std::stold(L"-10.5") == -10.5); + assert(std::stold(L" 10") == 10); + { + std::size_t idx = 0; + assert(std::stold(L"10g", &idx) == 10); + assert(idx == 2); + } + { + std::size_t idx = 0; + assert(std::stold(L"1.e60", &idx) == 1.e60L); + assert(idx == 5); + } + { + std::size_t idx = 0; + assert(std::stold(L"INF", &idx) == INFINITY); + assert(idx == 3); + } + { + std::size_t idx = 0; + assert(std::isnan(std::stold(L"NAN", &idx))); + assert(idx == 3); + } +# ifndef TEST_HAS_NO_EXCEPTIONS + { + std::size_t idx = 0; + try { + (void)std::stold(L"", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stold(L" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + (void)std::stold(L"a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); + } + } + { + std::size_t idx = 0; + try { + assert(std::stold(L"1.e6000", &idx) == INFINITY); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); + } + } +# endif // TEST_HAS_NO_EXCEPTIONS +#endif // TEST_HAS_NO_WIDE_CHARACTERS return 0; } diff --git a/libcxx/test/std/strings/string.conversions/stoll.pass.cpp b/libcxx/test/std/strings/string.conversions/stoll.pass.cpp --- a/libcxx/test/std/strings/string.conversions/stoll.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/stoll.pass.cpp @@ -17,107 +17,106 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::stoll("0") == 0); - assert(std::stoll("-0") == 0); - assert(std::stoll("-10") == -10); - assert(std::stoll(" 10") == 10); - { - std::size_t idx = 0; - assert(std::stoll("10g", &idx, 16) == 16); - assert(idx == 2); - } +int main(int, char**) { + assert(std::stoll("0") == 0); + assert(std::stoll("-0") == 0); + assert(std::stoll("-10") == -10); + assert(std::stoll(" 10") == 10); + { + std::size_t idx = 0; + assert(std::stoll("10g", &idx, 16) == 16); + assert(idx == 2); + } #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stoll("", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + { + std::size_t idx = 0; + try { + (void)std::stoll("", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoll(" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoll(" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoll("a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoll("a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - // LWG#2009 and PR14919 - (void)std::stoll("99999999999999999999999999", &idx); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + // LWG#2009 and PR14919 + (void)std::stoll("99999999999999999999999999", &idx); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); } + } #endif // TEST_HAS_NO_EXCEPTIONS #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert(std::stoll(L"0") == 0); - assert(std::stoll(L"-0") == 0); - assert(std::stoll(L"-10") == -10); - assert(std::stoll(L" 10") == 10); - { - std::size_t idx = 0; - assert(std::stoll(L"10g", &idx, 16) == 16); - assert(idx == 2); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stoll(L"", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + assert(std::stoll(L"0") == 0); + assert(std::stoll(L"-0") == 0); + assert(std::stoll(L"-10") == -10); + assert(std::stoll(L" 10") == 10); + { + std::size_t idx = 0; + assert(std::stoll(L"10g", &idx, 16) == 16); + assert(idx == 2); + } +# ifndef TEST_HAS_NO_EXCEPTIONS + { + std::size_t idx = 0; + try { + (void)std::stoll(L"", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoll(L" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoll(L" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoll(L"a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoll(L"a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - // LWG#2009 and PR14919 - (void)std::stoll(L"99999999999999999999999999", &idx); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + // LWG#2009 and PR14919 + (void)std::stoll(L"99999999999999999999999999", &idx); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); } -#endif // TEST_HAS_NO_EXCEPTIONS -#endif // TEST_HAS_NO_WIDE_CHARACTERS + } +# endif // TEST_HAS_NO_EXCEPTIONS +#endif // TEST_HAS_NO_WIDE_CHARACTERS return 0; } diff --git a/libcxx/test/std/strings/string.conversions/stoul.pass.cpp b/libcxx/test/std/strings/string.conversions/stoul.pass.cpp --- a/libcxx/test/std/strings/string.conversions/stoul.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/stoul.pass.cpp @@ -17,105 +17,104 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::stoul("0") == 0); - assert(std::stoul("-0") == 0); - assert(std::stoul(" 10") == 10); - { - std::size_t idx = 0; - assert(std::stoul("10g", &idx, 16) == 16); - assert(idx == 2); - } +int main(int, char**) { + assert(std::stoul("0") == 0); + assert(std::stoul("-0") == 0); + assert(std::stoul(" 10") == 10); + { + std::size_t idx = 0; + assert(std::stoul("10g", &idx, 16) == 16); + assert(idx == 2); + } #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stoul("", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + { + std::size_t idx = 0; + try { + (void)std::stoul("", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoul(" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoul(" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoul("a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoul("a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - // LWG#2009 and PR14919 - (void)std::stoul("9999999999999999999999999999999999999999999999999", &idx); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + // LWG#2009 and PR14919 + (void)std::stoul("9999999999999999999999999999999999999999999999999", &idx); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); } + } #endif // TEST_HAS_NO_EXCEPTIONS #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert(std::stoul(L"0") == 0); - assert(std::stoul(L"-0") == 0); - assert(std::stoul(L" 10") == 10); - { - std::size_t idx = 0; - assert(std::stoul(L"10g", &idx, 16) == 16); - assert(idx == 2); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stoul(L"", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + assert(std::stoul(L"0") == 0); + assert(std::stoul(L"-0") == 0); + assert(std::stoul(L" 10") == 10); + { + std::size_t idx = 0; + assert(std::stoul(L"10g", &idx, 16) == 16); + assert(idx == 2); + } +# ifndef TEST_HAS_NO_EXCEPTIONS + { + std::size_t idx = 0; + try { + (void)std::stoul(L"", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoul(L" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoul(L" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoul(L"a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoul(L"a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - // LWG#2009 and PR14919 - (void)std::stoul(L"9999999999999999999999999999999999999999999999999", &idx); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + // LWG#2009 and PR14919 + (void)std::stoul(L"9999999999999999999999999999999999999999999999999", &idx); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); } -#endif // TEST_HAS_NO_EXCEPTIONS -#endif // TEST_HAS_NO_WIDE_CHARACTERS + } +# endif // TEST_HAS_NO_EXCEPTIONS +#endif // TEST_HAS_NO_WIDE_CHARACTERS return 0; } diff --git a/libcxx/test/std/strings/string.conversions/stoull.pass.cpp b/libcxx/test/std/strings/string.conversions/stoull.pass.cpp --- a/libcxx/test/std/strings/string.conversions/stoull.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/stoull.pass.cpp @@ -17,105 +17,104 @@ #include "test_macros.h" -int main(int, char**) -{ - assert(std::stoull("0") == 0); - assert(std::stoull("-0") == 0); - assert(std::stoull(" 10") == 10); - { - std::size_t idx = 0; - assert(std::stoull("10g", &idx, 16) == 16); - assert(idx == 2); - } +int main(int, char**) { + assert(std::stoull("0") == 0); + assert(std::stoull("-0") == 0); + assert(std::stoull(" 10") == 10); + { + std::size_t idx = 0; + assert(std::stoull("10g", &idx, 16) == 16); + assert(idx == 2); + } #ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stoull("", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + { + std::size_t idx = 0; + try { + (void)std::stoull("", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoull(" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoull(" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoull("a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoull("a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - // LWG#2009 and PR14919 - (void)std::stoull("9999999999999999999999999999999999999999999999999", &idx); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + // LWG#2009 and PR14919 + (void)std::stoull("9999999999999999999999999999999999999999999999999", &idx); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); } + } #endif // TEST_HAS_NO_EXCEPTIONS #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert(std::stoull(L"0") == 0); - assert(std::stoull(L"-0") == 0); - assert(std::stoull(L" 10") == 10); - { - std::size_t idx = 0; - assert(std::stoull(L"10g", &idx, 16) == 16); - assert(idx == 2); - } -#ifndef TEST_HAS_NO_EXCEPTIONS - { - std::size_t idx = 0; - try { - (void)std::stoull(L"", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + assert(std::stoull(L"0") == 0); + assert(std::stoull(L"-0") == 0); + assert(std::stoull(L" 10") == 10); + { + std::size_t idx = 0; + assert(std::stoull(L"10g", &idx, 16) == 16); + assert(idx == 2); + } +# ifndef TEST_HAS_NO_EXCEPTIONS + { + std::size_t idx = 0; + try { + (void)std::stoull(L"", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoull(L" - 8", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoull(L" - 8", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - (void)std::stoull(L"a1", &idx); - assert(false); - } catch (const std::invalid_argument&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + (void)std::stoull(L"a1", &idx); + assert(false); + } catch (const std::invalid_argument&) { + assert(idx == 0); } - { - std::size_t idx = 0; - try { - // LWG#2009 and PR14919 - (void)std::stoull(L"9999999999999999999999999999999999999999999999999", &idx); - assert(false); - } catch (const std::out_of_range&) { - assert(idx == 0); - } + } + { + std::size_t idx = 0; + try { + // LWG#2009 and PR14919 + (void)std::stoull(L"9999999999999999999999999999999999999999999999999", &idx); + assert(false); + } catch (const std::out_of_range&) { + assert(idx == 0); } -#endif // TEST_HAS_NO_EXCEPTIONS -#endif // TEST_HAS_NO_WIDE_CHARACTERS + } +# endif // TEST_HAS_NO_EXCEPTIONS +#endif // TEST_HAS_NO_WIDE_CHARACTERS return 0; } diff --git a/libcxx/test/std/strings/string.conversions/to_string.pass.cpp b/libcxx/test/std/strings/string.conversions/to_string.pass.cpp --- a/libcxx/test/std/strings/string.conversions/to_string.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/to_string.pass.cpp @@ -26,99 +26,92 @@ #include "test_macros.h" template -void -test_signed() -{ - { - std::string s = std::to_string(T(0)); - assert(s.size() == 1); - assert(s[s.size()] == 0); - assert(s == "0"); - } - { - std::string s = std::to_string(T(12345)); - assert(s.size() == 5); - assert(s[s.size()] == 0); - assert(s == "12345"); - } - { - std::string s = std::to_string(T(-12345)); - assert(s.size() == 6); - assert(s[s.size()] == 0); - assert(s == "-12345"); - } - { - std::string s = std::to_string(std::numeric_limits::max()); - assert(s.size() == std::numeric_limits::digits10 + 1); - T t = parse_integer(s); - assert(t == std::numeric_limits::max()); - } - { - std::string s = std::to_string(std::numeric_limits::min()); - T t = parse_integer(s); - assert(t == std::numeric_limits::min()); - } +void test_signed() { + { + std::string s = std::to_string(T(0)); + assert(s.size() == 1); + assert(s[s.size()] == 0); + assert(s == "0"); + } + { + std::string s = std::to_string(T(12345)); + assert(s.size() == 5); + assert(s[s.size()] == 0); + assert(s == "12345"); + } + { + std::string s = std::to_string(T(-12345)); + assert(s.size() == 6); + assert(s[s.size()] == 0); + assert(s == "-12345"); + } + { + std::string s = std::to_string(std::numeric_limits::max()); + assert(s.size() == std::numeric_limits::digits10 + 1); + T t = parse_integer(s); + assert(t == std::numeric_limits::max()); + } + { + std::string s = std::to_string(std::numeric_limits::min()); + T t = parse_integer(s); + assert(t == std::numeric_limits::min()); + } } template -void -test_unsigned() -{ - { - std::string s = std::to_string(T(0)); - assert(s.size() == 1); - assert(s[s.size()] == 0); - assert(s == "0"); - } - { - std::string s = std::to_string(T(12345)); - assert(s.size() == 5); - assert(s[s.size()] == 0); - assert(s == "12345"); - } - { - std::string s = std::to_string(std::numeric_limits::max()); - assert(s.size() == std::numeric_limits::digits10 + 1); - T t = parse_integer(s); - assert(t == std::numeric_limits::max()); - } +void test_unsigned() { + { + std::string s = std::to_string(T(0)); + assert(s.size() == 1); + assert(s[s.size()] == 0); + assert(s == "0"); + } + { + std::string s = std::to_string(T(12345)); + assert(s.size() == 5); + assert(s[s.size()] == 0); + assert(s == "12345"); + } + { + std::string s = std::to_string(std::numeric_limits::max()); + assert(s.size() == std::numeric_limits::digits10 + 1); + T t = parse_integer(s); + assert(t == std::numeric_limits::max()); + } } template -void -test_float() -{ - { - std::string s = std::to_string(T(0)); - assert(s.size() == 8); - assert(s[s.size()] == 0); - assert(s == "0.000000"); - } - { - std::string s = std::to_string(T(12345)); - assert(s.size() == 12); - assert(s[s.size()] == 0); - assert(s == "12345.000000"); - } - { - std::string s = std::to_string(T(-12345)); - assert(s.size() == 13); - assert(s[s.size()] == 0); - assert(s == "-12345.000000"); - } +void test_float() { + { + std::string s = std::to_string(T(0)); + assert(s.size() == 8); + assert(s[s.size()] == 0); + assert(s == "0.000000"); + } + { + std::string s = std::to_string(T(12345)); + assert(s.size() == 12); + assert(s[s.size()] == 0); + assert(s == "12345.000000"); + } + { + std::string s = std::to_string(T(-12345)); + assert(s.size() == 13); + assert(s[s.size()] == 0); + assert(s == "-12345.000000"); + } } -int main(int, char**) -{ - test_signed(); - test_signed(); - test_signed(); - test_unsigned(); - test_unsigned(); - test_unsigned(); - test_float(); - test_float(); - test_float(); +int main(int, char**) { + test_signed(); + test_signed(); + test_signed(); + test_unsigned(); + test_unsigned(); + test_unsigned(); + test_float(); + test_float(); + test_float(); return 0; } diff --git a/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp b/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp --- a/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp +++ b/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp @@ -28,99 +28,92 @@ #include "test_macros.h" template -void -test_signed() -{ - { - std::wstring s = std::to_wstring(T(0)); - assert(s.size() == 1); - assert(s[s.size()] == 0); - assert(s == L"0"); - } - { - std::wstring s = std::to_wstring(T(12345)); - assert(s.size() == 5); - assert(s[s.size()] == 0); - assert(s == L"12345"); - } - { - std::wstring s = std::to_wstring(T(-12345)); - assert(s.size() == 6); - assert(s[s.size()] == 0); - assert(s == L"-12345"); - } - { - std::wstring s = std::to_wstring(std::numeric_limits::max()); - assert(s.size() == std::numeric_limits::digits10 + 1); - T t = parse_integer(s); - assert(t == std::numeric_limits::max()); - } - { - std::wstring s = std::to_wstring(std::numeric_limits::min()); - T t = parse_integer(s); - assert(t == std::numeric_limits::min()); - } +void test_signed() { + { + std::wstring s = std::to_wstring(T(0)); + assert(s.size() == 1); + assert(s[s.size()] == 0); + assert(s == L"0"); + } + { + std::wstring s = std::to_wstring(T(12345)); + assert(s.size() == 5); + assert(s[s.size()] == 0); + assert(s == L"12345"); + } + { + std::wstring s = std::to_wstring(T(-12345)); + assert(s.size() == 6); + assert(s[s.size()] == 0); + assert(s == L"-12345"); + } + { + std::wstring s = std::to_wstring(std::numeric_limits::max()); + assert(s.size() == std::numeric_limits::digits10 + 1); + T t = parse_integer(s); + assert(t == std::numeric_limits::max()); + } + { + std::wstring s = std::to_wstring(std::numeric_limits::min()); + T t = parse_integer(s); + assert(t == std::numeric_limits::min()); + } } template -void -test_unsigned() -{ - { - std::wstring s = std::to_wstring(T(0)); - assert(s.size() == 1); - assert(s[s.size()] == 0); - assert(s == L"0"); - } - { - std::wstring s = std::to_wstring(T(12345)); - assert(s.size() == 5); - assert(s[s.size()] == 0); - assert(s == L"12345"); - } - { - std::wstring s = std::to_wstring(std::numeric_limits::max()); - assert(s.size() == std::numeric_limits::digits10 + 1); - T t = parse_integer(s); - assert(t == std::numeric_limits::max()); - } +void test_unsigned() { + { + std::wstring s = std::to_wstring(T(0)); + assert(s.size() == 1); + assert(s[s.size()] == 0); + assert(s == L"0"); + } + { + std::wstring s = std::to_wstring(T(12345)); + assert(s.size() == 5); + assert(s[s.size()] == 0); + assert(s == L"12345"); + } + { + std::wstring s = std::to_wstring(std::numeric_limits::max()); + assert(s.size() == std::numeric_limits::digits10 + 1); + T t = parse_integer(s); + assert(t == std::numeric_limits::max()); + } } template -void -test_float() -{ - { - std::wstring s = std::to_wstring(T(0)); - assert(s.size() == 8); - assert(s[s.size()] == 0); - assert(s == L"0.000000"); - } - { - std::wstring s = std::to_wstring(T(12345)); - assert(s.size() == 12); - assert(s[s.size()] == 0); - assert(s == L"12345.000000"); - } - { - std::wstring s = std::to_wstring(T(-12345)); - assert(s.size() == 13); - assert(s[s.size()] == 0); - assert(s == L"-12345.000000"); - } +void test_float() { + { + std::wstring s = std::to_wstring(T(0)); + assert(s.size() == 8); + assert(s[s.size()] == 0); + assert(s == L"0.000000"); + } + { + std::wstring s = std::to_wstring(T(12345)); + assert(s.size() == 12); + assert(s[s.size()] == 0); + assert(s == L"12345.000000"); + } + { + std::wstring s = std::to_wstring(T(-12345)); + assert(s.size() == 13); + assert(s[s.size()] == 0); + assert(s == L"-12345.000000"); + } } -int main(int, char**) -{ - test_signed(); - test_signed(); - test_signed(); - test_unsigned(); - test_unsigned(); - test_unsigned(); - test_float(); - test_float(); - test_float(); +int main(int, char**) { + test_signed(); + test_signed(); + test_signed(); + test_unsigned(); + test_unsigned(); + test_unsigned(); + test_float(); + test_float(); + test_float(); return 0; } diff --git a/libcxx/test/std/strings/string.view/char.bad.verify.cpp b/libcxx/test/std/strings/string.view/char.bad.verify.cpp --- a/libcxx/test/std/strings/string.view/char.bad.verify.cpp +++ b/libcxx/test/std/strings/string.view/char.bad.verify.cpp @@ -15,42 +15,42 @@ #include "../basic.string/test_traits.h" struct NotTrivial { - NotTrivial() : value(3) {} - int value; + NotTrivial() : value(3) {} + int value; }; struct NotStandardLayout { public: - NotStandardLayout() : one(1), two(2) {} - int sum() const { return one + two; } // silences "unused field 'two' warning" - int one; + NotStandardLayout() : one(1), two(2) {} + int sum() const { return one + two; } // silences "unused field 'two' warning" + int one; + private: - int two; + int two; }; -int main(int, char**) -{ - { -// array +int main(int, char**) { + { + // array typedef char C[3]; static_assert(std::is_array::value, ""); std::basic_string_view > sv; -// expected-error-re@string_view:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string_view must not be an array}} - } + // expected-error-re@string_view:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string_view must not be an array}} + } - { -// not trivial + { + // not trivial static_assert(!std::is_trivial::value, ""); std::basic_string_view > sv; -// expected-error-re@string_view:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string_view must be trivial}} - } + // expected-error-re@string_view:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string_view must be trivial}} + } - { -// not standard layout + { + // not standard layout static_assert(!std::is_standard_layout::value, ""); std::basic_string_view > sv; -// expected-error-re@string_view:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string_view must be standard-layout}} - } + // expected-error-re@string_view:* {{{{(static_assert|static assertion)}} failed{{.*}}Character type of basic_string_view must be standard-layout}} + } return 0; } diff --git a/libcxx/test/std/strings/string.view/range_concept_conformance.compile.pass.cpp b/libcxx/test/std/strings/string.view/range_concept_conformance.compile.pass.cpp --- a/libcxx/test/std/strings/string.view/range_concept_conformance.compile.pass.cpp +++ b/libcxx/test/std/strings/string.view/range_concept_conformance.compile.pass.cpp @@ -15,8 +15,6 @@ #include #include - - static_assert(std::same_as, std::string_view::iterator>); static_assert(std::ranges::common_range); static_assert(std::ranges::random_access_range); diff --git a/libcxx/test/std/strings/string.view/string.view.hash/char_type.hash.verify.cpp b/libcxx/test/std/strings/string.view/string.view.hash/char_type.hash.verify.cpp --- a/libcxx/test/std/strings/string.view/string.view.hash/char_type.hash.verify.cpp +++ b/libcxx/test/std/strings/string.view/string.view.hash/char_type.hash.verify.cpp @@ -21,57 +21,50 @@ template struct trait // copied from <__string> { - typedef _CharT char_type; - typedef int int_type; - typedef std::streamoff off_type; - typedef std::streampos pos_type; - typedef std::mbstate_t state_type; + typedef _CharT char_type; + typedef int int_type; + typedef std::streamoff off_type; + typedef std::streampos pos_type; + typedef std::mbstate_t state_type; - static inline void assign(char_type& __c1, const char_type& __c2) { - __c1 = __c2; - } - static inline bool eq(char_type __c1, char_type __c2) { return __c1 == __c2; } - static inline bool lt(char_type __c1, char_type __c2) { return __c1 < __c2; } + static inline void assign(char_type& __c1, const char_type& __c2) { __c1 = __c2; } + static inline bool eq(char_type __c1, char_type __c2) { return __c1 == __c2; } + static inline bool lt(char_type __c1, char_type __c2) { return __c1 < __c2; } - static int compare(const char_type* __s1, const char_type* __s2, std::size_t __n); - static std::size_t length(const char_type* __s); - static const char_type* find(const char_type* __s, std::size_t __n, - const char_type& __a); + static int compare(const char_type* __s1, const char_type* __s2, std::size_t __n); + static std::size_t length(const char_type* __s); + static const char_type* find(const char_type* __s, std::size_t __n, const char_type& __a); - static char_type* move(char_type* __s1, const char_type* __s2, std::size_t __n); - static char_type* copy(char_type* __s1, const char_type* __s2, std::size_t __n); - static char_type* assign(char_type* __s, std::size_t __n, char_type __a); + static char_type* move(char_type* __s1, const char_type* __s2, std::size_t __n); + static char_type* copy(char_type* __s1, const char_type* __s2, std::size_t __n); + static char_type* assign(char_type* __s, std::size_t __n, char_type __a); - static inline int_type not_eof(int_type __c) { - return eq_int_type(__c, eof()) ? ~eof() : __c; - } - static inline char_type to_char_type(int_type __c) { return char_type(__c); } - static inline int_type to_int_type(char_type __c) { return int_type(__c); } - static inline bool eq_int_type(int_type __c1, int_type __c2) { - return __c1 == __c2; - } - static inline int_type eof() { return int_type(EOF); } + static inline int_type not_eof(int_type __c) { return eq_int_type(__c, eof()) ? ~eof() : __c; } + static inline char_type to_char_type(int_type __c) { return char_type(__c); } + static inline int_type to_int_type(char_type __c) { return int_type(__c); } + static inline bool eq_int_type(int_type __c1, int_type __c2) { return __c1 == __c2; } + static inline int_type eof() { return int_type(EOF); } }; template void test() { - typedef std::basic_string_view > strv_t; - std::hash - h; // expected-error-re 4 {{{{call to implicitly-deleted default constructor of 'std::hash'|implicit instantiation of undefined template}} {{.+}}}}}} + typedef std::basic_string_view > strv_t; + std::hash + h; // expected-error-re 4 {{{{call to implicitly-deleted default constructor of 'std::hash'|implicit instantiation of undefined template}} {{.+}}}}}} #if TEST_STD_VER > 17 && defined(__cpp_char8_t) - // expected-error-re@-2 {{{{call to implicitly-deleted default constructor of 'std::hash'|implicit instantiation of undefined template}} {{.+}}}}}} + // expected-error-re@-2 {{{{call to implicitly-deleted default constructor of 'std::hash'|implicit instantiation of undefined template}} {{.+}}}}}} #endif - (void)h; + (void)h; } int main(int, char**) { - test(); - test(); + test(); + test(); #if TEST_STD_VER > 17 && defined(__cpp_char8_t) - test(); + test(); #endif - test(); - test(); + test(); + test(); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp b/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.hash/enabled_hashes.pass.cpp @@ -36,18 +36,18 @@ static bool eq(char_type, char_type); static bool lt(char_type, char_type); - static int compare(const char_type*, const char_type*, std::size_t); - static std::size_t length(const char_type*); + static int compare(const char_type*, const char_type*, std::size_t); + static std::size_t length(const char_type*); static const char_type* find(const char_type*, std::size_t, const char_type&); - static char_type* move(char_type*, const char_type*, std::size_t); - static char_type* copy(char_type*, const char_type*, std::size_t); - static char_type* assign(char_type*, std::size_t, char_type); + static char_type* move(char_type*, const char_type*, std::size_t); + static char_type* copy(char_type*, const char_type*, std::size_t); + static char_type* assign(char_type*, std::size_t, char_type); - static int_type not_eof(int_type); + static int_type not_eof(int_type); static char_type to_char_type(int_type); - static int_type to_int_type(char_type); - static bool eq_int_type(int_type, int_type); - static int_type eof(); + static int_type to_int_type(char_type); + static bool eq_int_type(int_type, int_type); + static int_type eof(); }; int main(int, char**) { diff --git a/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.hash/string_view.pass.cpp @@ -28,46 +28,43 @@ using std::string_view; template -void -test() -{ - typedef std::hash H; +void test() { + typedef std::hash H; #if TEST_STD_VER <= 14 - static_assert((std::is_same::value), "" ); - static_assert((std::is_same::value), "" ); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); #endif - typedef typename SV::value_type char_type; - typedef std::basic_string String; - typedef std::hash SH; - ASSERT_NOEXCEPT(H()(SV())); + typedef typename SV::value_type char_type; + typedef std::basic_string String; + typedef std::hash SH; + ASSERT_NOEXCEPT(H()(SV())); - char_type g1 [ 10 ]; - char_type g2 [ 10 ]; - for ( int i = 0; i < 10; ++i ) - g1[i] = g2[9-i] = static_cast('0' + i); - H h; - SH sh; - SV s1(g1, 10); - String ss1(s1); - SV s2(g2, 10); - String ss2(s2); - assert(h(s1) == h(s1)); - assert(h(s1) != h(s2)); - assert(sh(ss1) == h(s1)); - assert(sh(ss2) == h(s2)); + char_type g1[10]; + char_type g2[10]; + for (int i = 0; i < 10; ++i) + g1[i] = g2[9 - i] = static_cast('0' + i); + H h; + SH sh; + SV s1(g1, 10); + String ss1(s1); + SV s2(g2, 10); + String ss2(s2); + assert(h(s1) == h(s1)); + assert(h(s1) != h(s2)); + assert(sh(ss1) == h(s1)); + assert(sh(ss2) == h(s2)); } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #ifndef TEST_HAS_NO_CHAR8_T - test(); + test(); #endif - test(); - test(); + test(); + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.access/at.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/at.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.access/at.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.access/at.pass.cpp @@ -17,44 +17,48 @@ #include "test_macros.h" template -void test ( const CharT *s, std::size_t len ) { - std::basic_string_view sv ( s, len ); - assert ( sv.length() == len ); - for ( std::size_t i = 0; i < len; ++i ) { - assert ( sv.at(i) == s[i] ); - assert ( &sv.at(i) == s + i ); - } +void test(const CharT* s, std::size_t len) { + std::basic_string_view sv(s, len); + assert(sv.length() == len); + for (std::size_t i = 0; i < len; ++i) { + assert(sv.at(i) == s[i]); + assert(&sv.at(i) == s + i); + } #ifndef TEST_HAS_NO_EXCEPTIONS - try { (void)sv.at(len); } catch ( const std::out_of_range & ) { return ; } - assert ( false ); + try { + (void)sv.at(len); + } catch (const std::out_of_range&) { + return; + } + assert(false); #endif } int main(int, char**) { - test ( "ABCDE", 5 ); - test ( "a", 1 ); + test("ABCDE", 5); + test("a", 1); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"ABCDE", 5 ); - test ( L"a", 1 ); + test(L"ABCDE", 5); + test(L"a", 1); #endif #if TEST_STD_VER >= 11 - test ( u"ABCDE", 5 ); - test ( u"a", 1 ); + test(u"ABCDE", 5); + test(u"a", 1); - test ( U"ABCDE", 5 ); - test ( U"a", 1 ); + test(U"ABCDE", 5); + test(U"a", 1); #endif #if TEST_STD_VER >= 11 - { - constexpr std::basic_string_view sv ( "ABC", 2 ); - static_assert ( sv.length() == 2, "" ); - static_assert ( sv.at(0) == 'A', "" ); - static_assert ( sv.at(1) == 'B', "" ); - } + { + constexpr std::basic_string_view sv("ABC", 2); + static_assert(sv.length() == 2, ""); + static_assert(sv.at(0) == 'A', ""); + static_assert(sv.at(1) == 'B', ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp @@ -18,39 +18,39 @@ #include "test_macros.h" template -bool test ( const CharT *s, std::size_t len ) { - typedef std::basic_string_view SV; - SV sv ( s, len ); - ASSERT_SAME_TYPE(decltype(sv.back()), typename SV::const_reference); - LIBCPP_ASSERT_NOEXCEPT( sv.back()); - assert ( sv.length() == len ); - assert ( sv.back() == s[len-1] ); - return &sv.back() == s + len - 1; - } +bool test(const CharT* s, std::size_t len) { + typedef std::basic_string_view SV; + SV sv(s, len); + ASSERT_SAME_TYPE(decltype(sv.back()), typename SV::const_reference); + LIBCPP_ASSERT_NOEXCEPT(sv.back()); + assert(sv.length() == len); + assert(sv.back() == s[len - 1]); + return &sv.back() == s + len - 1; +} int main(int, char**) { - assert ( test ( "ABCDE", 5 )); - assert ( test ( "a", 1 )); + assert(test("ABCDE", 5)); + assert(test("a", 1)); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert ( test ( L"ABCDE", 5 )); - assert ( test ( L"a", 1 )); + assert(test(L"ABCDE", 5)); + assert(test(L"a", 1)); #endif #if TEST_STD_VER >= 11 - assert ( test ( u"ABCDE", 5 )); - assert ( test ( u"a", 1 )); + assert(test(u"ABCDE", 5)); + assert(test(u"a", 1)); - assert ( test ( U"ABCDE", 5 )); - assert ( test ( U"a", 1 )); + assert(test(U"ABCDE", 5)); + assert(test(U"a", 1)); #endif #if TEST_STD_VER >= 11 - { - constexpr std::basic_string_view sv ( "ABC", 2 ); - static_assert ( sv.length() == 2, "" ); - static_assert ( sv.back() == 'B', "" ); - } + { + constexpr std::basic_string_view sv("ABC", 2); + static_assert(sv.length() == 2, ""); + static_assert(sv.back() == 'B', ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.access/data.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/data.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.access/data.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.access/data.pass.cpp @@ -19,40 +19,40 @@ #include "test_macros.h" template -void test ( const CharT *s, std::size_t len ) { - std::basic_string_view sv ( s, len ); - assert ( sv.length() == len ); - assert ( sv.data() == s ); +void test(const CharT* s, std::size_t len) { + std::basic_string_view sv(s, len); + assert(sv.length() == len); + assert(sv.data() == s); #if TEST_STD_VER > 14 -// make sure we pick up std::data, too! - assert ( sv.data() == std::data(sv)); + // make sure we pick up std::data, too! + assert(sv.data() == std::data(sv)); #endif - } +} int main(int, char**) { - test ( "ABCDE", 5 ); - test ( "a", 1 ); + test("ABCDE", 5); + test("a", 1); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"ABCDE", 5 ); - test ( L"a", 1 ); + test(L"ABCDE", 5); + test(L"a", 1); #endif #if TEST_STD_VER >= 11 - test ( u"ABCDE", 5 ); - test ( u"a", 1 ); + test(u"ABCDE", 5); + test(u"a", 1); - test ( U"ABCDE", 5 ); - test ( U"a", 1 ); + test(U"ABCDE", 5); + test(U"a", 1); #endif #if TEST_STD_VER > 11 - { - constexpr const char *s = "ABC"; - constexpr std::basic_string_view sv( s, 2 ); - static_assert( sv.length() == 2, "" ); - static_assert( sv.data() == s, "" ); - } + { + constexpr const char* s = "ABC"; + constexpr std::basic_string_view sv(s, 2); + static_assert(sv.length() == 2, ""); + static_assert(sv.data() == s, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp @@ -18,39 +18,39 @@ #include "test_macros.h" template -bool test ( const CharT *s, std::size_t len ) { - typedef std::basic_string_view SV; - SV sv ( s, len ); - ASSERT_SAME_TYPE(decltype(sv.front()), typename SV::const_reference); - LIBCPP_ASSERT_NOEXCEPT( sv.front()); - assert ( sv.length() == len ); - assert ( sv.front() == s[0] ); - return &sv.front() == s; - } +bool test(const CharT* s, std::size_t len) { + typedef std::basic_string_view SV; + SV sv(s, len); + ASSERT_SAME_TYPE(decltype(sv.front()), typename SV::const_reference); + LIBCPP_ASSERT_NOEXCEPT(sv.front()); + assert(sv.length() == len); + assert(sv.front() == s[0]); + return &sv.front() == s; +} int main(int, char**) { - assert ( test ( "ABCDE", 5 )); - assert ( test ( "a", 1 )); + assert(test("ABCDE", 5)); + assert(test("a", 1)); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert ( test ( L"ABCDE", 5 )); - assert ( test ( L"a", 1 )); + assert(test(L"ABCDE", 5)); + assert(test(L"a", 1)); #endif #if TEST_STD_VER >= 11 - assert ( test ( u"ABCDE", 5 )); - assert ( test ( u"a", 1 )); + assert(test(u"ABCDE", 5)); + assert(test(u"a", 1)); - assert ( test ( U"ABCDE", 5 )); - assert ( test ( U"a", 1 )); + assert(test(U"ABCDE", 5)); + assert(test(U"a", 1)); #endif #if TEST_STD_VER >= 11 - { - constexpr std::basic_string_view sv ( "ABC", 2 ); - static_assert ( sv.length() == 2, "" ); - static_assert ( sv.front() == 'A', "" ); - } + { + constexpr std::basic_string_view sv("ABC", 2); + static_assert(sv.length() == 2, ""); + static_assert(sv.front() == 'A', ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp @@ -18,42 +18,42 @@ #include "test_macros.h" template -void test ( const CharT *s, std::size_t len ) { - typedef std::basic_string_view SV; - SV sv ( s, len ); - ASSERT_SAME_TYPE(decltype(sv[0]), typename SV::const_reference); - LIBCPP_ASSERT_NOEXCEPT( sv[0]); - assert ( sv.length() == len ); - for ( std::size_t i = 0; i < len; ++i ) { - assert ( sv[i] == s[i] ); - assert ( &sv[i] == s + i ); - } - } +void test(const CharT* s, std::size_t len) { + typedef std::basic_string_view SV; + SV sv(s, len); + ASSERT_SAME_TYPE(decltype(sv[0]), typename SV::const_reference); + LIBCPP_ASSERT_NOEXCEPT(sv[0]); + assert(sv.length() == len); + for (std::size_t i = 0; i < len; ++i) { + assert(sv[i] == s[i]); + assert(&sv[i] == s + i); + } +} int main(int, char**) { - test ( "ABCDE", 5 ); - test ( "a", 1 ); + test("ABCDE", 5); + test("a", 1); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"ABCDE", 5 ); - test ( L"a", 1 ); + test(L"ABCDE", 5); + test(L"a", 1); #endif #if TEST_STD_VER >= 11 - test ( u"ABCDE", 5 ); - test ( u"a", 1 ); + test(u"ABCDE", 5); + test(u"a", 1); - test ( U"ABCDE", 5 ); - test ( U"a", 1 ); + test(U"ABCDE", 5); + test(U"a", 1); #endif #if TEST_STD_VER > 11 - { - constexpr std::basic_string_view sv ( "ABC", 2 ); - static_assert ( sv.length() == 2, "" ); - static_assert ( sv[0] == 'A', "" ); - static_assert ( sv[1] == 'B', "" ); - } + { + constexpr std::basic_string_view sv("ABC", 2); + static_assert(sv.length() == 2, ""); + static_assert(sv[0] == 'A', ""); + static_assert(sv[1] == 'B', ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp b/libcxx/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.capacity/capacity.pass.cpp @@ -23,98 +23,103 @@ #include "test_macros.h" -template -void test1 () { +template +void test1() { #if TEST_STD_VER > 11 - { + { constexpr SV sv1; - static_assert ( sv1.size() == 0, "" ); - static_assert ( sv1.empty(), ""); - static_assert ( sv1.size() == sv1.length(), "" ); - static_assert ( sv1.max_size() > sv1.size(), ""); - } + static_assert(sv1.size() == 0, ""); + static_assert(sv1.empty(), ""); + static_assert(sv1.size() == sv1.length(), ""); + static_assert(sv1.max_size() > sv1.size(), ""); + } #endif - { + { SV sv1; ASSERT_NOEXCEPT(sv1.size()); ASSERT_NOEXCEPT(sv1.empty()); ASSERT_NOEXCEPT(sv1.max_size()); ASSERT_NOEXCEPT(sv1.length()); - assert ( sv1.size() == 0 ); - assert ( sv1.empty()); - assert ( sv1.size() == sv1.length()); - assert ( sv1.max_size() > sv1.size()); - } - - // Sanity check max_size() -- a string_view can't store more bytes than a single object - // can contain. Any implementation that fails this check is certainly lying. - { - typedef typename SV::value_type CharT; - typedef typename SV::size_type Size; - SV sv; - assert(sv.max_size() <= std::numeric_limits::max() / sizeof(CharT)); - LIBCPP_ASSERT(sv.max_size() == std::numeric_limits::max() / sizeof(CharT)); - } + assert(sv1.size() == 0); + assert(sv1.empty()); + assert(sv1.size() == sv1.length()); + assert(sv1.max_size() > sv1.size()); + } + + // Sanity check max_size() -- a string_view can't store more bytes than a single object + // can contain. Any implementation that fails this check is certainly lying. + { + typedef typename SV::value_type CharT; + typedef typename SV::size_type Size; + SV sv; + assert(sv.max_size() <= std::numeric_limits::max() / sizeof(CharT)); + LIBCPP_ASSERT(sv.max_size() == std::numeric_limits::max() / sizeof(CharT)); + } } -template -void test2 ( const CharT *s, std::size_t len ) { - { - std::basic_string_view sv1 ( s ); - assert ( sv1.size() == len ); - assert ( sv1.data() == s ); - assert ( sv1.empty() == (len == 0)); - assert ( sv1.size() == sv1.length()); - assert ( sv1.max_size() > sv1.size()); +template +void test2(const CharT* s, std::size_t len) { + { + std::basic_string_view sv1(s); + assert(sv1.size() == len); + assert(sv1.data() == s); + assert(sv1.empty() == (len == 0)); + assert(sv1.size() == sv1.length()); + assert(sv1.max_size() > sv1.size()); #if TEST_STD_VER > 14 -// make sure we pick up std::size, too! - assert ( sv1.size() == std::size(sv1)); - assert ( sv1.empty() == std::empty(sv1)); + // make sure we pick up std::size, too! + assert(sv1.size() == std::size(sv1)); + assert(sv1.empty() == std::empty(sv1)); #endif - } + } } int main(int, char**) { - test1 (); + test1(); #ifndef TEST_HAS_NO_CHAR8_T - test1 (); + test1(); #endif - test1 (); - test1 (); + test1(); + test1(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test1 (); + test1(); #endif - test2 ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 ); - test2 ( "ABCDE", 5 ); - test2 ( "a", 1 ); - test2 ( "", 0 ); + test2("ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", + 105); + test2("ABCDE", 5); + test2("a", 1); + test2("", 0); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test2 ( L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 ); - test2 ( L"ABCDE", 5 ); - test2 ( L"a", 1 ); - test2 ( L"", 0 ); + test2(L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", + 105); + test2(L"ABCDE", 5); + test2(L"a", 1); + test2(L"", 0); #endif #ifndef TEST_HAS_NO_CHAR8_T - test2 ( u8"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 ); - test2 ( u8"ABCDE", 5 ); - test2 ( u8"a", 1 ); - test2 ( u8"", 0 ); + test2(u8"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", + 105); + test2(u8"ABCDE", 5); + test2(u8"a", 1); + test2(u8"", 0); #endif #if TEST_STD_VER >= 11 - test2 ( u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 ); - test2 ( u"ABCDE", 5 ); - test2 ( u"a", 1 ); - test2 ( u"", 0 ); - - test2 ( U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 ); - test2 ( U"ABCDE", 5 ); - test2 ( U"a", 1 ); - test2 ( U"", 0 ); + test2(u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", + 105); + test2(u"ABCDE", 5); + test2(u"a", 1); + test2(u"", 0); + + test2(U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", + 105); + test2(U"ABCDE", 5); + test2(U"a", 1); + test2(U"", 0); #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.capacity/empty.verify.cpp b/libcxx/test/std/strings/string.view/string.view.capacity/empty.verify.cpp --- a/libcxx/test/std/strings/string.view/string.view.capacity/empty.verify.cpp +++ b/libcxx/test/std/strings/string.view/string.view.capacity/empty.verify.cpp @@ -17,6 +17,6 @@ #include void f() { - std::string_view c; - c.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} + std::string_view c; + c.empty(); // expected-warning {{ignoring return value of function declared with 'nodiscard' attribute}} } diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/equal.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/equal.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.comparison/equal.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.comparison/equal.pass.cpp @@ -22,95 +22,91 @@ #include "constexpr_char_traits.h" #include "make_string.h" -template +template struct ConvertibleTo { - T t_; - TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} - TEST_CONSTEXPR operator T() const { - return t_; - } + T t_; + TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} + TEST_CONSTEXPR operator T() const { return t_; } }; -template -TEST_CONSTEXPR_CXX14 bool test() -{ - typedef typename SV::value_type CharT; - typedef typename SV::traits_type Traits; - - // Test the behavior of the operator, both with and without implicit conversions. - SV v[] = { - SV(MAKE_CSTRING(CharT, "")), - SV(MAKE_CSTRING(CharT, "abc")), - SV(MAKE_CSTRING(CharT, "abcdef")), - SV(MAKE_CSTRING(CharT, "acb")), - }; - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < 4; ++j) { - // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads - bool expected = (i == j); - assert((v[i] == v[j]) == expected); - assert((v[i].data() == v[j]) == expected); - assert((v[i] == v[j].data()) == expected); - assert((ConvertibleTo(v[i]) == v[j]) == expected); - assert((v[i] == ConvertibleTo(v[j])) == expected); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(v[i]) == v[j]) == expected); - assert((v[i] == std::basic_string(v[j])) == expected); - } - } - } - - // Test its behavior with embedded null bytes. - SV abc = SV(MAKE_CSTRING(CharT, "abc")); - SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); - SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); - assert((abc == abc0def) == false); - assert((abc == abcdef) == false); - assert((abc0def == abc) == false); - assert((abc0def == abcdef) == false); - assert((abcdef == abc) == false); - assert((abcdef == abc0def) == false); - - assert((abc.data() == abc0def) == false); - assert((abc0def == abc.data()) == false); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(abc) == abc0def) == false); - assert((abc0def == std::basic_string(abc)) == false); +template +TEST_CONSTEXPR_CXX14 bool test() { + typedef typename SV::value_type CharT; + typedef typename SV::traits_type Traits; + + // Test the behavior of the operator, both with and without implicit conversions. + SV v[] = { + SV(MAKE_CSTRING(CharT, "")), + SV(MAKE_CSTRING(CharT, "abc")), + SV(MAKE_CSTRING(CharT, "abcdef")), + SV(MAKE_CSTRING(CharT, "acb")), + }; + for (int i = 0; i < 4; ++i) { + for (int j = 0; j < 4; ++j) { + // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads + bool expected = (i == j); + assert((v[i] == v[j]) == expected); + assert((v[i].data() == v[j]) == expected); + assert((v[i] == v[j].data()) == expected); + assert((ConvertibleTo(v[i]) == v[j]) == expected); + assert((v[i] == ConvertibleTo(v[j])) == expected); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(v[i]) == v[j]) == expected); + assert((v[i] == std::basic_string(v[j])) == expected); + } } - - return true; + } + + // Test its behavior with embedded null bytes. + SV abc = SV(MAKE_CSTRING(CharT, "abc")); + SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); + SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); + assert((abc == abc0def) == false); + assert((abc == abcdef) == false); + assert((abc0def == abc) == false); + assert((abc0def == abcdef) == false); + assert((abcdef == abc) == false); + assert((abcdef == abc0def) == false); + + assert((abc.data() == abc0def) == false); + assert((abc0def == abc.data()) == false); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(abc) == abc0def) == false); + assert((abc0def == std::basic_string(abc)) == false); + } + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif #if TEST_STD_VER >= 11 - test(); - test(); + test(); + test(); #endif #if TEST_STD_VER > 14 - static_assert(test(), ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert(test(), ""); -#endif - static_assert(test(), ""); - static_assert(test(), ""); + static_assert(test(), ""); +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + static_assert(test(), ""); +# endif + static_assert(test(), ""); + static_assert(test(), ""); #endif #if TEST_STD_VER > 11 - test>>(); - static_assert(test>>(), ""); + test>>(); + static_assert(test>>(), ""); #endif #if TEST_STD_VER > 17 - test(); - static_assert(test()); + test(); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/greater.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/greater.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.comparison/greater.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.comparison/greater.pass.cpp @@ -22,95 +22,91 @@ #include "constexpr_char_traits.h" #include "make_string.h" -template +template struct ConvertibleTo { - T t_; - TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} - TEST_CONSTEXPR operator T() const { - return t_; - } + T t_; + TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} + TEST_CONSTEXPR operator T() const { return t_; } }; -template -TEST_CONSTEXPR_CXX14 bool test() -{ - typedef typename SV::value_type CharT; - typedef typename SV::traits_type Traits; - - // Test the behavior of the operator, both with and without implicit conversions. - SV v[] = { - SV(MAKE_CSTRING(CharT, "")), - SV(MAKE_CSTRING(CharT, "abc")), - SV(MAKE_CSTRING(CharT, "abcdef")), - SV(MAKE_CSTRING(CharT, "acb")), - }; - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < 4; ++j) { - // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads - bool expected = (i > j); - assert((v[i] > v[j]) == expected); - assert((v[i].data() > v[j]) == expected); - assert((v[i] > v[j].data()) == expected); - assert((ConvertibleTo(v[i]) > v[j]) == expected); - assert((v[i] > ConvertibleTo(v[j])) == expected); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(v[i]) > v[j]) == expected); - assert((v[i] > std::basic_string(v[j])) == expected); - } - } - } - - // Test its behavior with embedded null bytes. - SV abc = SV(MAKE_CSTRING(CharT, "abc")); - SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); - SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); - assert((abc > abc0def) == false); - assert((abc > abcdef) == false); - assert((abc0def > abc) == true); - assert((abc0def > abcdef) == false); - assert((abcdef > abc) == true); - assert((abcdef > abc0def) == true); - - assert((abc.data() > abc0def) == false); - assert((abc0def > abc.data()) == true); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(abc) > abc0def) == false); - assert((abc0def > std::basic_string(abc)) == true); +template +TEST_CONSTEXPR_CXX14 bool test() { + typedef typename SV::value_type CharT; + typedef typename SV::traits_type Traits; + + // Test the behavior of the operator, both with and without implicit conversions. + SV v[] = { + SV(MAKE_CSTRING(CharT, "")), + SV(MAKE_CSTRING(CharT, "abc")), + SV(MAKE_CSTRING(CharT, "abcdef")), + SV(MAKE_CSTRING(CharT, "acb")), + }; + for (int i = 0; i < 4; ++i) { + for (int j = 0; j < 4; ++j) { + // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads + bool expected = (i > j); + assert((v[i] > v[j]) == expected); + assert((v[i].data() > v[j]) == expected); + assert((v[i] > v[j].data()) == expected); + assert((ConvertibleTo(v[i]) > v[j]) == expected); + assert((v[i] > ConvertibleTo(v[j])) == expected); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(v[i]) > v[j]) == expected); + assert((v[i] > std::basic_string(v[j])) == expected); + } } - - return true; + } + + // Test its behavior with embedded null bytes. + SV abc = SV(MAKE_CSTRING(CharT, "abc")); + SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); + SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); + assert((abc > abc0def) == false); + assert((abc > abcdef) == false); + assert((abc0def > abc) == true); + assert((abc0def > abcdef) == false); + assert((abcdef > abc) == true); + assert((abcdef > abc0def) == true); + + assert((abc.data() > abc0def) == false); + assert((abc0def > abc.data()) == true); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(abc) > abc0def) == false); + assert((abc0def > std::basic_string(abc)) == true); + } + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif #if TEST_STD_VER >= 11 - test(); - test(); + test(); + test(); #endif #if TEST_STD_VER > 14 - static_assert(test(), ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert(test(), ""); -#endif - static_assert(test(), ""); - static_assert(test(), ""); + static_assert(test(), ""); +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + static_assert(test(), ""); +# endif + static_assert(test(), ""); + static_assert(test(), ""); #endif #if TEST_STD_VER > 11 - test>>(); - static_assert(test>>(), ""); + test>>(); + static_assert(test>>(), ""); #endif #if TEST_STD_VER > 17 - test(); - static_assert(test()); + test(); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/greater_equal.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/greater_equal.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.comparison/greater_equal.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.comparison/greater_equal.pass.cpp @@ -22,95 +22,91 @@ #include "constexpr_char_traits.h" #include "make_string.h" -template +template struct ConvertibleTo { - T t_; - TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} - TEST_CONSTEXPR operator T() const { - return t_; - } + T t_; + TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} + TEST_CONSTEXPR operator T() const { return t_; } }; -template -TEST_CONSTEXPR_CXX14 bool test() -{ - typedef typename SV::value_type CharT; - typedef typename SV::traits_type Traits; - - // Test the behavior of the operator, both with and without implicit conversions. - SV v[] = { - SV(MAKE_CSTRING(CharT, "")), - SV(MAKE_CSTRING(CharT, "abc")), - SV(MAKE_CSTRING(CharT, "abcdef")), - SV(MAKE_CSTRING(CharT, "acb")), - }; - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < 4; ++j) { - // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads - bool expected = (i >= j); - assert((v[i] >= v[j]) == expected); - assert((v[i].data() >= v[j]) == expected); - assert((v[i] >= v[j].data()) == expected); - assert((ConvertibleTo(v[i]) >= v[j]) == expected); - assert((v[i] >= ConvertibleTo(v[j])) == expected); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(v[i]) >= v[j]) == expected); - assert((v[i] >= std::basic_string(v[j])) == expected); - } - } - } - - // Test its behavior with embedded null bytes. - SV abc = SV(MAKE_CSTRING(CharT, "abc")); - SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); - SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); - assert((abc >= abc0def) == false); - assert((abc >= abcdef) == false); - assert((abc0def >= abc) == true); - assert((abc0def >= abcdef) == false); - assert((abcdef >= abc) == true); - assert((abcdef >= abc0def) == true); - - assert((abc.data() >= abc0def) == false); - assert((abc0def >= abc.data()) == true); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(abc) >= abc0def) == false); - assert((abc0def >= std::basic_string(abc)) == true); +template +TEST_CONSTEXPR_CXX14 bool test() { + typedef typename SV::value_type CharT; + typedef typename SV::traits_type Traits; + + // Test the behavior of the operator, both with and without implicit conversions. + SV v[] = { + SV(MAKE_CSTRING(CharT, "")), + SV(MAKE_CSTRING(CharT, "abc")), + SV(MAKE_CSTRING(CharT, "abcdef")), + SV(MAKE_CSTRING(CharT, "acb")), + }; + for (int i = 0; i < 4; ++i) { + for (int j = 0; j < 4; ++j) { + // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads + bool expected = (i >= j); + assert((v[i] >= v[j]) == expected); + assert((v[i].data() >= v[j]) == expected); + assert((v[i] >= v[j].data()) == expected); + assert((ConvertibleTo(v[i]) >= v[j]) == expected); + assert((v[i] >= ConvertibleTo(v[j])) == expected); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(v[i]) >= v[j]) == expected); + assert((v[i] >= std::basic_string(v[j])) == expected); + } } - - return true; + } + + // Test its behavior with embedded null bytes. + SV abc = SV(MAKE_CSTRING(CharT, "abc")); + SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); + SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); + assert((abc >= abc0def) == false); + assert((abc >= abcdef) == false); + assert((abc0def >= abc) == true); + assert((abc0def >= abcdef) == false); + assert((abcdef >= abc) == true); + assert((abcdef >= abc0def) == true); + + assert((abc.data() >= abc0def) == false); + assert((abc0def >= abc.data()) == true); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(abc) >= abc0def) == false); + assert((abc0def >= std::basic_string(abc)) == true); + } + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif #if TEST_STD_VER >= 11 - test(); - test(); + test(); + test(); #endif #if TEST_STD_VER > 14 - static_assert(test(), ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert(test(), ""); -#endif - static_assert(test(), ""); - static_assert(test(), ""); + static_assert(test(), ""); +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + static_assert(test(), ""); +# endif + static_assert(test(), ""); + static_assert(test(), ""); #endif #if TEST_STD_VER > 11 - test>>(); - static_assert(test>>(), ""); + test>>(); + static_assert(test>>(), ""); #endif #if TEST_STD_VER > 17 - test(); - static_assert(test()); + test(); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/less.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/less.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.comparison/less.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.comparison/less.pass.cpp @@ -22,95 +22,91 @@ #include "constexpr_char_traits.h" #include "make_string.h" -template +template struct ConvertibleTo { - T t_; - TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} - TEST_CONSTEXPR operator T() const { - return t_; - } + T t_; + TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} + TEST_CONSTEXPR operator T() const { return t_; } }; -template -TEST_CONSTEXPR_CXX14 bool test() -{ - typedef typename SV::value_type CharT; - typedef typename SV::traits_type Traits; - - // Test the behavior of the operator, both with and without implicit conversions. - SV v[] = { - SV(MAKE_CSTRING(CharT, "")), - SV(MAKE_CSTRING(CharT, "abc")), - SV(MAKE_CSTRING(CharT, "abcdef")), - SV(MAKE_CSTRING(CharT, "acb")), - }; - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < 4; ++j) { - // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads - bool expected = (i < j); - assert((v[i] < v[j]) == expected); - assert((v[i].data() < v[j]) == expected); - assert((v[i] < v[j].data()) == expected); - assert((ConvertibleTo(v[i]) < v[j]) == expected); - assert((v[i] < ConvertibleTo(v[j])) == expected); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(v[i]) < v[j]) == expected); - assert((v[i] < std::basic_string(v[j])) == expected); - } - } - } - - // Test its behavior with embedded null bytes. - SV abc = SV(MAKE_CSTRING(CharT, "abc")); - SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); - SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); - assert((abc < abc0def) == true); - assert((abc < abcdef) == true); - assert((abc0def < abc) == false); - assert((abc0def < abcdef) == true); - assert((abcdef < abc) == false); - assert((abcdef < abc0def) == false); - - assert((abc.data() < abc0def) == true); - assert((abc0def < abc.data()) == false); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(abc) < abc0def) == true); - assert((abc0def < std::basic_string(abc)) == false); +template +TEST_CONSTEXPR_CXX14 bool test() { + typedef typename SV::value_type CharT; + typedef typename SV::traits_type Traits; + + // Test the behavior of the operator, both with and without implicit conversions. + SV v[] = { + SV(MAKE_CSTRING(CharT, "")), + SV(MAKE_CSTRING(CharT, "abc")), + SV(MAKE_CSTRING(CharT, "abcdef")), + SV(MAKE_CSTRING(CharT, "acb")), + }; + for (int i = 0; i < 4; ++i) { + for (int j = 0; j < 4; ++j) { + // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads + bool expected = (i < j); + assert((v[i] < v[j]) == expected); + assert((v[i].data() < v[j]) == expected); + assert((v[i] < v[j].data()) == expected); + assert((ConvertibleTo(v[i]) < v[j]) == expected); + assert((v[i] < ConvertibleTo(v[j])) == expected); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(v[i]) < v[j]) == expected); + assert((v[i] < std::basic_string(v[j])) == expected); + } } - - return true; + } + + // Test its behavior with embedded null bytes. + SV abc = SV(MAKE_CSTRING(CharT, "abc")); + SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); + SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); + assert((abc < abc0def) == true); + assert((abc < abcdef) == true); + assert((abc0def < abc) == false); + assert((abc0def < abcdef) == true); + assert((abcdef < abc) == false); + assert((abcdef < abc0def) == false); + + assert((abc.data() < abc0def) == true); + assert((abc0def < abc.data()) == false); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(abc) < abc0def) == true); + assert((abc0def < std::basic_string(abc)) == false); + } + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif #if TEST_STD_VER >= 11 - test(); - test(); + test(); + test(); #endif #if TEST_STD_VER > 14 - static_assert(test(), ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert(test(), ""); -#endif - static_assert(test(), ""); - static_assert(test(), ""); + static_assert(test(), ""); +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + static_assert(test(), ""); +# endif + static_assert(test(), ""); + static_assert(test(), ""); #endif #if TEST_STD_VER > 11 - test>>(); - static_assert(test>>(), ""); + test>>(); + static_assert(test>>(), ""); #endif #if TEST_STD_VER > 17 - test(); - static_assert(test()); + test(); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/less_equal.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/less_equal.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.comparison/less_equal.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.comparison/less_equal.pass.cpp @@ -22,95 +22,91 @@ #include "constexpr_char_traits.h" #include "make_string.h" -template +template struct ConvertibleTo { - T t_; - TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} - TEST_CONSTEXPR operator T() const { - return t_; - } + T t_; + TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} + TEST_CONSTEXPR operator T() const { return t_; } }; -template -TEST_CONSTEXPR_CXX14 bool test() -{ - typedef typename SV::value_type CharT; - typedef typename SV::traits_type Traits; - - // Test the behavior of the operator, both with and without implicit conversions. - SV v[] = { - SV(MAKE_CSTRING(CharT, "")), - SV(MAKE_CSTRING(CharT, "abc")), - SV(MAKE_CSTRING(CharT, "abcdef")), - SV(MAKE_CSTRING(CharT, "acb")), - }; - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < 4; ++j) { - // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads - bool expected = (i <= j); - assert((v[i] <= v[j]) == expected); - assert((v[i].data() <= v[j]) == expected); - assert((v[i] <= v[j].data()) == expected); - assert((ConvertibleTo(v[i]) <= v[j]) == expected); - assert((v[i] <= ConvertibleTo(v[j])) == expected); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(v[i]) <= v[j]) == expected); - assert((v[i] <= std::basic_string(v[j])) == expected); - } - } - } - - // Test its behavior with embedded null bytes. - SV abc = SV(MAKE_CSTRING(CharT, "abc")); - SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); - SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); - assert((abc <= abc0def) == true); - assert((abc <= abcdef) == true); - assert((abc0def <= abc) == false); - assert((abc0def <= abcdef) == true); - assert((abcdef <= abc) == false); - assert((abcdef <= abc0def) == false); - - assert((abc.data() <= abc0def) == true); - assert((abc0def <= abc.data()) == false); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(abc) <= abc0def) == true); - assert((abc0def <= std::basic_string(abc)) == false); +template +TEST_CONSTEXPR_CXX14 bool test() { + typedef typename SV::value_type CharT; + typedef typename SV::traits_type Traits; + + // Test the behavior of the operator, both with and without implicit conversions. + SV v[] = { + SV(MAKE_CSTRING(CharT, "")), + SV(MAKE_CSTRING(CharT, "abc")), + SV(MAKE_CSTRING(CharT, "abcdef")), + SV(MAKE_CSTRING(CharT, "acb")), + }; + for (int i = 0; i < 4; ++i) { + for (int j = 0; j < 4; ++j) { + // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads + bool expected = (i <= j); + assert((v[i] <= v[j]) == expected); + assert((v[i].data() <= v[j]) == expected); + assert((v[i] <= v[j].data()) == expected); + assert((ConvertibleTo(v[i]) <= v[j]) == expected); + assert((v[i] <= ConvertibleTo(v[j])) == expected); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(v[i]) <= v[j]) == expected); + assert((v[i] <= std::basic_string(v[j])) == expected); + } } - - return true; + } + + // Test its behavior with embedded null bytes. + SV abc = SV(MAKE_CSTRING(CharT, "abc")); + SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); + SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); + assert((abc <= abc0def) == true); + assert((abc <= abcdef) == true); + assert((abc0def <= abc) == false); + assert((abc0def <= abcdef) == true); + assert((abcdef <= abc) == false); + assert((abcdef <= abc0def) == false); + + assert((abc.data() <= abc0def) == true); + assert((abc0def <= abc.data()) == false); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(abc) <= abc0def) == true); + assert((abc0def <= std::basic_string(abc)) == false); + } + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif #if TEST_STD_VER >= 11 - test(); - test(); + test(); + test(); #endif #if TEST_STD_VER > 14 - static_assert(test(), ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert(test(), ""); -#endif - static_assert(test(), ""); - static_assert(test(), ""); + static_assert(test(), ""); +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + static_assert(test(), ""); +# endif + static_assert(test(), ""); + static_assert(test(), ""); #endif #if TEST_STD_VER > 11 - test>>(); - static_assert(test>>(), ""); + test>>(); + static_assert(test>>(), ""); #endif #if TEST_STD_VER > 17 - test(); - static_assert(test()); + test(); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.comparison/not_equal.pass.cpp b/libcxx/test/std/strings/string.view/string.view.comparison/not_equal.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.comparison/not_equal.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.comparison/not_equal.pass.cpp @@ -22,95 +22,91 @@ #include "constexpr_char_traits.h" #include "make_string.h" -template +template struct ConvertibleTo { - T t_; - TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} - TEST_CONSTEXPR operator T() const { - return t_; - } + T t_; + TEST_CONSTEXPR explicit ConvertibleTo(T t) : t_(t) {} + TEST_CONSTEXPR operator T() const { return t_; } }; -template -TEST_CONSTEXPR_CXX14 bool test() -{ - typedef typename SV::value_type CharT; - typedef typename SV::traits_type Traits; - - // Test the behavior of the operator, both with and without implicit conversions. - SV v[] = { - SV(MAKE_CSTRING(CharT, "")), - SV(MAKE_CSTRING(CharT, "abc")), - SV(MAKE_CSTRING(CharT, "abcdef")), - SV(MAKE_CSTRING(CharT, "acb")), - }; - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < 4; ++j) { - // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads - bool expected = (i != j); - assert((v[i] != v[j]) == expected); - assert((v[i].data() != v[j]) == expected); - assert((v[i] != v[j].data()) == expected); - assert((ConvertibleTo(v[i]) != v[j]) == expected); - assert((v[i] != ConvertibleTo(v[j])) == expected); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(v[i]) != v[j]) == expected); - assert((v[i] != std::basic_string(v[j])) == expected); - } - } - } - - // Test its behavior with embedded null bytes. - SV abc = SV(MAKE_CSTRING(CharT, "abc")); - SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); - SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); - assert((abc != abc0def) == true); - assert((abc != abcdef) == true); - assert((abc0def != abc) == true); - assert((abc0def != abcdef) == true); - assert((abcdef != abc) == true); - assert((abcdef != abc0def) == true); - - assert((abc.data() != abc0def) == true); - assert((abc0def != abc.data()) == true); - - if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { - assert((std::basic_string(abc) != abc0def) == true); - assert((abc0def != std::basic_string(abc)) == true); +template +TEST_CONSTEXPR_CXX14 bool test() { + typedef typename SV::value_type CharT; + typedef typename SV::traits_type Traits; + + // Test the behavior of the operator, both with and without implicit conversions. + SV v[] = { + SV(MAKE_CSTRING(CharT, "")), + SV(MAKE_CSTRING(CharT, "abc")), + SV(MAKE_CSTRING(CharT, "abcdef")), + SV(MAKE_CSTRING(CharT, "acb")), + }; + for (int i = 0; i < 4; ++i) { + for (int j = 0; j < 4; ++j) { + // See http://eel.is/c++draft/string.view#tab:string.view.comparison.overloads + bool expected = (i != j); + assert((v[i] != v[j]) == expected); + assert((v[i].data() != v[j]) == expected); + assert((v[i] != v[j].data()) == expected); + assert((ConvertibleTo(v[i]) != v[j]) == expected); + assert((v[i] != ConvertibleTo(v[j])) == expected); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(v[i]) != v[j]) == expected); + assert((v[i] != std::basic_string(v[j])) == expected); + } } - - return true; + } + + // Test its behavior with embedded null bytes. + SV abc = SV(MAKE_CSTRING(CharT, "abc")); + SV abc0def = SV(MAKE_CSTRING(CharT, "abc\0def"), 7); + SV abcdef = SV(MAKE_CSTRING(CharT, "abcdef")); + assert((abc != abc0def) == true); + assert((abc != abcdef) == true); + assert((abc0def != abc) == true); + assert((abc0def != abcdef) == true); + assert((abcdef != abc) == true); + assert((abcdef != abc0def) == true); + + assert((abc.data() != abc0def) == true); + assert((abc0def != abc.data()) == true); + + if (!TEST_IS_CONSTANT_EVALUATED || TEST_STD_VER >= 20) { + assert((std::basic_string(abc) != abc0def) == true); + assert((abc0def != std::basic_string(abc)) == true); + } + + return true; } -int main(int, char**) -{ - test(); +int main(int, char**) { + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(); + test(); #endif #if TEST_STD_VER >= 11 - test(); - test(); + test(); + test(); #endif #if TEST_STD_VER > 14 - static_assert(test(), ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert(test(), ""); -#endif - static_assert(test(), ""); - static_assert(test(), ""); + static_assert(test(), ""); +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + static_assert(test(), ""); +# endif + static_assert(test(), ""); + static_assert(test(), ""); #endif #if TEST_STD_VER > 11 - test>>(); - static_assert(test>>(), ""); + test>>(); + static_assert(test>>(), ""); #endif #if TEST_STD_VER > 17 - test(); - static_assert(test()); + test(); + static_assert(test()); #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.cons/assign.pass.cpp @@ -17,43 +17,42 @@ #include "test_macros.h" -template +template #if TEST_STD_VER > 11 constexpr #endif -bool test (T sv0) - { - T sv1; - sv1 = sv0; -// We can't just say "sv0 == sv1" here because string_view::compare -// isn't constexpr until C++17, and we want to support back to C++14 - return sv0.size() == sv1.size() && sv0.data() == sv1.data(); - } + bool + test(T sv0) { + T sv1; + sv1 = sv0; + // We can't just say "sv0 == sv1" here because string_view::compare + // isn't constexpr until C++17, and we want to support back to C++14 + return sv0.size() == sv1.size() && sv0.data() == sv1.data(); +} int main(int, char**) { - - assert( test ( "1234")); + assert(test("1234")); #ifndef TEST_HAS_NO_CHAR8_T - assert( test (u8"1234")); + assert(test(u8"1234")); #endif #if TEST_STD_VER >= 11 - assert( test ( u"1234")); - assert( test ( U"1234")); + assert(test(u"1234")); + assert(test(U"1234")); #endif #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert( test ( L"1234")); + assert(test(L"1234")); #endif #if TEST_STD_VER > 11 - static_assert( test ({ "abc", 3}), ""); + static_assert(test({"abc", 3}), ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert( test ({u8"abc", 3}), ""); -# endif - static_assert( test ({ u"abc", 3}), ""); - static_assert( test ({ U"abc", 3}), ""); -# ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert( test ({ L"abc", 3}), ""); -# endif + static_assert(test({u8"abc", 3}), ""); +# endif + static_assert(test({u"abc", 3}), ""); + static_assert(test({U"abc", 3}), ""); +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + static_assert(test({L"abc", 3}), ""); +# endif #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.cons/default.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/default.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.cons/default.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.cons/default.pass.cpp @@ -17,34 +17,34 @@ #include "test_macros.h" -template -void test () { +template +void test() { #if TEST_STD_VER > 11 - { + { ASSERT_NOEXCEPT(T()); constexpr T sv1; - static_assert ( sv1.size() == 0, "" ); - static_assert ( sv1.empty(), ""); - } + static_assert(sv1.size() == 0, ""); + static_assert(sv1.empty(), ""); + } #endif - { + { T sv1; - assert ( sv1.size() == 0 ); - assert ( sv1.empty()); - } + assert(sv1.size() == 0); + assert(sv1.empty()); + } } int main(int, char**) { - test (); - test (); + test(); + test(); #ifndef TEST_HAS_NO_CHAR8_T - test (); + test(); #endif - test (); + test(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test (); + test(); #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.cons/from_iterator_sentinel.pass.cpp @@ -19,14 +19,14 @@ #include "make_string.h" #include "test_iterators.h" -template +template constexpr void test_construction(std::basic_string_view val) { auto sv = std::basic_string_view(It(val.data()), Sentinel(It(val.data() + val.size()))); assert(sv.data() == val.data()); assert(sv.size() == val.size()); } -template +template constexpr void test_with_char() { const auto val = MAKE_STRING_VIEW(CharT, "test"); test_construction(val); @@ -50,7 +50,7 @@ } #ifndef TEST_HAS_NO_EXCEPTIONS -template +template struct ThrowingSentinel { friend bool operator==(const CharT*, ThrowingSentinel) noexcept { return true; } friend std::iter_difference_t operator-(const CharT*, ThrowingSentinel) noexcept { return {}; } @@ -70,21 +70,23 @@ void test_throwing() { test_throwing(); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS +# ifndef TEST_HAS_NO_WIDE_CHARACTERS test_throwing(); -#endif +# endif test_throwing(); test_throwing(); test_throwing(); } #endif -static_assert( std::is_constructible_v); -static_assert( std::is_constructible_v); +static_assert(std::is_constructible_v); +static_assert(std::is_constructible_v); static_assert(!std::is_constructible_v); // not a sentinel static_assert(!std::is_constructible_v); // wrong char type -static_assert(!std::is_constructible_v, random_access_iterator>); // not contiguous -static_assert( std::is_constructible_v, contiguous_iterator>); +static_assert(!std::is_constructible_v, + random_access_iterator>); // not contiguous +static_assert(std::is_constructible_v, contiguous_iterator>); int main(int, char**) { test(); diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.cons/from_literal.pass.cpp @@ -20,52 +20,53 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -template -size_t StrLen ( const CharT *s ) { - std::size_t retVal = 0; - while ( *s != 0 ) { ++retVal; ++s; } - return retVal; - } - -template -void test ( const CharT *s ) { - typedef std::basic_string_view SV; -// I'd love to do this, but it would require traits::length() to be noexcept -// LIBCPP_ASSERT_NOEXCEPT(SV(s)); +template +size_t StrLen(const CharT* s) { + std::size_t retVal = 0; + while (*s != 0) { + ++retVal; + ++s; + } + return retVal; +} - SV sv1 ( s ); - assert ( sv1.size() == StrLen( s )); - assert ( sv1.data() == s ); - } +template +void test(const CharT* s) { + typedef std::basic_string_view SV; + // I'd love to do this, but it would require traits::length() to be noexcept + // LIBCPP_ASSERT_NOEXCEPT(SV(s)); + SV sv1(s); + assert(sv1.size() == StrLen(s)); + assert(sv1.data() == s); +} int main(int, char**) { - - test ( "QBCDE" ); - test ( "A" ); - test ( "" ); + test("QBCDE"); + test("A"); + test(""); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"QBCDE" ); - test ( L"A" ); - test ( L"" ); + test(L"QBCDE"); + test(L"A"); + test(L""); #endif #if TEST_STD_VER >= 11 - test ( u"QBCDE" ); - test ( u"A" ); - test ( u"" ); + test(u"QBCDE"); + test(u"A"); + test(u""); - test ( U"QBCDE" ); - test ( U"A" ); - test ( U"" ); + test(U"QBCDE"); + test(U"A"); + test(U""); #endif #if TEST_STD_VER > 11 - { - constexpr std::basic_string_view> sv1 ( "ABCDE" ); - static_assert ( sv1.size() == 5, ""); - } + { + constexpr std::basic_string_view> sv1("ABCDE"); + static_assert(sv1.size() == 5, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_ptr_len.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_ptr_len.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.cons/from_ptr_len.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.cons/from_ptr_len.pass.cpp @@ -19,70 +19,69 @@ #include "test_macros.h" -template -void test ( const CharT *s, std::size_t sz ) { - { +template +void test(const CharT* s, std::size_t sz) { + { typedef std::basic_string_view SV; LIBCPP_ASSERT_NOEXCEPT(SV(s, sz)); - SV sv1 ( s, sz ); - assert ( sv1.size() == sz ); - assert ( sv1.data() == s ); - } + SV sv1(s, sz); + assert(sv1.size() == sz); + assert(sv1.data() == s); + } } int main(int, char**) { - - test ( "QBCDE", 5 ); - test ( "QBCDE", 2 ); - test ( "", 0 ); + test("QBCDE", 5); + test("QBCDE", 2); + test("", 0); #if TEST_STD_VER > 11 - { - constexpr const char *s = "QBCDE"; - constexpr std::basic_string_view sv1 ( s, 2 ); - static_assert ( sv1.size() == 2, "" ); - static_assert ( sv1.data() == s, "" ); - } + { + constexpr const char* s = "QBCDE"; + constexpr std::basic_string_view sv1(s, 2); + static_assert(sv1.size() == 2, ""); + static_assert(sv1.data() == s, ""); + } #endif #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"QBCDE", 5 ); - test ( L"QBCDE", 2 ); - test ( L"", 0 ); -#if TEST_STD_VER > 11 - { - constexpr const wchar_t *s = L"QBCDE"; - constexpr std::basic_string_view sv1 ( s, 2 ); - static_assert ( sv1.size() == 2, "" ); - static_assert ( sv1.data() == s, "" ); - } -#endif + test(L"QBCDE", 5); + test(L"QBCDE", 2); + test(L"", 0); +# if TEST_STD_VER > 11 + { + constexpr const wchar_t* s = L"QBCDE"; + constexpr std::basic_string_view sv1(s, 2); + static_assert(sv1.size() == 2, ""); + static_assert(sv1.data() == s, ""); + } +# endif #endif // TEST_HAS_NO_WIDE_CHARACTERS #if TEST_STD_VER >= 11 - test ( u"QBCDE", 5 ); - test ( u"QBCDE", 2 ); - test ( u"", 0 ); -#if TEST_STD_VER > 11 - { - constexpr const char16_t *s = u"QBCDE"; - constexpr std::basic_string_view sv1 ( s, 2 ); - static_assert ( sv1.size() == 2, "" ); - static_assert ( sv1.data() == s, "" ); - } -#endif + test(u"QBCDE", 5); + test(u"QBCDE", 2); + test(u"", 0); +# if TEST_STD_VER > 11 + { + constexpr const char16_t* s = u"QBCDE"; + constexpr std::basic_string_view sv1(s, 2); + static_assert(sv1.size() == 2, ""); + static_assert(sv1.data() == s, ""); + } +# endif - test ( U"QBCDE", 5 ); - test ( U"QBCDE", 2 ); - test ( U"", 0 ); -#if TEST_STD_VER > 11 - { - constexpr const char32_t *s = U"QBCDE"; - constexpr std::basic_string_view sv1 ( s, 2 ); - static_assert ( sv1.size() == 2, "" ); - static_assert ( sv1.data() == s, "" ); - } -#endif + test(U"QBCDE", 5); + test(U"QBCDE", 2); + test(U"", 0); +# if TEST_STD_VER > 11 + { + constexpr const char32_t* s = U"QBCDE"; + constexpr std::basic_string_view sv1(s, 2); + static_assert(sv1.size() == 2, ""); + static_assert(sv1.data() == s, ""); + } +# endif #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_range.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_range.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.cons/from_range.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.cons/from_range.pass.cpp @@ -24,11 +24,11 @@ #include "test_iterators.h" #include "test_range.h" -template +template constexpr void test() { auto data = MAKE_STRING_VIEW(CharT, "test"); std::array arr; - for(int i = 0; i < 4; ++i) { + for (int i = 0; i < 4; ++i) { arr[i] = data[i]; } auto sv = std::basic_string_view(arr); @@ -128,7 +128,10 @@ static_assert(std::ranges::sized_range); static_assert(!std::is_constructible_v); -using ContiguousButNotSizedRange = std::ranges::subrange, sentinel_wrapper>, std::ranges::subrange_kind::unsized>; +using ContiguousButNotSizedRange = + std::ranges::subrange, + sentinel_wrapper>, + std::ranges::subrange_kind::unsized>; static_assert(std::ranges::contiguous_range); static_assert(!std::ranges::sized_range); static_assert(!std::is_constructible_v); @@ -141,7 +144,7 @@ operator std::string_view() const { return {}; } }; -static_assert(std::is_constructible_v); // lvalue +static_assert(std::is_constructible_v); // lvalue static_assert(std::is_constructible_v); // const lvalue static_assert(std::is_constructible_v); // rvalue @@ -150,11 +153,14 @@ struct ThrowingData { char* begin() const { return nullptr; } char* end() const { return nullptr; } - char* data() const { throw 42; return nullptr; } + char* data() const { + throw 42; + return nullptr; + } }; try { ThrowingData x; - (void) std::string_view(x); + (void)std::string_view(x); assert(false); } catch (int i) { assert(i == 42); @@ -163,11 +169,14 @@ struct ThrowingSize { char* begin() const { return nullptr; } char* end() const { return nullptr; } - std::size_t size() const { throw 42; return 0; } + std::size_t size() const { + throw 42; + return 0; + } }; try { ThrowingSize x; - (void) std::string_view(x); + (void)std::string_view(x); assert(false); } catch (int i) { assert(i == 42); @@ -186,4 +195,3 @@ return 0; } - diff --git a/libcxx/test/std/strings/string.view/string.view.cons/from_string.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/from_string.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.cons/from_string.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.cons/from_string.pass.cpp @@ -21,48 +21,46 @@ struct dummy_char_traits : public std::char_traits {}; -template -void test ( const std::basic_string &str ) { - typedef std::basic_string_view SV; - ASSERT_NOEXCEPT(SV(str)); - - SV sv1 ( str ); - assert ( sv1.size() == str.size()); - assert ( sv1.data() == str.data()); +template +void test(const std::basic_string& str) { + typedef std::basic_string_view SV; + ASSERT_NOEXCEPT(SV(str)); + + SV sv1(str); + assert(sv1.size() == str.size()); + assert(sv1.data() == str.data()); } int main(int, char**) { - - test ( std::string("QBCDE") ); - test ( std::string("") ); - test ( std::string() ); + test(std::string("QBCDE")); + test(std::string("")); + test(std::string()); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( std::wstring(L"QBCDE") ); - test ( std::wstring(L"") ); - test ( std::wstring() ); + test(std::wstring(L"QBCDE")); + test(std::wstring(L"")); + test(std::wstring()); #endif #ifndef TEST_HAS_NO_CHAR8_T - test ( std::u8string{u8"QBCDE"} ); - test ( std::u8string{u8""} ); - test ( std::u8string{} ); + test(std::u8string{u8"QBCDE"}); + test(std::u8string{u8""}); + test(std::u8string{}); #endif #if TEST_STD_VER >= 11 - test ( std::u16string{u"QBCDE"} ); - test ( std::u16string{u""} ); - test ( std::u16string{} ); + test(std::u16string{u"QBCDE"}); + test(std::u16string{u""}); + test(std::u16string{}); - test ( std::u32string{U"QBCDE"} ); - test ( std::u32string{U""} ); - test ( std::u32string{} ); + test(std::u32string{U"QBCDE"}); + test(std::u32string{U""}); + test(std::u32string{}); #endif - test ( std::basic_string("QBCDE") ); - test ( std::basic_string("") ); - test ( std::basic_string() ); - + test(std::basic_string("QBCDE")); + test(std::basic_string("")); + test(std::basic_string()); return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp b/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.cons/implicit_deduction_guides.pass.cpp @@ -25,12 +25,11 @@ // (2) basic_string_view(const basic_string_view&) // (3) basic_string_view(const CharT*, size_type) // (4) basic_string_view(const CharT*) -int main(int, char**) -{ - { // Testing (1) - // Nothing to do. Cannot deduce without any arguments. - } - { // Testing (2) +int main(int, char**) { + { + // Testing (1) + // Nothing to do. Cannot deduce without any arguments. + } { // Testing (2) const std::string_view sin("abc"); std::basic_string_view s(sin); ASSERT_SAME_TYPE(decltype(s), std::string_view); diff --git a/libcxx/test/std/strings/string.view/string.view.deduct/iterator_sentinel.pass.cpp b/libcxx/test/std/strings/string.view/string.view.deduct/iterator_sentinel.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.deduct/iterator_sentinel.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.deduct/iterator_sentinel.pass.cpp @@ -19,7 +19,7 @@ #include "test_macros.h" #include "test_iterators.h" -template +template constexpr void test_ctad(std::basic_string_view val) { auto sv = std::basic_string_view(It(val.data()), Sentinel(It(val.data() + val.size()))); ASSERT_SAME_TYPE(decltype(sv), std::basic_string_view); @@ -27,7 +27,7 @@ assert(sv.size() == val.size()); } -template +template constexpr void test_with_char() { const auto val = MAKE_STRING_VIEW(CharT, "test"); test_ctad(val); diff --git a/libcxx/test/std/strings/string.view/string.view.deduct/range.pass.cpp b/libcxx/test/std/strings/string.view/string.view.deduct/range.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.deduct/range.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.deduct/range.pass.cpp @@ -19,10 +19,10 @@ #include "test_iterators.h" #include "test_macros.h" -template +template void test() { auto val = MAKE_STRING(CharT, "test"); - auto sv = std::basic_string_view(val); + auto sv = std::basic_string_view(val); ASSERT_SAME_TYPE(decltype(sv), std::basic_string_view); assert(sv.size() == val.size()); assert(sv.data() == val.data()); @@ -39,7 +39,7 @@ test(); struct Widget { - const char16_t *data_ = u"foo"; + const char16_t* data_ = u"foo"; contiguous_iterator begin() const { return contiguous_iterator(data_); } contiguous_iterator end() const { return contiguous_iterator(data_ + 3); } }; @@ -52,4 +52,3 @@ return 0; } - diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_char_size.pass.cpp @@ -19,28 +19,22 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(c, pos)); - assert(s.find(c, pos) == x); - if (x != S::npos) - assert(pos <= x && x + 1 <= s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(c, pos)); + assert(s.find(c, pos) == x); + if (x != S::npos) + assert(pos <= x && x + 1 <= s.size()); } template -void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - assert(s.find(c) == x); - if (x != S::npos) - assert(0 <= x && x + 1 <= s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type x) { + assert(s.find(c) == x); + if (x != S::npos) + assert(0 <= x && x + 1 <= s.size()); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test(S(""), 'c', 0, S::npos); test(S(""), 'c', 1, S::npos); @@ -67,22 +61,22 @@ test(S("abcde"), 'c', 2); test(S("abcdeabcde"), 'c', 2); test(S("abcdeabcdeabcdeabcde"), 'c', 2); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find( 'c', 0 ) == SV::npos, "" ); - static_assert (sv1.find( 'c', 1 ) == SV::npos, "" ); - static_assert (sv2.find( 'c', 0 ) == 2, "" ); - static_assert (sv2.find( 'c', 1 ) == 2, "" ); - static_assert (sv2.find( 'c', 2 ) == 2, "" ); - static_assert (sv2.find( 'c', 3 ) == SV::npos, "" ); - static_assert (sv2.find( 'c', 4 ) == SV::npos, "" ); - } + static_assert(sv1.find('c', 0) == SV::npos, ""); + static_assert(sv1.find('c', 1) == SV::npos, ""); + static_assert(sv2.find('c', 0) == 2, ""); + static_assert(sv2.find('c', 1) == 2, ""); + static_assert(sv2.find('c', 2) == 2, ""); + static_assert(sv2.find('c', 3) == SV::npos, ""); + static_assert(sv2.find('c', 4) == SV::npos, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_char_size.pass.cpp @@ -19,29 +19,23 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(c, pos)); - assert(s.find_first_not_of(c, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(c, pos)); + assert(s.find_first_not_of(c, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(c)); - assert(s.find_first_not_of(c) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(c)); + assert(s.find_first_not_of(c) == x); + if (x != S::npos) + assert(x < s.size()); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test(S(""), 'q', 0, S::npos); test(S(""), 'q', 1, S::npos); @@ -70,20 +64,20 @@ test(S("csope"), 'q', 0); test(S("gfsmthlkon"), 'q', 0); test(S("laenfsbridchgotmkqpj"), 'q', 0); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_first_not_of( 'q', 0 ) == SV::npos, "" ); - static_assert (sv1.find_first_not_of( 'q', 1 ) == SV::npos, "" ); - static_assert (sv2.find_first_not_of( 'q', 0 ) == 0, "" ); - static_assert (sv2.find_first_not_of( 'q', 1 ) == 1, "" ); - static_assert (sv2.find_first_not_of( 'q', 5 ) == SV::npos, "" ); - } + static_assert(sv1.find_first_not_of('q', 0) == SV::npos, ""); + static_assert(sv1.find_first_not_of('q', 1) == SV::npos, ""); + static_assert(sv2.find_first_not_of('q', 0) == 0, ""); + static_assert(sv2.find_first_not_of('q', 1) == 1, ""); + static_assert(sv2.find_first_not_of('q', 5) == SV::npos, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size.pass.cpp @@ -19,151 +19,143 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos)); - assert(s.find_first_not_of(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +void test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos)); + assert(s.find_first_not_of(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - assert(s.find_first_not_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + assert(s.find_first_not_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -void test0() -{ - test(S(""), "", 0, S::npos); - test(S(""), "laenf", 0, S::npos); - test(S(""), "pqlnkmbdjo", 0, S::npos); - test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "bjaht", 1, S::npos); - test(S(""), "hjlcmgpket", 1, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); - test(S("fodgq"), "", 0, 0); - test(S("qanej"), "dfkap", 0, 0); - test(S("clbao"), "ihqrfebgad", 0, 0); - test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, S::npos); - test(S("srdfq"), "", 1, 1); - test(S("oemth"), "ikcrq", 1, 1); - test(S("cdaih"), "dmajblfhsg", 1, 3); - test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, S::npos); - test(S("cshmd"), "", 2, 2); - test(S("lhcdo"), "oebqi", 2, 2); - test(S("qnsoh"), "kojhpmbsfe", 2, S::npos); - test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, S::npos); - test(S("fmtsp"), "", 4, 4); - test(S("khbpm"), "aobjd", 4, 4); - test(S("pbsji"), "pcbahntsje", 4, 4); - test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, S::npos); - test(S("eqmpa"), "", 5, S::npos); - test(S("omigs"), "kocgb", 5, S::npos); - test(S("onmje"), "fbslrjiqkm", 5, S::npos); - test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); - test(S("schfa"), "", 6, S::npos); - test(S("igdsc"), "qngpd", 6, S::npos); - test(S("brqgo"), "rodhqklgmb", 6, S::npos); - test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); - test(S("hcjitbfapl"), "", 0, 0); - test(S("daiprenocl"), "ashjd", 0, 2); - test(S("litpcfdghe"), "mgojkldsqh", 0, 1); - test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, S::npos); - test(S("qpghtfbaji"), "", 1, 1); - test(S("gfshlcmdjr"), "nadkh", 1, 1); - test(S("nkodajteqp"), "ofdrqmkebl", 1, 4); - test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, S::npos); - test(S("crnklpmegd"), "", 5, 5); - test(S("jsbtafedoc"), "prqgn", 5, 5); - test(S("qnmodrtkeb"), "pejafmnokr", 5, 6); - test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, S::npos); - test(S("lmofqdhpki"), "", 9, 9); - test(S("hnefkqimca"), "rtjpa", 9, S::npos); - test(S("drtasbgmfp"), "ktsrmnqagd", 9, 9); - test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, S::npos); - test(S("elgofjmbrq"), "", 10, S::npos); - test(S("mjqdgalkpc"), "dplqa", 10, S::npos); - test(S("kthqnfcerm"), "dkacjoptns", 10, S::npos); - test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); - test(S("eqsgalomhb"), "", 11, S::npos); - test(S("akiteljmoh"), "lofbc", 11, S::npos); - test(S("hlbdfreqjo"), "astoegbfpn", 11, S::npos); - test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), "", 0, 0); - test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 0); - test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 1); - test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), "", 1, 1); - test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 3); - test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), "", 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 11); - test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 13); - test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, S::npos); - test(S("niptglfbosehkamrdqcj"), "", 19, 19); - test(S("copqdhstbingamjfkler"), "djkqc", 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, S::npos); - test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); - test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); +void test0() { + test(S(""), "", 0, S::npos); + test(S(""), "laenf", 0, S::npos); + test(S(""), "pqlnkmbdjo", 0, S::npos); + test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "bjaht", 1, S::npos); + test(S(""), "hjlcmgpket", 1, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); + test(S("fodgq"), "", 0, 0); + test(S("qanej"), "dfkap", 0, 0); + test(S("clbao"), "ihqrfebgad", 0, 0); + test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, S::npos); + test(S("srdfq"), "", 1, 1); + test(S("oemth"), "ikcrq", 1, 1); + test(S("cdaih"), "dmajblfhsg", 1, 3); + test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, S::npos); + test(S("cshmd"), "", 2, 2); + test(S("lhcdo"), "oebqi", 2, 2); + test(S("qnsoh"), "kojhpmbsfe", 2, S::npos); + test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, S::npos); + test(S("fmtsp"), "", 4, 4); + test(S("khbpm"), "aobjd", 4, 4); + test(S("pbsji"), "pcbahntsje", 4, 4); + test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, S::npos); + test(S("eqmpa"), "", 5, S::npos); + test(S("omigs"), "kocgb", 5, S::npos); + test(S("onmje"), "fbslrjiqkm", 5, S::npos); + test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); + test(S("schfa"), "", 6, S::npos); + test(S("igdsc"), "qngpd", 6, S::npos); + test(S("brqgo"), "rodhqklgmb", 6, S::npos); + test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); + test(S("hcjitbfapl"), "", 0, 0); + test(S("daiprenocl"), "ashjd", 0, 2); + test(S("litpcfdghe"), "mgojkldsqh", 0, 1); + test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, S::npos); + test(S("qpghtfbaji"), "", 1, 1); + test(S("gfshlcmdjr"), "nadkh", 1, 1); + test(S("nkodajteqp"), "ofdrqmkebl", 1, 4); + test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, S::npos); + test(S("crnklpmegd"), "", 5, 5); + test(S("jsbtafedoc"), "prqgn", 5, 5); + test(S("qnmodrtkeb"), "pejafmnokr", 5, 6); + test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, S::npos); + test(S("lmofqdhpki"), "", 9, 9); + test(S("hnefkqimca"), "rtjpa", 9, S::npos); + test(S("drtasbgmfp"), "ktsrmnqagd", 9, 9); + test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, S::npos); + test(S("elgofjmbrq"), "", 10, S::npos); + test(S("mjqdgalkpc"), "dplqa", 10, S::npos); + test(S("kthqnfcerm"), "dkacjoptns", 10, S::npos); + test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); + test(S("eqsgalomhb"), "", 11, S::npos); + test(S("akiteljmoh"), "lofbc", 11, S::npos); + test(S("hlbdfreqjo"), "astoegbfpn", 11, S::npos); + test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), "", 0, 0); + test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 0); + test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 1); + test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), "", 1, 1); + test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 3); + test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), "", 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 11); + test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 13); + test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, S::npos); + test(S("niptglfbosehkamrdqcj"), "", 19, 19); + test(S("copqdhstbingamjfkler"), "djkqc", 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, S::npos); + test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); + test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); } template -void test1() -{ - test(S(""), "", S::npos); - test(S(""), "laenf", S::npos); - test(S(""), "pqlnkmbdjo", S::npos); - test(S(""), "qkamfogpnljdcshbreti", S::npos); - test(S("nhmko"), "", 0); - test(S("lahfb"), "irkhs", 0); - test(S("gmfhd"), "kantesmpgj", 2); - test(S("odaft"), "oknlrstdpiqmjbaghcfe", S::npos); - test(S("eolhfgpjqk"), "", 0); - test(S("nbatdlmekr"), "bnrpe", 2); - test(S("jdmciepkaq"), "jtdaefblso", 2); - test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", S::npos); - test(S("gprdcokbnjhlsfmtieqa"), "", 0); - test(S("qjghlnftcaismkropdeb"), "bjaht", 0); - test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 1); - test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos); +void test1() { + test(S(""), "", S::npos); + test(S(""), "laenf", S::npos); + test(S(""), "pqlnkmbdjo", S::npos); + test(S(""), "qkamfogpnljdcshbreti", S::npos); + test(S("nhmko"), "", 0); + test(S("lahfb"), "irkhs", 0); + test(S("gmfhd"), "kantesmpgj", 2); + test(S("odaft"), "oknlrstdpiqmjbaghcfe", S::npos); + test(S("eolhfgpjqk"), "", 0); + test(S("nbatdlmekr"), "bnrpe", 2); + test(S("jdmciepkaq"), "jtdaefblso", 2); + test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", S::npos); + test(S("gprdcokbnjhlsfmtieqa"), "", 0); + test(S("qjghlnftcaismkropdeb"), "bjaht", 0); + test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 1); + test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_first_not_of( "", 0) == SV::npos, "" ); - static_assert (sv1.find_first_not_of( "irkhs", 0) == SV::npos, "" ); - static_assert (sv2.find_first_not_of( "", 0) == 0, "" ); - static_assert (sv2.find_first_not_of( "gfsrt", 0) == 0, "" ); - static_assert (sv2.find_first_not_of( "lecar", 0) == 1, "" ); - } + static_assert(sv1.find_first_not_of("", 0) == SV::npos, ""); + static_assert(sv1.find_first_not_of("irkhs", 0) == SV::npos, ""); + static_assert(sv2.find_first_not_of("", 0) == 0, ""); + static_assert(sv2.find_first_not_of("gfsrt", 0) == 0, ""); + static_assert(sv2.find_first_not_of("lecar", 0) == 1, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_pointer_size_size.pass.cpp @@ -19,378 +19,374 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos, n)); - assert(s.find_first_not_of(str, pos, n) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +void test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos, n)); + assert(s.find_first_not_of(str, pos, n) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -void test0() -{ - test(S(""), "", 0, 0, S::npos); - test(S(""), "irkhs", 0, 0, S::npos); - test(S(""), "kante", 0, 1, S::npos); - test(S(""), "oknlr", 0, 2, S::npos); - test(S(""), "pcdro", 0, 4, S::npos); - test(S(""), "bnrpe", 0, 5, S::npos); - test(S(""), "jtdaefblso", 0, 0, S::npos); - test(S(""), "oselktgbca", 0, 1, S::npos); - test(S(""), "eqgaplhckj", 0, 5, S::npos); - test(S(""), "bjahtcmnlp", 0, 9, S::npos); - test(S(""), "hjlcmgpket", 0, 10, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); - test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); - test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); - test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); - test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "lbtqd", 1, 0, S::npos); - test(S(""), "tboim", 1, 1, S::npos); - test(S(""), "slcer", 1, 2, S::npos); - test(S(""), "cbjfs", 1, 4, S::npos); - test(S(""), "aqibs", 1, 5, S::npos); - test(S(""), "gtfblmqinc", 1, 0, S::npos); - test(S(""), "mkqpbtdalg", 1, 1, S::npos); - test(S(""), "kphatlimcd", 1, 5, S::npos); - test(S(""), "pblasqogic", 1, 9, S::npos); - test(S(""), "arosdhcfme", 1, 10, S::npos); - test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); - test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); - test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); - test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); - test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); - test(S("eaint"), "", 0, 0, 0); - test(S("binja"), "gfsrt", 0, 0, 0); - test(S("latkm"), "pfsoc", 0, 1, 0); - test(S("lecfr"), "tpflm", 0, 2, 0); - test(S("eqkst"), "sgkec", 0, 4, 1); - test(S("cdafr"), "romds", 0, 5, 0); - test(S("prbhe"), "qhjistlgmr", 0, 0, 0); - test(S("lbisk"), "pedfirsglo", 0, 1, 0); - test(S("hrlpd"), "aqcoslgrmk", 0, 5, 0); - test(S("ehmja"), "dabckmepqj", 0, 9, 1); - test(S("mhqgd"), "pqscrjthli", 0, 10, 0); - test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0); - test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0); - test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0); - test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos); - test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos); - test(S("clrgb"), "", 1, 0, 1); - test(S("tjmek"), "osmia", 1, 0, 1); - test(S("bgstp"), "ckonl", 1, 1, 1); - test(S("hstrk"), "ilcaj", 1, 2, 1); - test(S("kmspj"), "lasiq", 1, 4, 1); - test(S("tjboh"), "kfqmr", 1, 5, 1); - test(S("ilbcj"), "klnitfaobg", 1, 0, 1); - test(S("jkngf"), "gjhmdlqikp", 1, 1, 1); - test(S("gfcql"), "skbgtahqej", 1, 5, 1); - test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1); - test(S("bthpg"), "bjgfmnlkio", 1, 10, 1); - test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1); - test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1); - test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 3); - test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos); - test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos); - test(S("ndrhl"), "", 2, 0, 2); - test(S("mrecp"), "otkgb", 2, 0, 2); - test(S("qlasf"), "cqsjl", 2, 1, 2); - test(S("smaqd"), "dpifl", 2, 2, 2); - test(S("hjeni"), "oapht", 2, 4, 2); - test(S("ocmfj"), "cifts", 2, 5, 2); - test(S("hmftq"), "nmsckbgalo", 2, 0, 2); - test(S("fklad"), "tpksqhamle", 2, 1, 2); - test(S("dirnm"), "tpdrchmkji", 2, 5, 3); - test(S("hrgdc"), "ijagfkblst", 2, 9, 3); - test(S("ifakg"), "kpocsignjb", 2, 10, 2); - test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2); - test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2); - test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2); - test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos); - test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos); - test(S("cjgao"), "", 4, 0, 4); - test(S("kjplq"), "mabns", 4, 0, 4); - test(S("herni"), "bdnrp", 4, 1, 4); - test(S("tadrb"), "scidp", 4, 2, 4); - test(S("pkfeo"), "agbjl", 4, 4, 4); - test(S("hoser"), "jfmpr", 4, 5, S::npos); - test(S("kgrsp"), "rbpefghsmj", 4, 0, 4); - test(S("pgejb"), "apsfntdoqc", 4, 1, 4); - test(S("thlnq"), "ndkjeisgcl", 4, 5, 4); - test(S("nbmit"), "rnfpqatdeo", 4, 9, S::npos); - test(S("jgmib"), "bntjlqrfik", 4, 10, S::npos); - test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4); - test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4); - test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, S::npos); - test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, S::npos); - test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos); - test(S("klopi"), "", 5, 0, S::npos); - test(S("dajhn"), "psthd", 5, 0, S::npos); - test(S("jbgno"), "rpmjd", 5, 1, S::npos); - test(S("hkjae"), "dfsmk", 5, 2, S::npos); +void test0() { + test(S(""), "", 0, 0, S::npos); + test(S(""), "irkhs", 0, 0, S::npos); + test(S(""), "kante", 0, 1, S::npos); + test(S(""), "oknlr", 0, 2, S::npos); + test(S(""), "pcdro", 0, 4, S::npos); + test(S(""), "bnrpe", 0, 5, S::npos); + test(S(""), "jtdaefblso", 0, 0, S::npos); + test(S(""), "oselktgbca", 0, 1, S::npos); + test(S(""), "eqgaplhckj", 0, 5, S::npos); + test(S(""), "bjahtcmnlp", 0, 9, S::npos); + test(S(""), "hjlcmgpket", 0, 10, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); + test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); + test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); + test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); + test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "lbtqd", 1, 0, S::npos); + test(S(""), "tboim", 1, 1, S::npos); + test(S(""), "slcer", 1, 2, S::npos); + test(S(""), "cbjfs", 1, 4, S::npos); + test(S(""), "aqibs", 1, 5, S::npos); + test(S(""), "gtfblmqinc", 1, 0, S::npos); + test(S(""), "mkqpbtdalg", 1, 1, S::npos); + test(S(""), "kphatlimcd", 1, 5, S::npos); + test(S(""), "pblasqogic", 1, 9, S::npos); + test(S(""), "arosdhcfme", 1, 10, S::npos); + test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); + test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); + test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); + test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); + test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); + test(S("eaint"), "", 0, 0, 0); + test(S("binja"), "gfsrt", 0, 0, 0); + test(S("latkm"), "pfsoc", 0, 1, 0); + test(S("lecfr"), "tpflm", 0, 2, 0); + test(S("eqkst"), "sgkec", 0, 4, 1); + test(S("cdafr"), "romds", 0, 5, 0); + test(S("prbhe"), "qhjistlgmr", 0, 0, 0); + test(S("lbisk"), "pedfirsglo", 0, 1, 0); + test(S("hrlpd"), "aqcoslgrmk", 0, 5, 0); + test(S("ehmja"), "dabckmepqj", 0, 9, 1); + test(S("mhqgd"), "pqscrjthli", 0, 10, 0); + test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0); + test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0); + test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0); + test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos); + test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos); + test(S("clrgb"), "", 1, 0, 1); + test(S("tjmek"), "osmia", 1, 0, 1); + test(S("bgstp"), "ckonl", 1, 1, 1); + test(S("hstrk"), "ilcaj", 1, 2, 1); + test(S("kmspj"), "lasiq", 1, 4, 1); + test(S("tjboh"), "kfqmr", 1, 5, 1); + test(S("ilbcj"), "klnitfaobg", 1, 0, 1); + test(S("jkngf"), "gjhmdlqikp", 1, 1, 1); + test(S("gfcql"), "skbgtahqej", 1, 5, 1); + test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1); + test(S("bthpg"), "bjgfmnlkio", 1, 10, 1); + test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1); + test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1); + test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 3); + test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos); + test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos); + test(S("ndrhl"), "", 2, 0, 2); + test(S("mrecp"), "otkgb", 2, 0, 2); + test(S("qlasf"), "cqsjl", 2, 1, 2); + test(S("smaqd"), "dpifl", 2, 2, 2); + test(S("hjeni"), "oapht", 2, 4, 2); + test(S("ocmfj"), "cifts", 2, 5, 2); + test(S("hmftq"), "nmsckbgalo", 2, 0, 2); + test(S("fklad"), "tpksqhamle", 2, 1, 2); + test(S("dirnm"), "tpdrchmkji", 2, 5, 3); + test(S("hrgdc"), "ijagfkblst", 2, 9, 3); + test(S("ifakg"), "kpocsignjb", 2, 10, 2); + test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2); + test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2); + test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2); + test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos); + test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos); + test(S("cjgao"), "", 4, 0, 4); + test(S("kjplq"), "mabns", 4, 0, 4); + test(S("herni"), "bdnrp", 4, 1, 4); + test(S("tadrb"), "scidp", 4, 2, 4); + test(S("pkfeo"), "agbjl", 4, 4, 4); + test(S("hoser"), "jfmpr", 4, 5, S::npos); + test(S("kgrsp"), "rbpefghsmj", 4, 0, 4); + test(S("pgejb"), "apsfntdoqc", 4, 1, 4); + test(S("thlnq"), "ndkjeisgcl", 4, 5, 4); + test(S("nbmit"), "rnfpqatdeo", 4, 9, S::npos); + test(S("jgmib"), "bntjlqrfik", 4, 10, S::npos); + test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4); + test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4); + test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, S::npos); + test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, S::npos); + test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos); + test(S("klopi"), "", 5, 0, S::npos); + test(S("dajhn"), "psthd", 5, 0, S::npos); + test(S("jbgno"), "rpmjd", 5, 1, S::npos); + test(S("hkjae"), "dfsmk", 5, 2, S::npos); } template -void test1() -{ - test(S("gbhqo"), "skqne", 5, 4, S::npos); - test(S("ktdor"), "kipnf", 5, 5, S::npos); - test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); - test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); - test(S("armql"), "pcdgltbrfj", 5, 5, S::npos); - test(S("cdhjo"), "aekfctpirg", 5, 9, S::npos); - test(S("jcons"), "ledihrsgpf", 5, 10, S::npos); - test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); - test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); - test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos); - test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos); - test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); - test(S("gajqn"), "", 6, 0, S::npos); - test(S("stedk"), "hrnat", 6, 0, S::npos); - test(S("tjkaf"), "gsqdt", 6, 1, S::npos); - test(S("dthpe"), "bspkd", 6, 2, S::npos); - test(S("klhde"), "ohcmb", 6, 4, S::npos); - test(S("bhlki"), "heatr", 6, 5, S::npos); - test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); - test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); - test(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos); - test(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos); - test(S("jblqp"), "njolbmspac", 6, 10, S::npos); - test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); - test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); - test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos); - test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); - test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); - test(S("jnkrfhotgl"), "", 0, 0, 0); - test(S("dltjfngbko"), "rqegt", 0, 0, 0); - test(S("bmjlpkiqde"), "dashm", 0, 1, 0); - test(S("skrflobnqm"), "jqirk", 0, 2, 0); - test(S("jkpldtshrm"), "rckeg", 0, 4, 0); - test(S("ghasdbnjqo"), "jscie", 0, 5, 0); - test(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0); - test(S("ikthdgcamf"), "gdicosleja", 0, 1, 0); - test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 2); - test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 4); - test(S("itphbqsker"), "dtablcrseo", 0, 10, 0); - test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0); - test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0); - test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0); - test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 1); - test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos); - test(S("shbcqnmoar"), "", 1, 0, 1); - test(S("bdoshlmfin"), "ontrs", 1, 0, 1); - test(S("khfrebnsgq"), "pfkna", 1, 1, 1); - test(S("getcrsaoji"), "ekosa", 1, 2, 2); - test(S("fjiknedcpq"), "anqhk", 1, 4, 1); - test(S("tkejgnafrm"), "jekca", 1, 5, 4); - test(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1); - test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1); - test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 3); - test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1); - test(S("cigfqkated"), "sqcflrgtim", 1, 10, 5); - test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1); - test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1); - test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 5); - test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 5); - test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos); - test(S("ectnhskflp"), "", 5, 0, 5); - test(S("fgtianblpq"), "pijag", 5, 0, 5); - test(S("mfeqklirnh"), "jrckd", 5, 1, 5); - test(S("astedncjhk"), "qcloh", 5, 2, 5); - test(S("fhlqgcajbr"), "thlmp", 5, 4, 5); - test(S("epfhocmdng"), "qidmo", 5, 5, 5); - test(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5); - test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 6); - test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5); - test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 6); - test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5); - test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5); - test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5); - test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 6); - test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 8); - test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos); - test(S("shoiedtcjb"), "", 9, 0, 9); - test(S("ebcinjgads"), "tqbnh", 9, 0, 9); - test(S("dqmregkcfl"), "akmle", 9, 1, 9); - test(S("ngcrieqajf"), "iqfkm", 9, 2, 9); - test(S("qosmilgnjb"), "tqjsr", 9, 4, 9); - test(S("ikabsjtdfl"), "jplqg", 9, 5, S::npos); - test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9); - test(S("fdnplotmgh"), "morkglpesn", 9, 1, 9); - test(S("fdbicojerm"), "dmicerngat", 9, 5, S::npos); - test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9); - test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9); - test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9); - test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9); - test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9); - test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, S::npos); - test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos); - test(S("ncjpmaekbs"), "", 10, 0, S::npos); - test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); - test(S("pqfhsgilen"), "qnpor", 10, 1, S::npos); - test(S("gqtjsbdckh"), "otdma", 10, 2, S::npos); - test(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos); - test(S("beanrfodgj"), "odpte", 10, 5, S::npos); - test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); - test(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos); +void test1() { + test(S("gbhqo"), "skqne", 5, 4, S::npos); + test(S("ktdor"), "kipnf", 5, 5, S::npos); + test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); + test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); + test(S("armql"), "pcdgltbrfj", 5, 5, S::npos); + test(S("cdhjo"), "aekfctpirg", 5, 9, S::npos); + test(S("jcons"), "ledihrsgpf", 5, 10, S::npos); + test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); + test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); + test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos); + test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos); + test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); + test(S("gajqn"), "", 6, 0, S::npos); + test(S("stedk"), "hrnat", 6, 0, S::npos); + test(S("tjkaf"), "gsqdt", 6, 1, S::npos); + test(S("dthpe"), "bspkd", 6, 2, S::npos); + test(S("klhde"), "ohcmb", 6, 4, S::npos); + test(S("bhlki"), "heatr", 6, 5, S::npos); + test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); + test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); + test(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos); + test(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos); + test(S("jblqp"), "njolbmspac", 6, 10, S::npos); + test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); + test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); + test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos); + test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); + test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); + test(S("jnkrfhotgl"), "", 0, 0, 0); + test(S("dltjfngbko"), "rqegt", 0, 0, 0); + test(S("bmjlpkiqde"), "dashm", 0, 1, 0); + test(S("skrflobnqm"), "jqirk", 0, 2, 0); + test(S("jkpldtshrm"), "rckeg", 0, 4, 0); + test(S("ghasdbnjqo"), "jscie", 0, 5, 0); + test(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0); + test(S("ikthdgcamf"), "gdicosleja", 0, 1, 0); + test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 2); + test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 4); + test(S("itphbqsker"), "dtablcrseo", 0, 10, 0); + test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0); + test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0); + test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0); + test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 1); + test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos); + test(S("shbcqnmoar"), "", 1, 0, 1); + test(S("bdoshlmfin"), "ontrs", 1, 0, 1); + test(S("khfrebnsgq"), "pfkna", 1, 1, 1); + test(S("getcrsaoji"), "ekosa", 1, 2, 2); + test(S("fjiknedcpq"), "anqhk", 1, 4, 1); + test(S("tkejgnafrm"), "jekca", 1, 5, 4); + test(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1); + test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1); + test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 3); + test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1); + test(S("cigfqkated"), "sqcflrgtim", 1, 10, 5); + test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1); + test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1); + test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 5); + test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 5); + test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos); + test(S("ectnhskflp"), "", 5, 0, 5); + test(S("fgtianblpq"), "pijag", 5, 0, 5); + test(S("mfeqklirnh"), "jrckd", 5, 1, 5); + test(S("astedncjhk"), "qcloh", 5, 2, 5); + test(S("fhlqgcajbr"), "thlmp", 5, 4, 5); + test(S("epfhocmdng"), "qidmo", 5, 5, 5); + test(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5); + test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 6); + test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5); + test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 6); + test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5); + test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5); + test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5); + test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 6); + test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 8); + test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos); + test(S("shoiedtcjb"), "", 9, 0, 9); + test(S("ebcinjgads"), "tqbnh", 9, 0, 9); + test(S("dqmregkcfl"), "akmle", 9, 1, 9); + test(S("ngcrieqajf"), "iqfkm", 9, 2, 9); + test(S("qosmilgnjb"), "tqjsr", 9, 4, 9); + test(S("ikabsjtdfl"), "jplqg", 9, 5, S::npos); + test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9); + test(S("fdnplotmgh"), "morkglpesn", 9, 1, 9); + test(S("fdbicojerm"), "dmicerngat", 9, 5, S::npos); + test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9); + test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9); + test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9); + test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9); + test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9); + test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, S::npos); + test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos); + test(S("ncjpmaekbs"), "", 10, 0, S::npos); + test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); + test(S("pqfhsgilen"), "qnpor", 10, 1, S::npos); + test(S("gqtjsbdckh"), "otdma", 10, 2, S::npos); + test(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos); + test(S("beanrfodgj"), "odpte", 10, 5, S::npos); + test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); + test(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos); } template -void test2() -{ - test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos); - test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos); - test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos); - test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); - test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos); - test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos); - test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos); - test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); - test(S("cqjohampgd"), "", 11, 0, S::npos); - test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); - test(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos); - test(S("ngfbojitcl"), "tqedg", 11, 2, S::npos); - test(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos); - test(S("qghptonrea"), "eaqkl", 11, 5, S::npos); - test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); - test(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos); - test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos); - test(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos); - test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos); - test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); - test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); - test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos); - test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); - test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); - test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0); - test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0); - test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0); - test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0); - test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0); - test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0); - test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0); - test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0); - test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0); - test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0); - test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0); - test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0); - test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0); - test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0); - test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 11); - test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos); - test(S("febhmqtjanokscdirpgl"), "", 1, 0, 1); - test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1); - test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1); - test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 2); - test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 2); - test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1); - test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1); - test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1); - test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1); - test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 3); - test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 2); - test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1); - test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1); - test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 2); - test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 13); - test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos); - test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10); - test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10); - test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10); - test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10); - test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 11); - test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10); - test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10); - test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10); - test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10); - test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 11); - test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10); - test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10); - test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10); - test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 11); - test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 11); - test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos); - test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19); - test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19); - test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19); - test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19); - test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19); - test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, S::npos); - test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19); - test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19); - test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19); - test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19); - test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19); - test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19); - test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19); - test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, S::npos); - test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, S::npos); - test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos); - test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); - test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); - test(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos); - test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos); - test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos); - test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos); - test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); - test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos); - test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos); - test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos); - test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos); - test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); +void test2() { + test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos); + test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos); + test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos); + test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); + test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos); + test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos); + test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos); + test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); + test(S("cqjohampgd"), "", 11, 0, S::npos); + test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); + test(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos); + test(S("ngfbojitcl"), "tqedg", 11, 2, S::npos); + test(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos); + test(S("qghptonrea"), "eaqkl", 11, 5, S::npos); + test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); + test(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos); + test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos); + test(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos); + test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos); + test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); + test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); + test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos); + test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); + test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); + test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0); + test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0); + test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0); + test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0); + test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0); + test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0); + test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0); + test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0); + test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0); + test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0); + test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0); + test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0); + test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0); + test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0); + test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 11); + test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos); + test(S("febhmqtjanokscdirpgl"), "", 1, 0, 1); + test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1); + test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1); + test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 2); + test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 2); + test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1); + test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1); + test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1); + test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1); + test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 3); + test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 2); + test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1); + test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1); + test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 2); + test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 13); + test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos); + test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10); + test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10); + test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10); + test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10); + test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 11); + test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10); + test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10); + test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10); + test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10); + test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 11); + test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10); + test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10); + test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10); + test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 11); + test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 11); + test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos); + test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19); + test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19); + test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19); + test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19); + test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19); + test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, S::npos); + test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19); + test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19); + test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19); + test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19); + test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19); + test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19); + test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19); + test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, S::npos); + test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, S::npos); + test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos); + test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); + test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); + test(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos); + test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos); + test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos); + test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos); + test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); + test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos); + test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos); + test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos); + test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos); + test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); } template -void test3() -{ - test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos); - test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos); - test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos); - test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); - test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); - test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); - test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos); - test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos); - test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos); - test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos); - test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); - test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos); - test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos); - test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos); - test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos); - test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); - test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos); - test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos); - test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos); - test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); +void test3() { + test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos); + test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos); + test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos); + test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); + test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); + test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); + test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos); + test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos); + test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos); + test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos); + test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); + test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos); + test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos); + test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos); + test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos); + test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); + test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos); + test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos); + test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos); + test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); test2(); test3(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_first_not_of( "", 0, 0) == SV::npos, "" ); - static_assert (sv1.find_first_not_of( "irkhs", 0, 5) == SV::npos, "" ); - static_assert (sv2.find_first_not_of( "", 0, 0) == 0, "" ); - static_assert (sv2.find_first_not_of( "gfsrt", 0, 5) == 0, "" ); - static_assert (sv2.find_first_not_of( "lecar", 0, 5) == 1, "" ); - } + static_assert(sv1.find_first_not_of("", 0, 0) == SV::npos, ""); + static_assert(sv1.find_first_not_of("irkhs", 0, 5) == SV::npos, ""); + static_assert(sv2.find_first_not_of("", 0, 0) == 0, ""); + static_assert(sv2.find_first_not_of("gfsrt", 0, 5) == 0, ""); + static_assert(sv2.find_first_not_of("lecar", 0, 5) == 1, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_not_of_string_view_size.pass.cpp @@ -18,137 +18,130 @@ #include "test_macros.h" template -void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos)); - assert(s.find_first_not_of(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_not_of(str, pos)); + assert(s.find_first_not_of(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -void -test(const S& s, const S& str, typename S::size_type x) -{ - assert(s.find_first_not_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, const S& str, typename S::size_type x) { + assert(s.find_first_not_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -void test0() -{ - test(S(""), S(""), 0, S::npos); - test(S(""), S("laenf"), 0, S::npos); - test(S(""), S("pqlnkmbdjo"), 0, S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("bjaht"), 1, S::npos); - test(S(""), S("hjlcmgpket"), 1, S::npos); - test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), S(""), 0, 0); - test(S("qanej"), S("dfkap"), 0, 0); - test(S("clbao"), S("ihqrfebgad"), 0, 0); - test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, S::npos); - test(S("srdfq"), S(""), 1, 1); - test(S("oemth"), S("ikcrq"), 1, 1); - test(S("cdaih"), S("dmajblfhsg"), 1, 3); - test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, S::npos); - test(S("cshmd"), S(""), 2, 2); - test(S("lhcdo"), S("oebqi"), 2, 2); - test(S("qnsoh"), S("kojhpmbsfe"), 2, S::npos); - test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, S::npos); - test(S("fmtsp"), S(""), 4, 4); - test(S("khbpm"), S("aobjd"), 4, 4); - test(S("pbsji"), S("pcbahntsje"), 4, 4); - test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, S::npos); - test(S("eqmpa"), S(""), 5, S::npos); - test(S("omigs"), S("kocgb"), 5, S::npos); - test(S("onmje"), S("fbslrjiqkm"), 5, S::npos); - test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), S(""), 6, S::npos); - test(S("igdsc"), S("qngpd"), 6, S::npos); - test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), S(""), 0, 0); - test(S("daiprenocl"), S("ashjd"), 0, 2); - test(S("litpcfdghe"), S("mgojkldsqh"), 0, 1); - test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, S::npos); - test(S("qpghtfbaji"), S(""), 1, 1); - test(S("gfshlcmdjr"), S("nadkh"), 1, 1); - test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 4); - test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, S::npos); - test(S("crnklpmegd"), S(""), 5, 5); - test(S("jsbtafedoc"), S("prqgn"), 5, 5); - test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 6); - test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, S::npos); - test(S("lmofqdhpki"), S(""), 9, 9); - test(S("hnefkqimca"), S("rtjpa"), 9, S::npos); - test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 9); - test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, S::npos); - test(S("elgofjmbrq"), S(""), 10, S::npos); - test(S("mjqdgalkpc"), S("dplqa"), 10, S::npos); - test(S("kthqnfcerm"), S("dkacjoptns"), 10, S::npos); - test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), S(""), 11, S::npos); - test(S("akiteljmoh"), S("lofbc"), 11, S::npos); - test(S("hlbdfreqjo"), S("astoegbfpn"), 11, S::npos); - test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), S(""), 0, 0); - test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 0); - test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 1); - test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), S(""), 1, 1); - test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 3); - test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), S(""), 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 11); - test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 13); - test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, S::npos); - test(S("niptglfbosehkamrdqcj"), S(""), 19, 19); - test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, S::npos); - test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); +void test0() { + test(S(""), S(""), 0, S::npos); + test(S(""), S("laenf"), 0, S::npos); + test(S(""), S("pqlnkmbdjo"), 0, S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("bjaht"), 1, S::npos); + test(S(""), S("hjlcmgpket"), 1, S::npos); + test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), S(""), 0, 0); + test(S("qanej"), S("dfkap"), 0, 0); + test(S("clbao"), S("ihqrfebgad"), 0, 0); + test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, S::npos); + test(S("srdfq"), S(""), 1, 1); + test(S("oemth"), S("ikcrq"), 1, 1); + test(S("cdaih"), S("dmajblfhsg"), 1, 3); + test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, S::npos); + test(S("cshmd"), S(""), 2, 2); + test(S("lhcdo"), S("oebqi"), 2, 2); + test(S("qnsoh"), S("kojhpmbsfe"), 2, S::npos); + test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, S::npos); + test(S("fmtsp"), S(""), 4, 4); + test(S("khbpm"), S("aobjd"), 4, 4); + test(S("pbsji"), S("pcbahntsje"), 4, 4); + test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, S::npos); + test(S("eqmpa"), S(""), 5, S::npos); + test(S("omigs"), S("kocgb"), 5, S::npos); + test(S("onmje"), S("fbslrjiqkm"), 5, S::npos); + test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), S(""), 6, S::npos); + test(S("igdsc"), S("qngpd"), 6, S::npos); + test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), S(""), 0, 0); + test(S("daiprenocl"), S("ashjd"), 0, 2); + test(S("litpcfdghe"), S("mgojkldsqh"), 0, 1); + test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, S::npos); + test(S("qpghtfbaji"), S(""), 1, 1); + test(S("gfshlcmdjr"), S("nadkh"), 1, 1); + test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 4); + test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, S::npos); + test(S("crnklpmegd"), S(""), 5, 5); + test(S("jsbtafedoc"), S("prqgn"), 5, 5); + test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 6); + test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, S::npos); + test(S("lmofqdhpki"), S(""), 9, 9); + test(S("hnefkqimca"), S("rtjpa"), 9, S::npos); + test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 9); + test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, S::npos); + test(S("elgofjmbrq"), S(""), 10, S::npos); + test(S("mjqdgalkpc"), S("dplqa"), 10, S::npos); + test(S("kthqnfcerm"), S("dkacjoptns"), 10, S::npos); + test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), S(""), 11, S::npos); + test(S("akiteljmoh"), S("lofbc"), 11, S::npos); + test(S("hlbdfreqjo"), S("astoegbfpn"), 11, S::npos); + test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), S(""), 0, 0); + test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 0); + test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 1); + test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), S(""), 1, 1); + test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 3); + test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), S(""), 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 11); + test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 13); + test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, S::npos); + test(S("niptglfbosehkamrdqcj"), S(""), 19, 19); + test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, S::npos); + test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -void test1() -{ - test(S(""), S(""), S::npos); - test(S(""), S("laenf"), S::npos); - test(S(""), S("pqlnkmbdjo"), S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), S(""), 0); - test(S("lahfb"), S("irkhs"), 0); - test(S("gmfhd"), S("kantesmpgj"), 2); - test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), S::npos); - test(S("eolhfgpjqk"), S(""), 0); - test(S("nbatdlmekr"), S("bnrpe"), 2); - test(S("jdmciepkaq"), S("jtdaefblso"), 2); - test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), S::npos); - test(S("gprdcokbnjhlsfmtieqa"), S(""), 0); - test(S("qjghlnftcaismkropdeb"), S("bjaht"), 0); - test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 1); - test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos); +void test1() { + test(S(""), S(""), S::npos); + test(S(""), S("laenf"), S::npos); + test(S(""), S("pqlnkmbdjo"), S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), S(""), 0); + test(S("lahfb"), S("irkhs"), 0); + test(S("gmfhd"), S("kantesmpgj"), 2); + test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), S::npos); + test(S("eolhfgpjqk"), S(""), 0); + test(S("nbatdlmekr"), S("bnrpe"), 2); + test(S("jdmciepkaq"), S("jtdaefblso"), 2); + test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), S::npos); + test(S("gprdcokbnjhlsfmtieqa"), S(""), 0); + test(S("qjghlnftcaismkropdeb"), S("bjaht"), 0); + test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 1); + test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_char_size.pass.cpp @@ -19,28 +19,22 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(c, pos)); - assert(s.find_first_of(c, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(c, pos)); + assert(s.find_first_of(c, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - assert(s.find_first_of(c) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type x) { + assert(s.find_first_of(c) == x); + if (x != S::npos) + assert(x < s.size()); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test(S(""), 'e', 0, S::npos); test(S(""), 'e', 1, S::npos); @@ -67,20 +61,20 @@ test(S("csope"), 'e', 4); test(S("gfsmthlkon"), 'e', S::npos); test(S("laenfsbridchgotmkqpj"), 'e', 2); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_first_of( 'e', 0 ) == SV::npos, "" ); - static_assert (sv1.find_first_of( 'e', 1 ) == SV::npos, "" ); - static_assert (sv2.find_first_of( 'q', 0 ) == SV::npos, "" ); - static_assert (sv2.find_first_of( 'e', 1 ) == 4, "" ); - static_assert (sv2.find_first_of( 'e', 5 ) == SV::npos, "" ); - } + static_assert(sv1.find_first_of('e', 0) == SV::npos, ""); + static_assert(sv1.find_first_of('e', 1) == SV::npos, ""); + static_assert(sv2.find_first_of('q', 0) == SV::npos, ""); + static_assert(sv2.find_first_of('e', 1) == 4, ""); + static_assert(sv2.find_first_of('e', 5) == SV::npos, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size.pass.cpp @@ -19,152 +19,144 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos)); - assert(s.find_first_of(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +void test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos)); + assert(s.find_first_of(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str)); - assert(s.find_first_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str)); + assert(s.find_first_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -void test0() -{ - test(S(""), "", 0, S::npos); - test(S(""), "laenf", 0, S::npos); - test(S(""), "pqlnkmbdjo", 0, S::npos); - test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "bjaht", 1, S::npos); - test(S(""), "hjlcmgpket", 1, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); - test(S("fodgq"), "", 0, S::npos); - test(S("qanej"), "dfkap", 0, 1); - test(S("clbao"), "ihqrfebgad", 0, 2); - test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, 0); - test(S("srdfq"), "", 1, S::npos); - test(S("oemth"), "ikcrq", 1, S::npos); - test(S("cdaih"), "dmajblfhsg", 1, 1); - test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, 1); - test(S("cshmd"), "", 2, S::npos); - test(S("lhcdo"), "oebqi", 2, 4); - test(S("qnsoh"), "kojhpmbsfe", 2, 2); - test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, 2); - test(S("fmtsp"), "", 4, S::npos); - test(S("khbpm"), "aobjd", 4, S::npos); - test(S("pbsji"), "pcbahntsje", 4, S::npos); - test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, 4); - test(S("eqmpa"), "", 5, S::npos); - test(S("omigs"), "kocgb", 5, S::npos); - test(S("onmje"), "fbslrjiqkm", 5, S::npos); - test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); - test(S("schfa"), "", 6, S::npos); - test(S("igdsc"), "qngpd", 6, S::npos); - test(S("brqgo"), "rodhqklgmb", 6, S::npos); - test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); - test(S("hcjitbfapl"), "", 0, S::npos); - test(S("daiprenocl"), "ashjd", 0, 0); - test(S("litpcfdghe"), "mgojkldsqh", 0, 0); - test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, 0); - test(S("qpghtfbaji"), "", 1, S::npos); - test(S("gfshlcmdjr"), "nadkh", 1, 3); - test(S("nkodajteqp"), "ofdrqmkebl", 1, 1); - test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, 1); - test(S("crnklpmegd"), "", 5, S::npos); - test(S("jsbtafedoc"), "prqgn", 5, S::npos); - test(S("qnmodrtkeb"), "pejafmnokr", 5, 5); - test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, 5); - test(S("lmofqdhpki"), "", 9, S::npos); - test(S("hnefkqimca"), "rtjpa", 9, 9); - test(S("drtasbgmfp"), "ktsrmnqagd", 9, S::npos); - test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, 9); - test(S("elgofjmbrq"), "", 10, S::npos); - test(S("mjqdgalkpc"), "dplqa", 10, S::npos); - test(S("kthqnfcerm"), "dkacjoptns", 10, S::npos); - test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); - test(S("eqsgalomhb"), "", 11, S::npos); - test(S("akiteljmoh"), "lofbc", 11, S::npos); - test(S("hlbdfreqjo"), "astoegbfpn", 11, S::npos); - test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), "", 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 3); - test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 0); - test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, 0); - test(S("jlnkraeodhcspfgbqitm"), "", 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 3); - test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 1); - test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, 1); - test(S("hdpkobnsalmcfijregtq"), "", 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 10); - test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, 10); - test(S("niptglfbosehkamrdqcj"), "", 19, S::npos); - test(S("copqdhstbingamjfkler"), "djkqc", 19, S::npos); - test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 19); - test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, 19); - test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); - test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); +void test0() { + test(S(""), "", 0, S::npos); + test(S(""), "laenf", 0, S::npos); + test(S(""), "pqlnkmbdjo", 0, S::npos); + test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "bjaht", 1, S::npos); + test(S(""), "hjlcmgpket", 1, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); + test(S("fodgq"), "", 0, S::npos); + test(S("qanej"), "dfkap", 0, 1); + test(S("clbao"), "ihqrfebgad", 0, 2); + test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, 0); + test(S("srdfq"), "", 1, S::npos); + test(S("oemth"), "ikcrq", 1, S::npos); + test(S("cdaih"), "dmajblfhsg", 1, 1); + test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, 1); + test(S("cshmd"), "", 2, S::npos); + test(S("lhcdo"), "oebqi", 2, 4); + test(S("qnsoh"), "kojhpmbsfe", 2, 2); + test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, 2); + test(S("fmtsp"), "", 4, S::npos); + test(S("khbpm"), "aobjd", 4, S::npos); + test(S("pbsji"), "pcbahntsje", 4, S::npos); + test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, 4); + test(S("eqmpa"), "", 5, S::npos); + test(S("omigs"), "kocgb", 5, S::npos); + test(S("onmje"), "fbslrjiqkm", 5, S::npos); + test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); + test(S("schfa"), "", 6, S::npos); + test(S("igdsc"), "qngpd", 6, S::npos); + test(S("brqgo"), "rodhqklgmb", 6, S::npos); + test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); + test(S("hcjitbfapl"), "", 0, S::npos); + test(S("daiprenocl"), "ashjd", 0, 0); + test(S("litpcfdghe"), "mgojkldsqh", 0, 0); + test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, 0); + test(S("qpghtfbaji"), "", 1, S::npos); + test(S("gfshlcmdjr"), "nadkh", 1, 3); + test(S("nkodajteqp"), "ofdrqmkebl", 1, 1); + test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, 1); + test(S("crnklpmegd"), "", 5, S::npos); + test(S("jsbtafedoc"), "prqgn", 5, S::npos); + test(S("qnmodrtkeb"), "pejafmnokr", 5, 5); + test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, 5); + test(S("lmofqdhpki"), "", 9, S::npos); + test(S("hnefkqimca"), "rtjpa", 9, 9); + test(S("drtasbgmfp"), "ktsrmnqagd", 9, S::npos); + test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, 9); + test(S("elgofjmbrq"), "", 10, S::npos); + test(S("mjqdgalkpc"), "dplqa", 10, S::npos); + test(S("kthqnfcerm"), "dkacjoptns", 10, S::npos); + test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); + test(S("eqsgalomhb"), "", 11, S::npos); + test(S("akiteljmoh"), "lofbc", 11, S::npos); + test(S("hlbdfreqjo"), "astoegbfpn", 11, S::npos); + test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), "", 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 3); + test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 0); + test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, 0); + test(S("jlnkraeodhcspfgbqitm"), "", 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 3); + test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 1); + test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, 1); + test(S("hdpkobnsalmcfijregtq"), "", 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 10); + test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, 10); + test(S("niptglfbosehkamrdqcj"), "", 19, S::npos); + test(S("copqdhstbingamjfkler"), "djkqc", 19, S::npos); + test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 19); + test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, 19); + test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); + test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); } template -void test1() -{ - test(S(""), "", S::npos); - test(S(""), "laenf", S::npos); - test(S(""), "pqlnkmbdjo", S::npos); - test(S(""), "qkamfogpnljdcshbreti", S::npos); - test(S("nhmko"), "", S::npos); - test(S("lahfb"), "irkhs", 2); - test(S("gmfhd"), "kantesmpgj", 0); - test(S("odaft"), "oknlrstdpiqmjbaghcfe", 0); - test(S("eolhfgpjqk"), "", S::npos); - test(S("nbatdlmekr"), "bnrpe", 0); - test(S("jdmciepkaq"), "jtdaefblso", 0); - test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", 0); - test(S("gprdcokbnjhlsfmtieqa"), "", S::npos); - test(S("qjghlnftcaismkropdeb"), "bjaht", 1); - test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 0); - test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 0); +void test1() { + test(S(""), "", S::npos); + test(S(""), "laenf", S::npos); + test(S(""), "pqlnkmbdjo", S::npos); + test(S(""), "qkamfogpnljdcshbreti", S::npos); + test(S("nhmko"), "", S::npos); + test(S("lahfb"), "irkhs", 2); + test(S("gmfhd"), "kantesmpgj", 0); + test(S("odaft"), "oknlrstdpiqmjbaghcfe", 0); + test(S("eolhfgpjqk"), "", S::npos); + test(S("nbatdlmekr"), "bnrpe", 0); + test(S("jdmciepkaq"), "jtdaefblso", 0); + test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", 0); + test(S("gprdcokbnjhlsfmtieqa"), "", S::npos); + test(S("qjghlnftcaismkropdeb"), "bjaht", 1); + test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 0); + test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 0); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_first_of( "", 0) == SV::npos, "" ); - static_assert (sv1.find_first_of( "irkhs", 0) == SV::npos, "" ); - static_assert (sv2.find_first_of( "", 0) == SV::npos, "" ); - static_assert (sv2.find_first_of( "gfsrt", 0) == SV::npos, "" ); - static_assert (sv2.find_first_of( "lecar", 0) == 0, "" ); - } + static_assert(sv1.find_first_of("", 0) == SV::npos, ""); + static_assert(sv1.find_first_of("irkhs", 0) == SV::npos, ""); + static_assert(sv2.find_first_of("", 0) == SV::npos, ""); + static_assert(sv2.find_first_of("gfsrt", 0) == SV::npos, ""); + static_assert(sv2.find_first_of("lecar", 0) == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_pointer_size_size.pass.cpp @@ -19,378 +19,374 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos, n)); - assert(s.find_first_of(str, pos, n) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +void test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos, n)); + assert(s.find_first_of(str, pos, n) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -void test0() -{ - test(S(""), "", 0, 0, S::npos); - test(S(""), "irkhs", 0, 0, S::npos); - test(S(""), "kante", 0, 1, S::npos); - test(S(""), "oknlr", 0, 2, S::npos); - test(S(""), "pcdro", 0, 4, S::npos); - test(S(""), "bnrpe", 0, 5, S::npos); - test(S(""), "jtdaefblso", 0, 0, S::npos); - test(S(""), "oselktgbca", 0, 1, S::npos); - test(S(""), "eqgaplhckj", 0, 5, S::npos); - test(S(""), "bjahtcmnlp", 0, 9, S::npos); - test(S(""), "hjlcmgpket", 0, 10, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); - test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); - test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); - test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); - test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "lbtqd", 1, 0, S::npos); - test(S(""), "tboim", 1, 1, S::npos); - test(S(""), "slcer", 1, 2, S::npos); - test(S(""), "cbjfs", 1, 4, S::npos); - test(S(""), "aqibs", 1, 5, S::npos); - test(S(""), "gtfblmqinc", 1, 0, S::npos); - test(S(""), "mkqpbtdalg", 1, 1, S::npos); - test(S(""), "kphatlimcd", 1, 5, S::npos); - test(S(""), "pblasqogic", 1, 9, S::npos); - test(S(""), "arosdhcfme", 1, 10, S::npos); - test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); - test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); - test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); - test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); - test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); - test(S("eaint"), "", 0, 0, S::npos); - test(S("binja"), "gfsrt", 0, 0, S::npos); - test(S("latkm"), "pfsoc", 0, 1, S::npos); - test(S("lecfr"), "tpflm", 0, 2, S::npos); - test(S("eqkst"), "sgkec", 0, 4, 0); - test(S("cdafr"), "romds", 0, 5, 1); - test(S("prbhe"), "qhjistlgmr", 0, 0, S::npos); - test(S("lbisk"), "pedfirsglo", 0, 1, S::npos); - test(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos); - test(S("ehmja"), "dabckmepqj", 0, 9, 0); - test(S("mhqgd"), "pqscrjthli", 0, 10, 1); - test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos); - test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos); - test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos); - test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0); - test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0); - test(S("clrgb"), "", 1, 0, S::npos); - test(S("tjmek"), "osmia", 1, 0, S::npos); - test(S("bgstp"), "ckonl", 1, 1, S::npos); - test(S("hstrk"), "ilcaj", 1, 2, S::npos); - test(S("kmspj"), "lasiq", 1, 4, 2); - test(S("tjboh"), "kfqmr", 1, 5, S::npos); - test(S("ilbcj"), "klnitfaobg", 1, 0, S::npos); - test(S("jkngf"), "gjhmdlqikp", 1, 1, 3); - test(S("gfcql"), "skbgtahqej", 1, 5, S::npos); - test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 2); - test(S("bthpg"), "bjgfmnlkio", 1, 10, 4); - test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos); - test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos); - test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1); - test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1); - test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1); - test(S("ndrhl"), "", 2, 0, S::npos); - test(S("mrecp"), "otkgb", 2, 0, S::npos); - test(S("qlasf"), "cqsjl", 2, 1, S::npos); - test(S("smaqd"), "dpifl", 2, 2, 4); - test(S("hjeni"), "oapht", 2, 4, S::npos); - test(S("ocmfj"), "cifts", 2, 5, 3); - test(S("hmftq"), "nmsckbgalo", 2, 0, S::npos); - test(S("fklad"), "tpksqhamle", 2, 1, S::npos); - test(S("dirnm"), "tpdrchmkji", 2, 5, 2); - test(S("hrgdc"), "ijagfkblst", 2, 9, 2); - test(S("ifakg"), "kpocsignjb", 2, 10, 3); - test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos); - test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos); - test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 3); - test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2); - test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2); - test(S("cjgao"), "", 4, 0, S::npos); - test(S("kjplq"), "mabns", 4, 0, S::npos); - test(S("herni"), "bdnrp", 4, 1, S::npos); - test(S("tadrb"), "scidp", 4, 2, S::npos); - test(S("pkfeo"), "agbjl", 4, 4, S::npos); - test(S("hoser"), "jfmpr", 4, 5, 4); - test(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos); - test(S("pgejb"), "apsfntdoqc", 4, 1, S::npos); - test(S("thlnq"), "ndkjeisgcl", 4, 5, S::npos); - test(S("nbmit"), "rnfpqatdeo", 4, 9, 4); - test(S("jgmib"), "bntjlqrfik", 4, 10, 4); - test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos); - test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos); - test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4); - test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4); - test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4); - test(S("klopi"), "", 5, 0, S::npos); - test(S("dajhn"), "psthd", 5, 0, S::npos); - test(S("jbgno"), "rpmjd", 5, 1, S::npos); - test(S("hkjae"), "dfsmk", 5, 2, S::npos); +void test0() { + test(S(""), "", 0, 0, S::npos); + test(S(""), "irkhs", 0, 0, S::npos); + test(S(""), "kante", 0, 1, S::npos); + test(S(""), "oknlr", 0, 2, S::npos); + test(S(""), "pcdro", 0, 4, S::npos); + test(S(""), "bnrpe", 0, 5, S::npos); + test(S(""), "jtdaefblso", 0, 0, S::npos); + test(S(""), "oselktgbca", 0, 1, S::npos); + test(S(""), "eqgaplhckj", 0, 5, S::npos); + test(S(""), "bjahtcmnlp", 0, 9, S::npos); + test(S(""), "hjlcmgpket", 0, 10, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); + test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); + test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); + test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); + test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "lbtqd", 1, 0, S::npos); + test(S(""), "tboim", 1, 1, S::npos); + test(S(""), "slcer", 1, 2, S::npos); + test(S(""), "cbjfs", 1, 4, S::npos); + test(S(""), "aqibs", 1, 5, S::npos); + test(S(""), "gtfblmqinc", 1, 0, S::npos); + test(S(""), "mkqpbtdalg", 1, 1, S::npos); + test(S(""), "kphatlimcd", 1, 5, S::npos); + test(S(""), "pblasqogic", 1, 9, S::npos); + test(S(""), "arosdhcfme", 1, 10, S::npos); + test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); + test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); + test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); + test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); + test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); + test(S("eaint"), "", 0, 0, S::npos); + test(S("binja"), "gfsrt", 0, 0, S::npos); + test(S("latkm"), "pfsoc", 0, 1, S::npos); + test(S("lecfr"), "tpflm", 0, 2, S::npos); + test(S("eqkst"), "sgkec", 0, 4, 0); + test(S("cdafr"), "romds", 0, 5, 1); + test(S("prbhe"), "qhjistlgmr", 0, 0, S::npos); + test(S("lbisk"), "pedfirsglo", 0, 1, S::npos); + test(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos); + test(S("ehmja"), "dabckmepqj", 0, 9, 0); + test(S("mhqgd"), "pqscrjthli", 0, 10, 1); + test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos); + test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos); + test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos); + test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0); + test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0); + test(S("clrgb"), "", 1, 0, S::npos); + test(S("tjmek"), "osmia", 1, 0, S::npos); + test(S("bgstp"), "ckonl", 1, 1, S::npos); + test(S("hstrk"), "ilcaj", 1, 2, S::npos); + test(S("kmspj"), "lasiq", 1, 4, 2); + test(S("tjboh"), "kfqmr", 1, 5, S::npos); + test(S("ilbcj"), "klnitfaobg", 1, 0, S::npos); + test(S("jkngf"), "gjhmdlqikp", 1, 1, 3); + test(S("gfcql"), "skbgtahqej", 1, 5, S::npos); + test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 2); + test(S("bthpg"), "bjgfmnlkio", 1, 10, 4); + test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos); + test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos); + test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1); + test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1); + test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1); + test(S("ndrhl"), "", 2, 0, S::npos); + test(S("mrecp"), "otkgb", 2, 0, S::npos); + test(S("qlasf"), "cqsjl", 2, 1, S::npos); + test(S("smaqd"), "dpifl", 2, 2, 4); + test(S("hjeni"), "oapht", 2, 4, S::npos); + test(S("ocmfj"), "cifts", 2, 5, 3); + test(S("hmftq"), "nmsckbgalo", 2, 0, S::npos); + test(S("fklad"), "tpksqhamle", 2, 1, S::npos); + test(S("dirnm"), "tpdrchmkji", 2, 5, 2); + test(S("hrgdc"), "ijagfkblst", 2, 9, 2); + test(S("ifakg"), "kpocsignjb", 2, 10, 3); + test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos); + test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos); + test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 3); + test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2); + test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2); + test(S("cjgao"), "", 4, 0, S::npos); + test(S("kjplq"), "mabns", 4, 0, S::npos); + test(S("herni"), "bdnrp", 4, 1, S::npos); + test(S("tadrb"), "scidp", 4, 2, S::npos); + test(S("pkfeo"), "agbjl", 4, 4, S::npos); + test(S("hoser"), "jfmpr", 4, 5, 4); + test(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos); + test(S("pgejb"), "apsfntdoqc", 4, 1, S::npos); + test(S("thlnq"), "ndkjeisgcl", 4, 5, S::npos); + test(S("nbmit"), "rnfpqatdeo", 4, 9, 4); + test(S("jgmib"), "bntjlqrfik", 4, 10, 4); + test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos); + test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos); + test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4); + test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4); + test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4); + test(S("klopi"), "", 5, 0, S::npos); + test(S("dajhn"), "psthd", 5, 0, S::npos); + test(S("jbgno"), "rpmjd", 5, 1, S::npos); + test(S("hkjae"), "dfsmk", 5, 2, S::npos); } template -void test1() -{ - test(S("gbhqo"), "skqne", 5, 4, S::npos); - test(S("ktdor"), "kipnf", 5, 5, S::npos); - test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); - test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); - test(S("armql"), "pcdgltbrfj", 5, 5, S::npos); - test(S("cdhjo"), "aekfctpirg", 5, 9, S::npos); - test(S("jcons"), "ledihrsgpf", 5, 10, S::npos); - test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); - test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); - test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos); - test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos); - test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); - test(S("gajqn"), "", 6, 0, S::npos); - test(S("stedk"), "hrnat", 6, 0, S::npos); - test(S("tjkaf"), "gsqdt", 6, 1, S::npos); - test(S("dthpe"), "bspkd", 6, 2, S::npos); - test(S("klhde"), "ohcmb", 6, 4, S::npos); - test(S("bhlki"), "heatr", 6, 5, S::npos); - test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); - test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); - test(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos); - test(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos); - test(S("jblqp"), "njolbmspac", 6, 10, S::npos); - test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); - test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); - test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos); - test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); - test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); - test(S("jnkrfhotgl"), "", 0, 0, S::npos); - test(S("dltjfngbko"), "rqegt", 0, 0, S::npos); - test(S("bmjlpkiqde"), "dashm", 0, 1, 8); - test(S("skrflobnqm"), "jqirk", 0, 2, 8); - test(S("jkpldtshrm"), "rckeg", 0, 4, 1); - test(S("ghasdbnjqo"), "jscie", 0, 5, 3); - test(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos); - test(S("ikthdgcamf"), "gdicosleja", 0, 1, 5); - test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0); - test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0); - test(S("itphbqsker"), "dtablcrseo", 0, 10, 1); - test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos); - test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos); - test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 4); - test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0); - test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0); - test(S("shbcqnmoar"), "", 1, 0, S::npos); - test(S("bdoshlmfin"), "ontrs", 1, 0, S::npos); - test(S("khfrebnsgq"), "pfkna", 1, 1, S::npos); - test(S("getcrsaoji"), "ekosa", 1, 2, 1); - test(S("fjiknedcpq"), "anqhk", 1, 4, 4); - test(S("tkejgnafrm"), "jekca", 1, 5, 1); - test(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos); - test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos); - test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1); - test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 4); - test(S("cigfqkated"), "sqcflrgtim", 1, 10, 1); - test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos); - test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos); - test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1); - test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1); - test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1); - test(S("ectnhskflp"), "", 5, 0, S::npos); - test(S("fgtianblpq"), "pijag", 5, 0, S::npos); - test(S("mfeqklirnh"), "jrckd", 5, 1, S::npos); - test(S("astedncjhk"), "qcloh", 5, 2, 6); - test(S("fhlqgcajbr"), "thlmp", 5, 4, S::npos); - test(S("epfhocmdng"), "qidmo", 5, 5, 6); - test(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos); - test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5); - test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 7); - test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5); - test(S("jbhcfposld"), "trfqgmckbe", 5, 10, S::npos); - test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos); - test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos); - test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5); - test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5); - test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5); - test(S("shoiedtcjb"), "", 9, 0, S::npos); - test(S("ebcinjgads"), "tqbnh", 9, 0, S::npos); - test(S("dqmregkcfl"), "akmle", 9, 1, S::npos); - test(S("ngcrieqajf"), "iqfkm", 9, 2, S::npos); - test(S("qosmilgnjb"), "tqjsr", 9, 4, S::npos); - test(S("ikabsjtdfl"), "jplqg", 9, 5, 9); - test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos); - test(S("fdnplotmgh"), "morkglpesn", 9, 1, S::npos); - test(S("fdbicojerm"), "dmicerngat", 9, 5, 9); - test(S("mbtafndjcq"), "radgeskbtc", 9, 9, S::npos); - test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, S::npos); - test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos); - test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, S::npos); - test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, S::npos); - test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9); - test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9); - test(S("ncjpmaekbs"), "", 10, 0, S::npos); - test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); - test(S("pqfhsgilen"), "qnpor", 10, 1, S::npos); - test(S("gqtjsbdckh"), "otdma", 10, 2, S::npos); - test(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos); - test(S("beanrfodgj"), "odpte", 10, 5, S::npos); - test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); - test(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos); +void test1() { + test(S("gbhqo"), "skqne", 5, 4, S::npos); + test(S("ktdor"), "kipnf", 5, 5, S::npos); + test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); + test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); + test(S("armql"), "pcdgltbrfj", 5, 5, S::npos); + test(S("cdhjo"), "aekfctpirg", 5, 9, S::npos); + test(S("jcons"), "ledihrsgpf", 5, 10, S::npos); + test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); + test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); + test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, S::npos); + test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, S::npos); + test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); + test(S("gajqn"), "", 6, 0, S::npos); + test(S("stedk"), "hrnat", 6, 0, S::npos); + test(S("tjkaf"), "gsqdt", 6, 1, S::npos); + test(S("dthpe"), "bspkd", 6, 2, S::npos); + test(S("klhde"), "ohcmb", 6, 4, S::npos); + test(S("bhlki"), "heatr", 6, 5, S::npos); + test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); + test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); + test(S("dpqbr"), "lmbtdehjrn", 6, 5, S::npos); + test(S("kdhmo"), "teqmcrlgib", 6, 9, S::npos); + test(S("jblqp"), "njolbmspac", 6, 10, S::npos); + test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); + test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); + test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, S::npos); + test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); + test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); + test(S("jnkrfhotgl"), "", 0, 0, S::npos); + test(S("dltjfngbko"), "rqegt", 0, 0, S::npos); + test(S("bmjlpkiqde"), "dashm", 0, 1, 8); + test(S("skrflobnqm"), "jqirk", 0, 2, 8); + test(S("jkpldtshrm"), "rckeg", 0, 4, 1); + test(S("ghasdbnjqo"), "jscie", 0, 5, 3); + test(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos); + test(S("ikthdgcamf"), "gdicosleja", 0, 1, 5); + test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0); + test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0); + test(S("itphbqsker"), "dtablcrseo", 0, 10, 1); + test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos); + test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos); + test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 4); + test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0); + test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0); + test(S("shbcqnmoar"), "", 1, 0, S::npos); + test(S("bdoshlmfin"), "ontrs", 1, 0, S::npos); + test(S("khfrebnsgq"), "pfkna", 1, 1, S::npos); + test(S("getcrsaoji"), "ekosa", 1, 2, 1); + test(S("fjiknedcpq"), "anqhk", 1, 4, 4); + test(S("tkejgnafrm"), "jekca", 1, 5, 1); + test(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos); + test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos); + test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1); + test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 4); + test(S("cigfqkated"), "sqcflrgtim", 1, 10, 1); + test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos); + test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos); + test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1); + test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1); + test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1); + test(S("ectnhskflp"), "", 5, 0, S::npos); + test(S("fgtianblpq"), "pijag", 5, 0, S::npos); + test(S("mfeqklirnh"), "jrckd", 5, 1, S::npos); + test(S("astedncjhk"), "qcloh", 5, 2, 6); + test(S("fhlqgcajbr"), "thlmp", 5, 4, S::npos); + test(S("epfhocmdng"), "qidmo", 5, 5, 6); + test(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos); + test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5); + test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 7); + test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5); + test(S("jbhcfposld"), "trfqgmckbe", 5, 10, S::npos); + test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos); + test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos); + test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5); + test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5); + test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5); + test(S("shoiedtcjb"), "", 9, 0, S::npos); + test(S("ebcinjgads"), "tqbnh", 9, 0, S::npos); + test(S("dqmregkcfl"), "akmle", 9, 1, S::npos); + test(S("ngcrieqajf"), "iqfkm", 9, 2, S::npos); + test(S("qosmilgnjb"), "tqjsr", 9, 4, S::npos); + test(S("ikabsjtdfl"), "jplqg", 9, 5, 9); + test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos); + test(S("fdnplotmgh"), "morkglpesn", 9, 1, S::npos); + test(S("fdbicojerm"), "dmicerngat", 9, 5, 9); + test(S("mbtafndjcq"), "radgeskbtc", 9, 9, S::npos); + test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, S::npos); + test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos); + test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, S::npos); + test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, S::npos); + test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9); + test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9); + test(S("ncjpmaekbs"), "", 10, 0, S::npos); + test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); + test(S("pqfhsgilen"), "qnpor", 10, 1, S::npos); + test(S("gqtjsbdckh"), "otdma", 10, 2, S::npos); + test(S("cfkqpjlegi"), "efhjg", 10, 4, S::npos); + test(S("beanrfodgj"), "odpte", 10, 5, S::npos); + test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); + test(S("iomkfthagj"), "oaklidrbqg", 10, 1, S::npos); } template -void test2() -{ - test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos); - test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos); - test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos); - test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); - test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos); - test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos); - test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos); - test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); - test(S("cqjohampgd"), "", 11, 0, S::npos); - test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); - test(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos); - test(S("ngfbojitcl"), "tqedg", 11, 2, S::npos); - test(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos); - test(S("qghptonrea"), "eaqkl", 11, 5, S::npos); - test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); - test(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos); - test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos); - test(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos); - test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos); - test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); - test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); - test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos); - test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); - test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); - test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos); - test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos); - test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 4); - test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 3); - test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 3); - test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 3); - test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos); - test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 19); - test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 2); - test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 2); - test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 2); - test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos); - test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 16); - test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 1); - test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0); - test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0); - test(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos); - test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos); - test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 6); - test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1); - test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1); - test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 6); - test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos); - test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 19); - test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 4); - test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1); - test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1); - test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos); - test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 7); - test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1); - test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1); - test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1); - test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos); - test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos); - test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 12); - test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, S::npos); - test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10); - test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 15); - test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos); - test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, S::npos); - test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 11); - test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10); - test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 11); - test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos); - test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 18); - test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10); - test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10); - test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10); - test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos); - test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos); - test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, S::npos); - test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, S::npos); - test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, S::npos); - test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19); - test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos); - test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, S::npos); - test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, S::npos); - test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, S::npos); - test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, S::npos); - test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos); - test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, S::npos); - test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19); - test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19); - test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19); - test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); - test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); - test(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos); - test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos); - test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos); - test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos); - test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); - test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos); - test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos); - test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos); - test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos); - test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); +void test2() { + test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, S::npos); + test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, S::npos); + test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, S::npos); + test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); + test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, S::npos); + test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, S::npos); + test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, S::npos); + test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); + test(S("cqjohampgd"), "", 11, 0, S::npos); + test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); + test(S("tjehkpsalm"), "jbrnk", 11, 1, S::npos); + test(S("ngfbojitcl"), "tqedg", 11, 2, S::npos); + test(S("rcfkdbhgjo"), "nqskp", 11, 4, S::npos); + test(S("qghptonrea"), "eaqkl", 11, 5, S::npos); + test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); + test(S("hlmgabenti"), "lsftgajqpm", 11, 1, S::npos); + test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, S::npos); + test(S("jqedtkornm"), "shkncmiaqj", 11, 9, S::npos); + test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, S::npos); + test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); + test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); + test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, S::npos); + test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); + test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); + test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos); + test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos); + test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 4); + test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 3); + test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 3); + test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 3); + test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos); + test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 19); + test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 2); + test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 2); + test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 2); + test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos); + test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 16); + test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 1); + test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0); + test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0); + test(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos); + test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos); + test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 6); + test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1); + test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1); + test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 6); + test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos); + test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 19); + test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 4); + test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1); + test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1); + test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos); + test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 7); + test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1); + test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1); + test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1); + test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos); + test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos); + test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 12); + test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, S::npos); + test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10); + test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 15); + test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos); + test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, S::npos); + test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 11); + test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10); + test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 11); + test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos); + test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 18); + test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10); + test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10); + test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10); + test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos); + test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos); + test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, S::npos); + test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, S::npos); + test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, S::npos); + test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19); + test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos); + test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, S::npos); + test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, S::npos); + test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, S::npos); + test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, S::npos); + test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos); + test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, S::npos); + test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19); + test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19); + test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19); + test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); + test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); + test(S("grkpahljcftesdmonqib"), "odife", 20, 1, S::npos); + test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, S::npos); + test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, S::npos); + test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, S::npos); + test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); + test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, S::npos); + test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, S::npos); + test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, S::npos); + test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, S::npos); + test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); } template -void test3() -{ - test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos); - test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos); - test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos); - test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); - test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); - test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); - test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos); - test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos); - test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos); - test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos); - test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); - test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos); - test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos); - test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos); - test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos); - test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); - test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos); - test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos); - test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos); - test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); +void test3() { + test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, S::npos); + test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, S::npos); + test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, S::npos); + test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); + test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); + test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); + test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, S::npos); + test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, S::npos); + test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, S::npos); + test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, S::npos); + test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); + test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, S::npos); + test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, S::npos); + test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, S::npos); + test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, S::npos); + test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); + test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, S::npos); + test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, S::npos); + test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, S::npos); + test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); test2(); test3(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_first_of( "", 0, 0) == SV::npos, "" ); - static_assert (sv1.find_first_of( "irkhs", 0, 5) == SV::npos, "" ); - static_assert (sv2.find_first_of( "", 0, 0) == SV::npos, "" ); - static_assert (sv2.find_first_of( "gfsrt", 0, 5) == SV::npos, "" ); - static_assert (sv2.find_first_of( "lecar", 0, 5) == 0, "" ); - } + static_assert(sv1.find_first_of("", 0, 0) == SV::npos, ""); + static_assert(sv1.find_first_of("irkhs", 0, 5) == SV::npos, ""); + static_assert(sv2.find_first_of("", 0, 0) == SV::npos, ""); + static_assert(sv2.find_first_of("gfsrt", 0, 5) == SV::npos, ""); + static_assert(sv2.find_first_of("lecar", 0, 5) == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_string_view_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_first_of_string_view_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_first_of_string_view_size.pass.cpp @@ -18,138 +18,131 @@ #include "test_macros.h" template -void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos)); - assert(s.find_first_of(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x < s.size()); +void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str, pos)); + assert(s.find_first_of(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x < s.size()); } template -void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str)); - assert(s.find_first_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_first_of(str)); + assert(s.find_first_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -void test0() -{ - test(S(""), S(""), 0, S::npos); - test(S(""), S("laenf"), 0, S::npos); - test(S(""), S("pqlnkmbdjo"), 0, S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("bjaht"), 1, S::npos); - test(S(""), S("hjlcmgpket"), 1, S::npos); - test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), S(""), 0, S::npos); - test(S("qanej"), S("dfkap"), 0, 1); - test(S("clbao"), S("ihqrfebgad"), 0, 2); - test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, 0); - test(S("srdfq"), S(""), 1, S::npos); - test(S("oemth"), S("ikcrq"), 1, S::npos); - test(S("cdaih"), S("dmajblfhsg"), 1, 1); - test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, 1); - test(S("cshmd"), S(""), 2, S::npos); - test(S("lhcdo"), S("oebqi"), 2, 4); - test(S("qnsoh"), S("kojhpmbsfe"), 2, 2); - test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, 2); - test(S("fmtsp"), S(""), 4, S::npos); - test(S("khbpm"), S("aobjd"), 4, S::npos); - test(S("pbsji"), S("pcbahntsje"), 4, S::npos); - test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, 4); - test(S("eqmpa"), S(""), 5, S::npos); - test(S("omigs"), S("kocgb"), 5, S::npos); - test(S("onmje"), S("fbslrjiqkm"), 5, S::npos); - test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), S(""), 6, S::npos); - test(S("igdsc"), S("qngpd"), 6, S::npos); - test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), S(""), 0, S::npos); - test(S("daiprenocl"), S("ashjd"), 0, 0); - test(S("litpcfdghe"), S("mgojkldsqh"), 0, 0); - test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, 0); - test(S("qpghtfbaji"), S(""), 1, S::npos); - test(S("gfshlcmdjr"), S("nadkh"), 1, 3); - test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 1); - test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, 1); - test(S("crnklpmegd"), S(""), 5, S::npos); - test(S("jsbtafedoc"), S("prqgn"), 5, S::npos); - test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 5); - test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, 5); - test(S("lmofqdhpki"), S(""), 9, S::npos); - test(S("hnefkqimca"), S("rtjpa"), 9, 9); - test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, S::npos); - test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, 9); - test(S("elgofjmbrq"), S(""), 10, S::npos); - test(S("mjqdgalkpc"), S("dplqa"), 10, S::npos); - test(S("kthqnfcerm"), S("dkacjoptns"), 10, S::npos); - test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), S(""), 11, S::npos); - test(S("akiteljmoh"), S("lofbc"), 11, S::npos); - test(S("hlbdfreqjo"), S("astoegbfpn"), 11, S::npos); - test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), S(""), 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 3); - test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 0); - test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, 0); - test(S("jlnkraeodhcspfgbqitm"), S(""), 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 3); - test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 1); - test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, 1); - test(S("hdpkobnsalmcfijregtq"), S(""), 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 10); - test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, 10); - test(S("niptglfbosehkamrdqcj"), S(""), 19, S::npos); - test(S("copqdhstbingamjfkler"), S("djkqc"), 19, S::npos); - test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 19); - test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, 19); - test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, S::npos); - test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, S::npos); - test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, S::npos); - test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, S::npos); - test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); +void test0() { + test(S(""), S(""), 0, S::npos); + test(S(""), S("laenf"), 0, S::npos); + test(S(""), S("pqlnkmbdjo"), 0, S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("bjaht"), 1, S::npos); + test(S(""), S("hjlcmgpket"), 1, S::npos); + test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), S(""), 0, S::npos); + test(S("qanej"), S("dfkap"), 0, 1); + test(S("clbao"), S("ihqrfebgad"), 0, 2); + test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, 0); + test(S("srdfq"), S(""), 1, S::npos); + test(S("oemth"), S("ikcrq"), 1, S::npos); + test(S("cdaih"), S("dmajblfhsg"), 1, 1); + test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, 1); + test(S("cshmd"), S(""), 2, S::npos); + test(S("lhcdo"), S("oebqi"), 2, 4); + test(S("qnsoh"), S("kojhpmbsfe"), 2, 2); + test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, 2); + test(S("fmtsp"), S(""), 4, S::npos); + test(S("khbpm"), S("aobjd"), 4, S::npos); + test(S("pbsji"), S("pcbahntsje"), 4, S::npos); + test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, 4); + test(S("eqmpa"), S(""), 5, S::npos); + test(S("omigs"), S("kocgb"), 5, S::npos); + test(S("onmje"), S("fbslrjiqkm"), 5, S::npos); + test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), S(""), 6, S::npos); + test(S("igdsc"), S("qngpd"), 6, S::npos); + test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), S(""), 0, S::npos); + test(S("daiprenocl"), S("ashjd"), 0, 0); + test(S("litpcfdghe"), S("mgojkldsqh"), 0, 0); + test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, 0); + test(S("qpghtfbaji"), S(""), 1, S::npos); + test(S("gfshlcmdjr"), S("nadkh"), 1, 3); + test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 1); + test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, 1); + test(S("crnklpmegd"), S(""), 5, S::npos); + test(S("jsbtafedoc"), S("prqgn"), 5, S::npos); + test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 5); + test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, 5); + test(S("lmofqdhpki"), S(""), 9, S::npos); + test(S("hnefkqimca"), S("rtjpa"), 9, 9); + test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, S::npos); + test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, 9); + test(S("elgofjmbrq"), S(""), 10, S::npos); + test(S("mjqdgalkpc"), S("dplqa"), 10, S::npos); + test(S("kthqnfcerm"), S("dkacjoptns"), 10, S::npos); + test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), S(""), 11, S::npos); + test(S("akiteljmoh"), S("lofbc"), 11, S::npos); + test(S("hlbdfreqjo"), S("astoegbfpn"), 11, S::npos); + test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), S(""), 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 3); + test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 0); + test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, 0); + test(S("jlnkraeodhcspfgbqitm"), S(""), 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 3); + test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 1); + test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, 1); + test(S("hdpkobnsalmcfijregtq"), S(""), 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 10); + test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, 10); + test(S("niptglfbosehkamrdqcj"), S(""), 19, S::npos); + test(S("copqdhstbingamjfkler"), S("djkqc"), 19, S::npos); + test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 19); + test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, 19); + test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, S::npos); + test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, S::npos); + test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, S::npos); + test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, S::npos); + test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -void test1() -{ - test(S(""), S(""), S::npos); - test(S(""), S("laenf"), S::npos); - test(S(""), S("pqlnkmbdjo"), S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), S(""), S::npos); - test(S("lahfb"), S("irkhs"), 2); - test(S("gmfhd"), S("kantesmpgj"), 0); - test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), 0); - test(S("eolhfgpjqk"), S(""), S::npos); - test(S("nbatdlmekr"), S("bnrpe"), 0); - test(S("jdmciepkaq"), S("jtdaefblso"), 0); - test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), 0); - test(S("gprdcokbnjhlsfmtieqa"), S(""), S::npos); - test(S("qjghlnftcaismkropdeb"), S("bjaht"), 1); - test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 0); - test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 0); +void test1() { + test(S(""), S(""), S::npos); + test(S(""), S("laenf"), S::npos); + test(S(""), S("pqlnkmbdjo"), S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), S(""), S::npos); + test(S("lahfb"), S("irkhs"), 2); + test(S("gmfhd"), S("kantesmpgj"), 0); + test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), 0); + test(S("eolhfgpjqk"), S(""), S::npos); + test(S("nbatdlmekr"), S("bnrpe"), 0); + test(S("jdmciepkaq"), S("jtdaefblso"), 0); + test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), 0); + test(S("gprdcokbnjhlsfmtieqa"), S(""), S::npos); + test(S("qjghlnftcaismkropdeb"), S("bjaht"), 1); + test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 0); + test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 0); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_char_size.pass.cpp @@ -19,29 +19,23 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(c, pos)); - assert(s.find_last_not_of(c, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(c, pos)); + assert(s.find_last_not_of(c, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(c)); - assert(s.find_last_not_of(c) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(c)); + assert(s.find_last_not_of(c) == x); + if (x != S::npos) + assert(x < s.size()); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test(S(""), 'i', 0, S::npos); test(S(""), 'i', 1, S::npos); @@ -68,20 +62,20 @@ test(S("csope"), 'i', 4); test(S("gfsmthlkon"), 'i', 9); test(S("laenfsbridchgotmkqpj"), 'i', 19); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_last_not_of( 'i', 0 ) == SV::npos, "" ); - static_assert (sv1.find_last_not_of( 'i', 1 ) == SV::npos, "" ); - static_assert (sv2.find_last_not_of( 'a', 0 ) == SV::npos, "" ); - static_assert (sv2.find_last_not_of( 'a', 1 ) == 1, "" ); - static_assert (sv2.find_last_not_of( 'e', 5 ) == 3, "" ); - } + static_assert(sv1.find_last_not_of('i', 0) == SV::npos, ""); + static_assert(sv1.find_last_not_of('i', 1) == SV::npos, ""); + static_assert(sv2.find_last_not_of('a', 0) == SV::npos, ""); + static_assert(sv2.find_last_not_of('a', 1) == 1, ""); + static_assert(sv2.find_last_not_of('e', 5) == 3, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size.pass.cpp @@ -19,151 +19,143 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos)); - assert(s.find_last_not_of(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +void test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos)); + assert(s.find_last_not_of(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - assert(s.find_last_not_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + assert(s.find_last_not_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -void test0() -{ - test(S(""), "", 0, S::npos); - test(S(""), "laenf", 0, S::npos); - test(S(""), "pqlnkmbdjo", 0, S::npos); - test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "bjaht", 1, S::npos); - test(S(""), "hjlcmgpket", 1, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); - test(S("fodgq"), "", 0, 0); - test(S("qanej"), "dfkap", 0, 0); - test(S("clbao"), "ihqrfebgad", 0, 0); - test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, S::npos); - test(S("srdfq"), "", 1, 1); - test(S("oemth"), "ikcrq", 1, 1); - test(S("cdaih"), "dmajblfhsg", 1, 0); - test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, S::npos); - test(S("cshmd"), "", 2, 2); - test(S("lhcdo"), "oebqi", 2, 2); - test(S("qnsoh"), "kojhpmbsfe", 2, 1); - test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, S::npos); - test(S("fmtsp"), "", 4, 4); - test(S("khbpm"), "aobjd", 4, 4); - test(S("pbsji"), "pcbahntsje", 4, 4); - test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, S::npos); - test(S("eqmpa"), "", 5, 4); - test(S("omigs"), "kocgb", 5, 4); - test(S("onmje"), "fbslrjiqkm", 5, 4); - test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); - test(S("schfa"), "", 6, 4); - test(S("igdsc"), "qngpd", 6, 4); - test(S("brqgo"), "rodhqklgmb", 6, S::npos); - test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); - test(S("hcjitbfapl"), "", 0, 0); - test(S("daiprenocl"), "ashjd", 0, S::npos); - test(S("litpcfdghe"), "mgojkldsqh", 0, S::npos); - test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, S::npos); - test(S("qpghtfbaji"), "", 1, 1); - test(S("gfshlcmdjr"), "nadkh", 1, 1); - test(S("nkodajteqp"), "ofdrqmkebl", 1, 0); - test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, S::npos); - test(S("crnklpmegd"), "", 5, 5); - test(S("jsbtafedoc"), "prqgn", 5, 5); - test(S("qnmodrtkeb"), "pejafmnokr", 5, 4); - test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, S::npos); - test(S("lmofqdhpki"), "", 9, 9); - test(S("hnefkqimca"), "rtjpa", 9, 8); - test(S("drtasbgmfp"), "ktsrmnqagd", 9, 9); - test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, S::npos); - test(S("elgofjmbrq"), "", 10, 9); - test(S("mjqdgalkpc"), "dplqa", 10, 9); - test(S("kthqnfcerm"), "dkacjoptns", 10, 9); - test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); - test(S("eqsgalomhb"), "", 11, 9); - test(S("akiteljmoh"), "lofbc", 11, 9); - test(S("hlbdfreqjo"), "astoegbfpn", 11, 8); - test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), "", 0, 0); - test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 0); - test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, S::npos); - test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), "", 1, 1); - test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 0); - test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), "", 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 9); - test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 9); - test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, S::npos); - test(S("niptglfbosehkamrdqcj"), "", 19, 19); - test(S("copqdhstbingamjfkler"), "djkqc", 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 16); - test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), "", 20, 19); - test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, 18); - test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, 19); - test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), "", 21, 19); - test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, 19); - test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, 19); - test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); +void test0() { + test(S(""), "", 0, S::npos); + test(S(""), "laenf", 0, S::npos); + test(S(""), "pqlnkmbdjo", 0, S::npos); + test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "bjaht", 1, S::npos); + test(S(""), "hjlcmgpket", 1, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); + test(S("fodgq"), "", 0, 0); + test(S("qanej"), "dfkap", 0, 0); + test(S("clbao"), "ihqrfebgad", 0, 0); + test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, S::npos); + test(S("srdfq"), "", 1, 1); + test(S("oemth"), "ikcrq", 1, 1); + test(S("cdaih"), "dmajblfhsg", 1, 0); + test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, S::npos); + test(S("cshmd"), "", 2, 2); + test(S("lhcdo"), "oebqi", 2, 2); + test(S("qnsoh"), "kojhpmbsfe", 2, 1); + test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, S::npos); + test(S("fmtsp"), "", 4, 4); + test(S("khbpm"), "aobjd", 4, 4); + test(S("pbsji"), "pcbahntsje", 4, 4); + test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, S::npos); + test(S("eqmpa"), "", 5, 4); + test(S("omigs"), "kocgb", 5, 4); + test(S("onmje"), "fbslrjiqkm", 5, 4); + test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, S::npos); + test(S("schfa"), "", 6, 4); + test(S("igdsc"), "qngpd", 6, 4); + test(S("brqgo"), "rodhqklgmb", 6, S::npos); + test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, S::npos); + test(S("hcjitbfapl"), "", 0, 0); + test(S("daiprenocl"), "ashjd", 0, S::npos); + test(S("litpcfdghe"), "mgojkldsqh", 0, S::npos); + test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, S::npos); + test(S("qpghtfbaji"), "", 1, 1); + test(S("gfshlcmdjr"), "nadkh", 1, 1); + test(S("nkodajteqp"), "ofdrqmkebl", 1, 0); + test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, S::npos); + test(S("crnklpmegd"), "", 5, 5); + test(S("jsbtafedoc"), "prqgn", 5, 5); + test(S("qnmodrtkeb"), "pejafmnokr", 5, 4); + test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, S::npos); + test(S("lmofqdhpki"), "", 9, 9); + test(S("hnefkqimca"), "rtjpa", 9, 8); + test(S("drtasbgmfp"), "ktsrmnqagd", 9, 9); + test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, S::npos); + test(S("elgofjmbrq"), "", 10, 9); + test(S("mjqdgalkpc"), "dplqa", 10, 9); + test(S("kthqnfcerm"), "dkacjoptns", 10, 9); + test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, S::npos); + test(S("eqsgalomhb"), "", 11, 9); + test(S("akiteljmoh"), "lofbc", 11, 9); + test(S("hlbdfreqjo"), "astoegbfpn", 11, 8); + test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), "", 0, 0); + test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, 0); + test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, S::npos); + test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), "", 1, 1); + test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 0); + test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), "", 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 9); + test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 9); + test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, S::npos); + test(S("niptglfbosehkamrdqcj"), "", 19, 19); + test(S("copqdhstbingamjfkler"), "djkqc", 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 16); + test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), "", 20, 19); + test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, 18); + test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, 19); + test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), "", 21, 19); + test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, 19); + test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, 19); + test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, S::npos); } template -void test1() -{ - test(S(""), "", S::npos); - test(S(""), "laenf", S::npos); - test(S(""), "pqlnkmbdjo", S::npos); - test(S(""), "qkamfogpnljdcshbreti", S::npos); - test(S("nhmko"), "", 4); - test(S("lahfb"), "irkhs", 4); - test(S("gmfhd"), "kantesmpgj", 4); - test(S("odaft"), "oknlrstdpiqmjbaghcfe", S::npos); - test(S("eolhfgpjqk"), "", 9); - test(S("nbatdlmekr"), "bnrpe", 8); - test(S("jdmciepkaq"), "jtdaefblso", 9); - test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", S::npos); - test(S("gprdcokbnjhlsfmtieqa"), "", 19); - test(S("qjghlnftcaismkropdeb"), "bjaht", 18); - test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 17); - test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos); +void test1() { + test(S(""), "", S::npos); + test(S(""), "laenf", S::npos); + test(S(""), "pqlnkmbdjo", S::npos); + test(S(""), "qkamfogpnljdcshbreti", S::npos); + test(S("nhmko"), "", 4); + test(S("lahfb"), "irkhs", 4); + test(S("gmfhd"), "kantesmpgj", 4); + test(S("odaft"), "oknlrstdpiqmjbaghcfe", S::npos); + test(S("eolhfgpjqk"), "", 9); + test(S("nbatdlmekr"), "bnrpe", 8); + test(S("jdmciepkaq"), "jtdaefblso", 9); + test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", S::npos); + test(S("gprdcokbnjhlsfmtieqa"), "", 19); + test(S("qjghlnftcaismkropdeb"), "bjaht", 18); + test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 17); + test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", S::npos); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_last_not_of( "", 0) == SV::npos, "" ); - static_assert (sv1.find_last_not_of( "irkhs", 5) == SV::npos, "" ); - static_assert (sv2.find_last_not_of( "", 0) == 0, "" ); - static_assert (sv2.find_last_not_of( "gfsrt", 5) == 4, "" ); - static_assert (sv2.find_last_not_of( "lecar", 5) == 3, "" ); - } + static_assert(sv1.find_last_not_of("", 0) == SV::npos, ""); + static_assert(sv1.find_last_not_of("irkhs", 5) == SV::npos, ""); + static_assert(sv2.find_last_not_of("", 0) == 0, ""); + static_assert(sv2.find_last_not_of("gfsrt", 5) == 4, ""); + static_assert(sv2.find_last_not_of("lecar", 5) == 3, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_pointer_size_size.pass.cpp @@ -19,378 +19,374 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos, n)); - assert(s.find_last_not_of(str, pos, n) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +void test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos, n)); + assert(s.find_last_not_of(str, pos, n) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -void test0() -{ - test(S(""), "", 0, 0, S::npos); - test(S(""), "irkhs", 0, 0, S::npos); - test(S(""), "kante", 0, 1, S::npos); - test(S(""), "oknlr", 0, 2, S::npos); - test(S(""), "pcdro", 0, 4, S::npos); - test(S(""), "bnrpe", 0, 5, S::npos); - test(S(""), "jtdaefblso", 0, 0, S::npos); - test(S(""), "oselktgbca", 0, 1, S::npos); - test(S(""), "eqgaplhckj", 0, 5, S::npos); - test(S(""), "bjahtcmnlp", 0, 9, S::npos); - test(S(""), "hjlcmgpket", 0, 10, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); - test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); - test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); - test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); - test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "lbtqd", 1, 0, S::npos); - test(S(""), "tboim", 1, 1, S::npos); - test(S(""), "slcer", 1, 2, S::npos); - test(S(""), "cbjfs", 1, 4, S::npos); - test(S(""), "aqibs", 1, 5, S::npos); - test(S(""), "gtfblmqinc", 1, 0, S::npos); - test(S(""), "mkqpbtdalg", 1, 1, S::npos); - test(S(""), "kphatlimcd", 1, 5, S::npos); - test(S(""), "pblasqogic", 1, 9, S::npos); - test(S(""), "arosdhcfme", 1, 10, S::npos); - test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); - test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); - test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); - test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); - test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); - test(S("eaint"), "", 0, 0, 0); - test(S("binja"), "gfsrt", 0, 0, 0); - test(S("latkm"), "pfsoc", 0, 1, 0); - test(S("lecfr"), "tpflm", 0, 2, 0); - test(S("eqkst"), "sgkec", 0, 4, S::npos); - test(S("cdafr"), "romds", 0, 5, 0); - test(S("prbhe"), "qhjistlgmr", 0, 0, 0); - test(S("lbisk"), "pedfirsglo", 0, 1, 0); - test(S("hrlpd"), "aqcoslgrmk", 0, 5, 0); - test(S("ehmja"), "dabckmepqj", 0, 9, S::npos); - test(S("mhqgd"), "pqscrjthli", 0, 10, 0); - test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0); - test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0); - test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0); - test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos); - test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos); - test(S("clrgb"), "", 1, 0, 1); - test(S("tjmek"), "osmia", 1, 0, 1); - test(S("bgstp"), "ckonl", 1, 1, 1); - test(S("hstrk"), "ilcaj", 1, 2, 1); - test(S("kmspj"), "lasiq", 1, 4, 1); - test(S("tjboh"), "kfqmr", 1, 5, 1); - test(S("ilbcj"), "klnitfaobg", 1, 0, 1); - test(S("jkngf"), "gjhmdlqikp", 1, 1, 1); - test(S("gfcql"), "skbgtahqej", 1, 5, 1); - test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1); - test(S("bthpg"), "bjgfmnlkio", 1, 10, 1); - test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1); - test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1); - test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, S::npos); - test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos); - test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos); - test(S("ndrhl"), "", 2, 0, 2); - test(S("mrecp"), "otkgb", 2, 0, 2); - test(S("qlasf"), "cqsjl", 2, 1, 2); - test(S("smaqd"), "dpifl", 2, 2, 2); - test(S("hjeni"), "oapht", 2, 4, 2); - test(S("ocmfj"), "cifts", 2, 5, 2); - test(S("hmftq"), "nmsckbgalo", 2, 0, 2); - test(S("fklad"), "tpksqhamle", 2, 1, 2); - test(S("dirnm"), "tpdrchmkji", 2, 5, 1); - test(S("hrgdc"), "ijagfkblst", 2, 9, 1); - test(S("ifakg"), "kpocsignjb", 2, 10, 2); - test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2); - test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2); - test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2); - test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos); - test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos); - test(S("cjgao"), "", 4, 0, 4); - test(S("kjplq"), "mabns", 4, 0, 4); - test(S("herni"), "bdnrp", 4, 1, 4); - test(S("tadrb"), "scidp", 4, 2, 4); - test(S("pkfeo"), "agbjl", 4, 4, 4); - test(S("hoser"), "jfmpr", 4, 5, 3); - test(S("kgrsp"), "rbpefghsmj", 4, 0, 4); - test(S("pgejb"), "apsfntdoqc", 4, 1, 4); - test(S("thlnq"), "ndkjeisgcl", 4, 5, 4); - test(S("nbmit"), "rnfpqatdeo", 4, 9, 3); - test(S("jgmib"), "bntjlqrfik", 4, 10, 2); - test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4); - test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4); - test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 3); - test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 2); - test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos); - test(S("klopi"), "", 5, 0, 4); - test(S("dajhn"), "psthd", 5, 0, 4); - test(S("jbgno"), "rpmjd", 5, 1, 4); - test(S("hkjae"), "dfsmk", 5, 2, 4); +void test0() { + test(S(""), "", 0, 0, S::npos); + test(S(""), "irkhs", 0, 0, S::npos); + test(S(""), "kante", 0, 1, S::npos); + test(S(""), "oknlr", 0, 2, S::npos); + test(S(""), "pcdro", 0, 4, S::npos); + test(S(""), "bnrpe", 0, 5, S::npos); + test(S(""), "jtdaefblso", 0, 0, S::npos); + test(S(""), "oselktgbca", 0, 1, S::npos); + test(S(""), "eqgaplhckj", 0, 5, S::npos); + test(S(""), "bjahtcmnlp", 0, 9, S::npos); + test(S(""), "hjlcmgpket", 0, 10, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); + test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); + test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); + test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); + test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "lbtqd", 1, 0, S::npos); + test(S(""), "tboim", 1, 1, S::npos); + test(S(""), "slcer", 1, 2, S::npos); + test(S(""), "cbjfs", 1, 4, S::npos); + test(S(""), "aqibs", 1, 5, S::npos); + test(S(""), "gtfblmqinc", 1, 0, S::npos); + test(S(""), "mkqpbtdalg", 1, 1, S::npos); + test(S(""), "kphatlimcd", 1, 5, S::npos); + test(S(""), "pblasqogic", 1, 9, S::npos); + test(S(""), "arosdhcfme", 1, 10, S::npos); + test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); + test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); + test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); + test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); + test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); + test(S("eaint"), "", 0, 0, 0); + test(S("binja"), "gfsrt", 0, 0, 0); + test(S("latkm"), "pfsoc", 0, 1, 0); + test(S("lecfr"), "tpflm", 0, 2, 0); + test(S("eqkst"), "sgkec", 0, 4, S::npos); + test(S("cdafr"), "romds", 0, 5, 0); + test(S("prbhe"), "qhjistlgmr", 0, 0, 0); + test(S("lbisk"), "pedfirsglo", 0, 1, 0); + test(S("hrlpd"), "aqcoslgrmk", 0, 5, 0); + test(S("ehmja"), "dabckmepqj", 0, 9, S::npos); + test(S("mhqgd"), "pqscrjthli", 0, 10, 0); + test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, 0); + test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, 0); + test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, 0); + test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, S::npos); + test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, S::npos); + test(S("clrgb"), "", 1, 0, 1); + test(S("tjmek"), "osmia", 1, 0, 1); + test(S("bgstp"), "ckonl", 1, 1, 1); + test(S("hstrk"), "ilcaj", 1, 2, 1); + test(S("kmspj"), "lasiq", 1, 4, 1); + test(S("tjboh"), "kfqmr", 1, 5, 1); + test(S("ilbcj"), "klnitfaobg", 1, 0, 1); + test(S("jkngf"), "gjhmdlqikp", 1, 1, 1); + test(S("gfcql"), "skbgtahqej", 1, 5, 1); + test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 1); + test(S("bthpg"), "bjgfmnlkio", 1, 10, 1); + test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, 1); + test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, 1); + test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, S::npos); + test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, S::npos); + test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, S::npos); + test(S("ndrhl"), "", 2, 0, 2); + test(S("mrecp"), "otkgb", 2, 0, 2); + test(S("qlasf"), "cqsjl", 2, 1, 2); + test(S("smaqd"), "dpifl", 2, 2, 2); + test(S("hjeni"), "oapht", 2, 4, 2); + test(S("ocmfj"), "cifts", 2, 5, 2); + test(S("hmftq"), "nmsckbgalo", 2, 0, 2); + test(S("fklad"), "tpksqhamle", 2, 1, 2); + test(S("dirnm"), "tpdrchmkji", 2, 5, 1); + test(S("hrgdc"), "ijagfkblst", 2, 9, 1); + test(S("ifakg"), "kpocsignjb", 2, 10, 2); + test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, 2); + test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, 2); + test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 2); + test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, S::npos); + test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, S::npos); + test(S("cjgao"), "", 4, 0, 4); + test(S("kjplq"), "mabns", 4, 0, 4); + test(S("herni"), "bdnrp", 4, 1, 4); + test(S("tadrb"), "scidp", 4, 2, 4); + test(S("pkfeo"), "agbjl", 4, 4, 4); + test(S("hoser"), "jfmpr", 4, 5, 3); + test(S("kgrsp"), "rbpefghsmj", 4, 0, 4); + test(S("pgejb"), "apsfntdoqc", 4, 1, 4); + test(S("thlnq"), "ndkjeisgcl", 4, 5, 4); + test(S("nbmit"), "rnfpqatdeo", 4, 9, 3); + test(S("jgmib"), "bntjlqrfik", 4, 10, 2); + test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, 4); + test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, 4); + test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 3); + test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 2); + test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, S::npos); + test(S("klopi"), "", 5, 0, 4); + test(S("dajhn"), "psthd", 5, 0, 4); + test(S("jbgno"), "rpmjd", 5, 1, 4); + test(S("hkjae"), "dfsmk", 5, 2, 4); } template -void test1() -{ - test(S("gbhqo"), "skqne", 5, 4, 4); - test(S("ktdor"), "kipnf", 5, 5, 4); - test(S("ldprn"), "hmrnqdgifl", 5, 0, 4); - test(S("egmjk"), "fsmjcdairn", 5, 1, 4); - test(S("armql"), "pcdgltbrfj", 5, 5, 3); - test(S("cdhjo"), "aekfctpirg", 5, 9, 4); - test(S("jcons"), "ledihrsgpf", 5, 10, 3); - test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, 4); - test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, 4); - test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 1); - test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 2); - test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); - test(S("gajqn"), "", 6, 0, 4); - test(S("stedk"), "hrnat", 6, 0, 4); - test(S("tjkaf"), "gsqdt", 6, 1, 4); - test(S("dthpe"), "bspkd", 6, 2, 4); - test(S("klhde"), "ohcmb", 6, 4, 4); - test(S("bhlki"), "heatr", 6, 5, 4); - test(S("lqmoh"), "pmblckedfn", 6, 0, 4); - test(S("mtqin"), "aceqmsrbik", 6, 1, 4); - test(S("dpqbr"), "lmbtdehjrn", 6, 5, 4); - test(S("kdhmo"), "teqmcrlgib", 6, 9, 4); - test(S("jblqp"), "njolbmspac", 6, 10, 3); - test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, 4); - test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, 4); - test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 1); - test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); - test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); - test(S("jnkrfhotgl"), "", 0, 0, 0); - test(S("dltjfngbko"), "rqegt", 0, 0, 0); - test(S("bmjlpkiqde"), "dashm", 0, 1, 0); - test(S("skrflobnqm"), "jqirk", 0, 2, 0); - test(S("jkpldtshrm"), "rckeg", 0, 4, 0); - test(S("ghasdbnjqo"), "jscie", 0, 5, 0); - test(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0); - test(S("ikthdgcamf"), "gdicosleja", 0, 1, 0); - test(S("pcofgeniam"), "qcpjibosfl", 0, 5, S::npos); - test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, S::npos); - test(S("itphbqsker"), "dtablcrseo", 0, 10, 0); - test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0); - test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0); - test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0); - test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, S::npos); - test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos); - test(S("shbcqnmoar"), "", 1, 0, 1); - test(S("bdoshlmfin"), "ontrs", 1, 0, 1); - test(S("khfrebnsgq"), "pfkna", 1, 1, 1); - test(S("getcrsaoji"), "ekosa", 1, 2, 0); - test(S("fjiknedcpq"), "anqhk", 1, 4, 1); - test(S("tkejgnafrm"), "jekca", 1, 5, 0); - test(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1); - test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1); - test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 0); - test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1); - test(S("cigfqkated"), "sqcflrgtim", 1, 10, S::npos); - test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1); - test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1); - test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, S::npos); - test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, S::npos); - test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos); - test(S("ectnhskflp"), "", 5, 0, 5); - test(S("fgtianblpq"), "pijag", 5, 0, 5); - test(S("mfeqklirnh"), "jrckd", 5, 1, 5); - test(S("astedncjhk"), "qcloh", 5, 2, 5); - test(S("fhlqgcajbr"), "thlmp", 5, 4, 5); - test(S("epfhocmdng"), "qidmo", 5, 5, 5); - test(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5); - test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 4); - test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5); - test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 3); - test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5); - test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5); - test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5); - test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 1); - test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, S::npos); - test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos); - test(S("shoiedtcjb"), "", 9, 0, 9); - test(S("ebcinjgads"), "tqbnh", 9, 0, 9); - test(S("dqmregkcfl"), "akmle", 9, 1, 9); - test(S("ngcrieqajf"), "iqfkm", 9, 2, 9); - test(S("qosmilgnjb"), "tqjsr", 9, 4, 9); - test(S("ikabsjtdfl"), "jplqg", 9, 5, 8); - test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9); - test(S("fdnplotmgh"), "morkglpesn", 9, 1, 9); - test(S("fdbicojerm"), "dmicerngat", 9, 5, 8); - test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9); - test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9); - test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9); - test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9); - test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9); - test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 3); - test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos); - test(S("ncjpmaekbs"), "", 10, 0, 9); - test(S("hlbosgmrak"), "hpmsd", 10, 0, 9); - test(S("pqfhsgilen"), "qnpor", 10, 1, 9); - test(S("gqtjsbdckh"), "otdma", 10, 2, 9); - test(S("cfkqpjlegi"), "efhjg", 10, 4, 9); - test(S("beanrfodgj"), "odpte", 10, 5, 9); - test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, 9); - test(S("iomkfthagj"), "oaklidrbqg", 10, 1, 9); +void test1() { + test(S("gbhqo"), "skqne", 5, 4, 4); + test(S("ktdor"), "kipnf", 5, 5, 4); + test(S("ldprn"), "hmrnqdgifl", 5, 0, 4); + test(S("egmjk"), "fsmjcdairn", 5, 1, 4); + test(S("armql"), "pcdgltbrfj", 5, 5, 3); + test(S("cdhjo"), "aekfctpirg", 5, 9, 4); + test(S("jcons"), "ledihrsgpf", 5, 10, 3); + test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, 4); + test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, 4); + test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 1); + test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 2); + test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, S::npos); + test(S("gajqn"), "", 6, 0, 4); + test(S("stedk"), "hrnat", 6, 0, 4); + test(S("tjkaf"), "gsqdt", 6, 1, 4); + test(S("dthpe"), "bspkd", 6, 2, 4); + test(S("klhde"), "ohcmb", 6, 4, 4); + test(S("bhlki"), "heatr", 6, 5, 4); + test(S("lqmoh"), "pmblckedfn", 6, 0, 4); + test(S("mtqin"), "aceqmsrbik", 6, 1, 4); + test(S("dpqbr"), "lmbtdehjrn", 6, 5, 4); + test(S("kdhmo"), "teqmcrlgib", 6, 9, 4); + test(S("jblqp"), "njolbmspac", 6, 10, 3); + test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, 4); + test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, 4); + test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 1); + test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, S::npos); + test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, S::npos); + test(S("jnkrfhotgl"), "", 0, 0, 0); + test(S("dltjfngbko"), "rqegt", 0, 0, 0); + test(S("bmjlpkiqde"), "dashm", 0, 1, 0); + test(S("skrflobnqm"), "jqirk", 0, 2, 0); + test(S("jkpldtshrm"), "rckeg", 0, 4, 0); + test(S("ghasdbnjqo"), "jscie", 0, 5, 0); + test(S("igrkhpbqjt"), "efsphndliq", 0, 0, 0); + test(S("ikthdgcamf"), "gdicosleja", 0, 1, 0); + test(S("pcofgeniam"), "qcpjibosfl", 0, 5, S::npos); + test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, S::npos); + test(S("itphbqsker"), "dtablcrseo", 0, 10, 0); + test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, 0); + test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, 0); + test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, 0); + test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, S::npos); + test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, S::npos); + test(S("shbcqnmoar"), "", 1, 0, 1); + test(S("bdoshlmfin"), "ontrs", 1, 0, 1); + test(S("khfrebnsgq"), "pfkna", 1, 1, 1); + test(S("getcrsaoji"), "ekosa", 1, 2, 0); + test(S("fjiknedcpq"), "anqhk", 1, 4, 1); + test(S("tkejgnafrm"), "jekca", 1, 5, 0); + test(S("jnakolqrde"), "ikemsjgacf", 1, 0, 1); + test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, 1); + test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 0); + test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 1); + test(S("cigfqkated"), "sqcflrgtim", 1, 10, S::npos); + test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, 1); + test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, 1); + test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, S::npos); + test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, S::npos); + test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, S::npos); + test(S("ectnhskflp"), "", 5, 0, 5); + test(S("fgtianblpq"), "pijag", 5, 0, 5); + test(S("mfeqklirnh"), "jrckd", 5, 1, 5); + test(S("astedncjhk"), "qcloh", 5, 2, 5); + test(S("fhlqgcajbr"), "thlmp", 5, 4, 5); + test(S("epfhocmdng"), "qidmo", 5, 5, 5); + test(S("apcnsibger"), "lnegpsjqrd", 5, 0, 5); + test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 4); + test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, 5); + test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 3); + test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 5); + test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, 5); + test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, 5); + test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 1); + test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, S::npos); + test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, S::npos); + test(S("shoiedtcjb"), "", 9, 0, 9); + test(S("ebcinjgads"), "tqbnh", 9, 0, 9); + test(S("dqmregkcfl"), "akmle", 9, 1, 9); + test(S("ngcrieqajf"), "iqfkm", 9, 2, 9); + test(S("qosmilgnjb"), "tqjsr", 9, 4, 9); + test(S("ikabsjtdfl"), "jplqg", 9, 5, 8); + test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, 9); + test(S("fdnplotmgh"), "morkglpesn", 9, 1, 9); + test(S("fdbicojerm"), "dmicerngat", 9, 5, 8); + test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 9); + test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 9); + test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, 9); + test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 9); + test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 9); + test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 3); + test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, S::npos); + test(S("ncjpmaekbs"), "", 10, 0, 9); + test(S("hlbosgmrak"), "hpmsd", 10, 0, 9); + test(S("pqfhsgilen"), "qnpor", 10, 1, 9); + test(S("gqtjsbdckh"), "otdma", 10, 2, 9); + test(S("cfkqpjlegi"), "efhjg", 10, 4, 9); + test(S("beanrfodgj"), "odpte", 10, 5, 9); + test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, 9); + test(S("iomkfthagj"), "oaklidrbqg", 10, 1, 9); } template -void test2() -{ - test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 8); - test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 9); - test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 8); - test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, 9); - test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 9); - test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 7); - test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 5); - test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); - test(S("cqjohampgd"), "", 11, 0, 9); - test(S("hobitmpsan"), "aocjb", 11, 0, 9); - test(S("tjehkpsalm"), "jbrnk", 11, 1, 9); - test(S("ngfbojitcl"), "tqedg", 11, 2, 9); - test(S("rcfkdbhgjo"), "nqskp", 11, 4, 9); - test(S("qghptonrea"), "eaqkl", 11, 5, 7); - test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, 9); - test(S("hlmgabenti"), "lsftgajqpm", 11, 1, 9); - test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 9); - test(S("jqedtkornm"), "shkncmiaqj", 11, 9, 7); - test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 8); - test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, 9); - test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, 9); - test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 8); - test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); - test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); - test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0); - test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0); - test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0); - test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0); - test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0); - test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0); - test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0); - test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0); - test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0); - test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0); - test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0); - test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0); - test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0); - test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0); - test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, S::npos); - test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos); - test(S("febhmqtjanokscdirpgl"), "", 1, 0, 1); - test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1); - test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1); - test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 0); - test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 0); - test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1); - test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1); - test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1); - test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1); - test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 0); - test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 0); - test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1); - test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1); - test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 0); - test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, S::npos); - test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos); - test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10); - test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10); - test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10); - test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10); - test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 9); - test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10); - test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10); - test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10); - test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10); - test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 8); - test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10); - test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10); - test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10); - test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 8); - test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, S::npos); - test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos); - test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19); - test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19); - test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19); - test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19); - test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19); - test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 17); - test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19); - test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19); - test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19); - test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19); - test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19); - test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19); - test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19); - test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 18); - test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 7); - test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos); - test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, 19); - test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, 19); - test(S("grkpahljcftesdmonqib"), "odife", 20, 1, 19); - test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 19); - test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 18); - test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 18); - test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, 19); - test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 19); - test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 18); - test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 18); - test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 17); - test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, 19); +void test2() { + test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 8); + test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 9); + test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 8); + test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, 9); + test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 9); + test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 7); + test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 5); + test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, S::npos); + test(S("cqjohampgd"), "", 11, 0, 9); + test(S("hobitmpsan"), "aocjb", 11, 0, 9); + test(S("tjehkpsalm"), "jbrnk", 11, 1, 9); + test(S("ngfbojitcl"), "tqedg", 11, 2, 9); + test(S("rcfkdbhgjo"), "nqskp", 11, 4, 9); + test(S("qghptonrea"), "eaqkl", 11, 5, 7); + test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, 9); + test(S("hlmgabenti"), "lsftgajqpm", 11, 1, 9); + test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 9); + test(S("jqedtkornm"), "shkncmiaqj", 11, 9, 7); + test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 8); + test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, 9); + test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, 9); + test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 8); + test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, S::npos); + test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, S::npos); + test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, 0); + test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, 0); + test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, 0); + test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, 0); + test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, 0); + test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, 0); + test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, 0); + test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, 0); + test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, 0); + test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, 0); + test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, 0); + test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, 0); + test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, 0); + test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, 0); + test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, S::npos); + test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, S::npos); + test(S("febhmqtjanokscdirpgl"), "", 1, 0, 1); + test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, 1); + test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, 1); + test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 0); + test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 0); + test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, 1); + test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, 1); + test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, 1); + test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, 1); + test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 0); + test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 0); + test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, 1); + test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, 1); + test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 0); + test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, S::npos); + test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, S::npos); + test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, 10); + test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, 10); + test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, 10); + test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 10); + test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 9); + test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 10); + test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, 10); + test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 10); + test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 10); + test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 8); + test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 10); + test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, 10); + test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, 10); + test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 8); + test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, S::npos); + test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, S::npos); + test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, 19); + test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, 19); + test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 19); + test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 19); + test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 19); + test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 17); + test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, 19); + test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 19); + test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 19); + test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 19); + test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 19); + test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, 19); + test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 19); + test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 18); + test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 7); + test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, S::npos); + test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, 19); + test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, 19); + test(S("grkpahljcftesdmonqib"), "odife", 20, 1, 19); + test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 19); + test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 18); + test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 18); + test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, 19); + test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 19); + test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 18); + test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 18); + test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 17); + test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, 19); } template -void test3() -{ - test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 19); - test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 19); - test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 1); - test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); - test(S("ecgdanriptblhjfqskom"), "", 21, 0, 19); - test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, 19); - test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 19); - test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 19); - test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 19); - test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 19); - test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, 19); - test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 19); - test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 18); - test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 19); - test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 19); - test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, 19); - test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 19); - test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 19); - test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 7); - test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); +void test3() { + test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 19); + test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 19); + test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 1); + test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, S::npos); + test(S("ecgdanriptblhjfqskom"), "", 21, 0, 19); + test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, 19); + test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 19); + test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 19); + test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 19); + test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 19); + test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, 19); + test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 19); + test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 18); + test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 19); + test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 19); + test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, 19); + test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 19); + test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 19); + test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 7); + test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, S::npos); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); test2(); test3(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_last_not_of( "", 0, 0) == SV::npos, "" ); - static_assert (sv1.find_last_not_of( "irkhs", 0, 5) == SV::npos, "" ); - static_assert (sv2.find_last_not_of( "", 0, 0) == 0, "" ); - static_assert (sv2.find_last_not_of( "gfsrt", 5, 0) == 4, "" ); - static_assert (sv2.find_last_not_of( "lecar", 5, 0) == 4, "" ); - } + static_assert(sv1.find_last_not_of("", 0, 0) == SV::npos, ""); + static_assert(sv1.find_last_not_of("irkhs", 0, 5) == SV::npos, ""); + static_assert(sv2.find_last_not_of("", 0, 0) == 0, ""); + static_assert(sv2.find_last_not_of("gfsrt", 5, 0) == 4, ""); + static_assert(sv2.find_last_not_of("lecar", 5, 0) == 4, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_not_of_string_view_size.pass.cpp @@ -18,138 +18,131 @@ #include "test_macros.h" template -void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos)); - assert(s.find_last_not_of(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str, pos)); + assert(s.find_last_not_of(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str)); - assert(s.find_last_not_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_not_of(str)); + assert(s.find_last_not_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -void test0() -{ - test(S(""), S(""), 0, S::npos); - test(S(""), S("laenf"), 0, S::npos); - test(S(""), S("pqlnkmbdjo"), 0, S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("bjaht"), 1, S::npos); - test(S(""), S("hjlcmgpket"), 1, S::npos); - test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), S(""), 0, 0); - test(S("qanej"), S("dfkap"), 0, 0); - test(S("clbao"), S("ihqrfebgad"), 0, 0); - test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, S::npos); - test(S("srdfq"), S(""), 1, 1); - test(S("oemth"), S("ikcrq"), 1, 1); - test(S("cdaih"), S("dmajblfhsg"), 1, 0); - test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, S::npos); - test(S("cshmd"), S(""), 2, 2); - test(S("lhcdo"), S("oebqi"), 2, 2); - test(S("qnsoh"), S("kojhpmbsfe"), 2, 1); - test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, S::npos); - test(S("fmtsp"), S(""), 4, 4); - test(S("khbpm"), S("aobjd"), 4, 4); - test(S("pbsji"), S("pcbahntsje"), 4, 4); - test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, S::npos); - test(S("eqmpa"), S(""), 5, 4); - test(S("omigs"), S("kocgb"), 5, 4); - test(S("onmje"), S("fbslrjiqkm"), 5, 4); - test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); - test(S("schfa"), S(""), 6, 4); - test(S("igdsc"), S("qngpd"), 6, 4); - test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); - test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); - test(S("hcjitbfapl"), S(""), 0, 0); - test(S("daiprenocl"), S("ashjd"), 0, S::npos); - test(S("litpcfdghe"), S("mgojkldsqh"), 0, S::npos); - test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, S::npos); - test(S("qpghtfbaji"), S(""), 1, 1); - test(S("gfshlcmdjr"), S("nadkh"), 1, 1); - test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 0); - test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, S::npos); - test(S("crnklpmegd"), S(""), 5, 5); - test(S("jsbtafedoc"), S("prqgn"), 5, 5); - test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 4); - test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, S::npos); - test(S("lmofqdhpki"), S(""), 9, 9); - test(S("hnefkqimca"), S("rtjpa"), 9, 8); - test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 9); - test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, S::npos); - test(S("elgofjmbrq"), S(""), 10, 9); - test(S("mjqdgalkpc"), S("dplqa"), 10, 9); - test(S("kthqnfcerm"), S("dkacjoptns"), 10, 9); - test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); - test(S("eqsgalomhb"), S(""), 11, 9); - test(S("akiteljmoh"), S("lofbc"), 11, 9); - test(S("hlbdfreqjo"), S("astoegbfpn"), 11, 8); - test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); - test(S("snafbdlghrjkpqtoceim"), S(""), 0, 0); - test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 0); - test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, S::npos); - test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, S::npos); - test(S("jlnkraeodhcspfgbqitm"), S(""), 1, 1); - test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 1); - test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 0); - test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, S::npos); - test(S("hdpkobnsalmcfijregtq"), S(""), 10, 10); - test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 9); - test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 9); - test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, S::npos); - test(S("niptglfbosehkamrdqcj"), S(""), 19, 19); - test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 19); - test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 16); - test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, S::npos); - test(S("eaintpchlqsbdgrkjofm"), S(""), 20, 19); - test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, 18); - test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, 19); - test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); - test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, 19); - test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, 19); - test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, 19); - test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); +void test0() { + test(S(""), S(""), 0, S::npos); + test(S(""), S("laenf"), 0, S::npos); + test(S(""), S("pqlnkmbdjo"), 0, S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("bjaht"), 1, S::npos); + test(S(""), S("hjlcmgpket"), 1, S::npos); + test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), S(""), 0, 0); + test(S("qanej"), S("dfkap"), 0, 0); + test(S("clbao"), S("ihqrfebgad"), 0, 0); + test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, S::npos); + test(S("srdfq"), S(""), 1, 1); + test(S("oemth"), S("ikcrq"), 1, 1); + test(S("cdaih"), S("dmajblfhsg"), 1, 0); + test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, S::npos); + test(S("cshmd"), S(""), 2, 2); + test(S("lhcdo"), S("oebqi"), 2, 2); + test(S("qnsoh"), S("kojhpmbsfe"), 2, 1); + test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, S::npos); + test(S("fmtsp"), S(""), 4, 4); + test(S("khbpm"), S("aobjd"), 4, 4); + test(S("pbsji"), S("pcbahntsje"), 4, 4); + test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, S::npos); + test(S("eqmpa"), S(""), 5, 4); + test(S("omigs"), S("kocgb"), 5, 4); + test(S("onmje"), S("fbslrjiqkm"), 5, 4); + test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, S::npos); + test(S("schfa"), S(""), 6, 4); + test(S("igdsc"), S("qngpd"), 6, 4); + test(S("brqgo"), S("rodhqklgmb"), 6, S::npos); + test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, S::npos); + test(S("hcjitbfapl"), S(""), 0, 0); + test(S("daiprenocl"), S("ashjd"), 0, S::npos); + test(S("litpcfdghe"), S("mgojkldsqh"), 0, S::npos); + test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, S::npos); + test(S("qpghtfbaji"), S(""), 1, 1); + test(S("gfshlcmdjr"), S("nadkh"), 1, 1); + test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 0); + test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, S::npos); + test(S("crnklpmegd"), S(""), 5, 5); + test(S("jsbtafedoc"), S("prqgn"), 5, 5); + test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 4); + test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, S::npos); + test(S("lmofqdhpki"), S(""), 9, 9); + test(S("hnefkqimca"), S("rtjpa"), 9, 8); + test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 9); + test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, S::npos); + test(S("elgofjmbrq"), S(""), 10, 9); + test(S("mjqdgalkpc"), S("dplqa"), 10, 9); + test(S("kthqnfcerm"), S("dkacjoptns"), 10, 9); + test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, S::npos); + test(S("eqsgalomhb"), S(""), 11, 9); + test(S("akiteljmoh"), S("lofbc"), 11, 9); + test(S("hlbdfreqjo"), S("astoegbfpn"), 11, 8); + test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, S::npos); + test(S("snafbdlghrjkpqtoceim"), S(""), 0, 0); + test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, 0); + test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, S::npos); + test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, S::npos); + test(S("jlnkraeodhcspfgbqitm"), S(""), 1, 1); + test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, 1); + test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 0); + test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, S::npos); + test(S("hdpkobnsalmcfijregtq"), S(""), 10, 10); + test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 9); + test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 9); + test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, S::npos); + test(S("niptglfbosehkamrdqcj"), S(""), 19, 19); + test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 19); + test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 16); + test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, S::npos); + test(S("eaintpchlqsbdgrkjofm"), S(""), 20, 19); + test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, 18); + test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, 19); + test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, S::npos); + test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, 19); + test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, 19); + test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, 19); + test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, S::npos); } template -void test1() -{ - test(S(""), S(""), S::npos); - test(S(""), S("laenf"), S::npos); - test(S(""), S("pqlnkmbdjo"), S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), S(""), 4); - test(S("lahfb"), S("irkhs"), 4); - test(S("gmfhd"), S("kantesmpgj"), 4); - test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), S::npos); - test(S("eolhfgpjqk"), S(""), 9); - test(S("nbatdlmekr"), S("bnrpe"), 8); - test(S("jdmciepkaq"), S("jtdaefblso"), 9); - test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), S::npos); - test(S("gprdcokbnjhlsfmtieqa"), S(""), 19); - test(S("qjghlnftcaismkropdeb"), S("bjaht"), 18); - test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 17); - test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos); +void test1() { + test(S(""), S(""), S::npos); + test(S(""), S("laenf"), S::npos); + test(S(""), S("pqlnkmbdjo"), S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), S(""), 4); + test(S("lahfb"), S("irkhs"), 4); + test(S("gmfhd"), S("kantesmpgj"), 4); + test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), S::npos); + test(S("eolhfgpjqk"), S(""), 9); + test(S("nbatdlmekr"), S("bnrpe"), 8); + test(S("jdmciepkaq"), S("jtdaefblso"), 9); + test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), S::npos); + test(S("gprdcokbnjhlsfmtieqa"), S(""), 19); + test(S("qjghlnftcaismkropdeb"), S("bjaht"), 18); + test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 17); + test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), S::npos); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_char_size.pass.cpp @@ -19,29 +19,23 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(c, pos)); - assert(s.find_last_of(c, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(c, pos)); + assert(s.find_last_of(c, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(c)); - assert(s.find_last_of(c) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(c)); + assert(s.find_last_of(c) == x); + if (x != S::npos) + assert(x < s.size()); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test(S(""), 'm', 0, S::npos); test(S(""), 'm', 1, S::npos); @@ -68,20 +62,20 @@ test(S("csope"), 'm', S::npos); test(S("gfsmthlkon"), 'm', 3); test(S("laenfsbridchgotmkqpj"), 'm', 15); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_last_of( 'i', 0 ) == SV::npos, "" ); - static_assert (sv1.find_last_of( 'i', 1 ) == SV::npos, "" ); - static_assert (sv2.find_last_of( 'a', 0 ) == 0, "" ); - static_assert (sv2.find_last_of( 'a', 1 ) == 0, "" ); - static_assert (sv2.find_last_of( 'e', 5 ) == 4, "" ); - } + static_assert(sv1.find_last_of('i', 0) == SV::npos, ""); + static_assert(sv1.find_last_of('i', 1) == SV::npos, ""); + static_assert(sv2.find_last_of('a', 0) == 0, ""); + static_assert(sv2.find_last_of('a', 1) == 0, ""); + static_assert(sv2.find_last_of('e', 5) == 4, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size.pass.cpp @@ -19,152 +19,144 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos)); - assert(s.find_last_of(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +void test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos)); + assert(s.find_last_of(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str)); - assert(s.find_last_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str)); + assert(s.find_last_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -void test0() -{ - test(S(""), "", 0, S::npos); - test(S(""), "laenf", 0, S::npos); - test(S(""), "pqlnkmbdjo", 0, S::npos); - test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "bjaht", 1, S::npos); - test(S(""), "hjlcmgpket", 1, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); - test(S("fodgq"), "", 0, S::npos); - test(S("qanej"), "dfkap", 0, S::npos); - test(S("clbao"), "ihqrfebgad", 0, S::npos); - test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, 0); - test(S("srdfq"), "", 1, S::npos); - test(S("oemth"), "ikcrq", 1, S::npos); - test(S("cdaih"), "dmajblfhsg", 1, 1); - test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, 1); - test(S("cshmd"), "", 2, S::npos); - test(S("lhcdo"), "oebqi", 2, S::npos); - test(S("qnsoh"), "kojhpmbsfe", 2, 2); - test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, 2); - test(S("fmtsp"), "", 4, S::npos); - test(S("khbpm"), "aobjd", 4, 2); - test(S("pbsji"), "pcbahntsje", 4, 3); - test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, 4); - test(S("eqmpa"), "", 5, S::npos); - test(S("omigs"), "kocgb", 5, 3); - test(S("onmje"), "fbslrjiqkm", 5, 3); - test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, 4); - test(S("schfa"), "", 6, S::npos); - test(S("igdsc"), "qngpd", 6, 2); - test(S("brqgo"), "rodhqklgmb", 6, 4); - test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, 4); - test(S("hcjitbfapl"), "", 0, S::npos); - test(S("daiprenocl"), "ashjd", 0, 0); - test(S("litpcfdghe"), "mgojkldsqh", 0, 0); - test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, 0); - test(S("qpghtfbaji"), "", 1, S::npos); - test(S("gfshlcmdjr"), "nadkh", 1, S::npos); - test(S("nkodajteqp"), "ofdrqmkebl", 1, 1); - test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, 1); - test(S("crnklpmegd"), "", 5, S::npos); - test(S("jsbtafedoc"), "prqgn", 5, S::npos); - test(S("qnmodrtkeb"), "pejafmnokr", 5, 5); - test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, 5); - test(S("lmofqdhpki"), "", 9, S::npos); - test(S("hnefkqimca"), "rtjpa", 9, 9); - test(S("drtasbgmfp"), "ktsrmnqagd", 9, 7); - test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, 9); - test(S("elgofjmbrq"), "", 10, S::npos); - test(S("mjqdgalkpc"), "dplqa", 10, 8); - test(S("kthqnfcerm"), "dkacjoptns", 10, 6); - test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, 9); - test(S("eqsgalomhb"), "", 11, S::npos); - test(S("akiteljmoh"), "lofbc", 11, 8); - test(S("hlbdfreqjo"), "astoegbfpn", 11, 9); - test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, 9); - test(S("snafbdlghrjkpqtoceim"), "", 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, S::npos); - test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 0); - test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, 0); - test(S("jlnkraeodhcspfgbqitm"), "", 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, S::npos); - test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 1); - test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, 1); - test(S("hdpkobnsalmcfijregtq"), "", 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 10); - test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, 10); - test(S("niptglfbosehkamrdqcj"), "", 19, S::npos); - test(S("copqdhstbingamjfkler"), "djkqc", 19, 16); - test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 19); - test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, 19); - test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, 19); - test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, 18); - test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, 19); - test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); - test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, 12); - test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, 17); - test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, 19); +void test0() { + test(S(""), "", 0, S::npos); + test(S(""), "laenf", 0, S::npos); + test(S(""), "pqlnkmbdjo", 0, S::npos); + test(S(""), "qkamfogpnljdcshbreti", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "bjaht", 1, S::npos); + test(S(""), "hjlcmgpket", 1, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 1, S::npos); + test(S("fodgq"), "", 0, S::npos); + test(S("qanej"), "dfkap", 0, S::npos); + test(S("clbao"), "ihqrfebgad", 0, S::npos); + test(S("mekdn"), "ngtjfcalbseiqrphmkdo", 0, 0); + test(S("srdfq"), "", 1, S::npos); + test(S("oemth"), "ikcrq", 1, S::npos); + test(S("cdaih"), "dmajblfhsg", 1, 1); + test(S("qohtk"), "oqftjhdmkgsblacenirp", 1, 1); + test(S("cshmd"), "", 2, S::npos); + test(S("lhcdo"), "oebqi", 2, S::npos); + test(S("qnsoh"), "kojhpmbsfe", 2, 2); + test(S("pkrof"), "acbsjqogpltdkhinfrem", 2, 2); + test(S("fmtsp"), "", 4, S::npos); + test(S("khbpm"), "aobjd", 4, 2); + test(S("pbsji"), "pcbahntsje", 4, 3); + test(S("mprdj"), "fhepcrntkoagbmldqijs", 4, 4); + test(S("eqmpa"), "", 5, S::npos); + test(S("omigs"), "kocgb", 5, 3); + test(S("onmje"), "fbslrjiqkm", 5, 3); + test(S("oqmrj"), "jeidpcmalhfnqbgtrsko", 5, 4); + test(S("schfa"), "", 6, S::npos); + test(S("igdsc"), "qngpd", 6, 2); + test(S("brqgo"), "rodhqklgmb", 6, 4); + test(S("tnrph"), "thdjgafrlbkoiqcspmne", 6, 4); + test(S("hcjitbfapl"), "", 0, S::npos); + test(S("daiprenocl"), "ashjd", 0, 0); + test(S("litpcfdghe"), "mgojkldsqh", 0, 0); + test(S("aidjksrolc"), "imqnaghkfrdtlopbjesc", 0, 0); + test(S("qpghtfbaji"), "", 1, S::npos); + test(S("gfshlcmdjr"), "nadkh", 1, S::npos); + test(S("nkodajteqp"), "ofdrqmkebl", 1, 1); + test(S("gbmetiprqd"), "bdfjqgatlksriohemnpc", 1, 1); + test(S("crnklpmegd"), "", 5, S::npos); + test(S("jsbtafedoc"), "prqgn", 5, S::npos); + test(S("qnmodrtkeb"), "pejafmnokr", 5, 5); + test(S("cpebqsfmnj"), "odnqkgijrhabfmcestlp", 5, 5); + test(S("lmofqdhpki"), "", 9, S::npos); + test(S("hnefkqimca"), "rtjpa", 9, 9); + test(S("drtasbgmfp"), "ktsrmnqagd", 9, 7); + test(S("lsaijeqhtr"), "rtdhgcisbnmoaqkfpjle", 9, 9); + test(S("elgofjmbrq"), "", 10, S::npos); + test(S("mjqdgalkpc"), "dplqa", 10, 8); + test(S("kthqnfcerm"), "dkacjoptns", 10, 6); + test(S("dfsjhanorc"), "hqfimtrgnbekpdcsjalo", 10, 9); + test(S("eqsgalomhb"), "", 11, S::npos); + test(S("akiteljmoh"), "lofbc", 11, 8); + test(S("hlbdfreqjo"), "astoegbfpn", 11, 9); + test(S("taqobhlerg"), "pdgreqomsncafklhtibj", 11, 9); + test(S("snafbdlghrjkpqtoceim"), "", 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), "lbtqd", 0, S::npos); + test(S("pnracgfkjdiholtbqsem"), "tboimldpjh", 0, 0); + test(S("dicfltehbsgrmojnpkaq"), "slcerthdaiqjfnobgkpm", 0, 0); + test(S("jlnkraeodhcspfgbqitm"), "", 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), "aqibs", 1, S::npos); + test(S("rbtaqjhgkneisldpmfoc"), "gtfblmqinc", 1, 1); + test(S("gpifsqlrdkbonjtmheca"), "mkqpbtdalgniorhfescj", 1, 1); + test(S("hdpkobnsalmcfijregtq"), "", 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), "pblas", 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), "arosdhcfme", 10, 10); + test(S("crsplifgtqedjohnabmk"), "blkhjeogicatqfnpdmsr", 10, 10); + test(S("niptglfbosehkamrdqcj"), "", 19, S::npos); + test(S("copqdhstbingamjfkler"), "djkqc", 19, 16); + test(S("mrtaefilpdsgocnhqbjk"), "lgokshjtpb", 19, 19); + test(S("kojatdhlcmigpbfrqnes"), "bqjhtkfepimcnsgrlado", 19, 19); + test(S("eaintpchlqsbdgrkjofm"), "", 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), "nocfa", 20, 19); + test(S("spocfaktqdbiejlhngmr"), "bgtajmiedc", 20, 18); + test(S("rphmlekgfscndtaobiqj"), "lsckfnqgdahejiopbtmr", 20, 19); + test(S("liatsqdoegkmfcnbhrpj"), "", 21, S::npos); + test(S("binjagtfldkrspcomqeh"), "gfsrt", 21, 12); + test(S("latkmisecnorjbfhqpdg"), "pfsocbhjtm", 21, 17); + test(S("lecfratdjkhnsmqpoigb"), "tpflmdnoicjgkberhqsa", 21, 19); } template -void test1() -{ - test(S(""), "", S::npos); - test(S(""), "laenf", S::npos); - test(S(""), "pqlnkmbdjo", S::npos); - test(S(""), "qkamfogpnljdcshbreti", S::npos); - test(S("nhmko"), "", S::npos); - test(S("lahfb"), "irkhs", 2); - test(S("gmfhd"), "kantesmpgj", 1); - test(S("odaft"), "oknlrstdpiqmjbaghcfe", 4); - test(S("eolhfgpjqk"), "", S::npos); - test(S("nbatdlmekr"), "bnrpe", 9); - test(S("jdmciepkaq"), "jtdaefblso", 8); - test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", 9); - test(S("gprdcokbnjhlsfmtieqa"), "", S::npos); - test(S("qjghlnftcaismkropdeb"), "bjaht", 19); - test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 19); - test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 19); +void test1() { + test(S(""), "", S::npos); + test(S(""), "laenf", S::npos); + test(S(""), "pqlnkmbdjo", S::npos); + test(S(""), "qkamfogpnljdcshbreti", S::npos); + test(S("nhmko"), "", S::npos); + test(S("lahfb"), "irkhs", 2); + test(S("gmfhd"), "kantesmpgj", 1); + test(S("odaft"), "oknlrstdpiqmjbaghcfe", 4); + test(S("eolhfgpjqk"), "", S::npos); + test(S("nbatdlmekr"), "bnrpe", 9); + test(S("jdmciepkaq"), "jtdaefblso", 8); + test(S("hkbgspoflt"), "oselktgbcapndfjihrmq", 9); + test(S("gprdcokbnjhlsfmtieqa"), "", S::npos); + test(S("qjghlnftcaismkropdeb"), "bjaht", 19); + test(S("pnalfrdtkqcmojiesbhg"), "hjlcmgpket", 19); + test(S("pniotcfrhqsmgdkjbael"), "htaobedqikfplcgjsmrn", 19); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_last_of( "", 0) == SV::npos, "" ); - static_assert (sv1.find_last_of( "irkhs", 5) == SV::npos, "" ); - static_assert (sv2.find_last_of( "", 0) == SV::npos, "" ); - static_assert (sv2.find_last_of( "gfsrt", 5) == SV::npos, "" ); - static_assert (sv2.find_last_of( "lecar", 5) == 4, "" ); - } + static_assert(sv1.find_last_of("", 0) == SV::npos, ""); + static_assert(sv1.find_last_of("irkhs", 5) == SV::npos, ""); + static_assert(sv2.find_last_of("", 0) == SV::npos, ""); + static_assert(sv2.find_last_of("gfsrt", 5) == SV::npos, ""); + static_assert(sv2.find_last_of("lecar", 5) == 4, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_pointer_size_size.pass.cpp @@ -19,378 +19,374 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos, n)); - assert(s.find_last_of(str, pos, n) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +void test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos, n)); + assert(s.find_last_of(str, pos, n) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -void test0() -{ - test(S(""), "", 0, 0, S::npos); - test(S(""), "irkhs", 0, 0, S::npos); - test(S(""), "kante", 0, 1, S::npos); - test(S(""), "oknlr", 0, 2, S::npos); - test(S(""), "pcdro", 0, 4, S::npos); - test(S(""), "bnrpe", 0, 5, S::npos); - test(S(""), "jtdaefblso", 0, 0, S::npos); - test(S(""), "oselktgbca", 0, 1, S::npos); - test(S(""), "eqgaplhckj", 0, 5, S::npos); - test(S(""), "bjahtcmnlp", 0, 9, S::npos); - test(S(""), "hjlcmgpket", 0, 10, S::npos); - test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); - test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); - test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); - test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); - test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "lbtqd", 1, 0, S::npos); - test(S(""), "tboim", 1, 1, S::npos); - test(S(""), "slcer", 1, 2, S::npos); - test(S(""), "cbjfs", 1, 4, S::npos); - test(S(""), "aqibs", 1, 5, S::npos); - test(S(""), "gtfblmqinc", 1, 0, S::npos); - test(S(""), "mkqpbtdalg", 1, 1, S::npos); - test(S(""), "kphatlimcd", 1, 5, S::npos); - test(S(""), "pblasqogic", 1, 9, S::npos); - test(S(""), "arosdhcfme", 1, 10, S::npos); - test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); - test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); - test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); - test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); - test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); - test(S("eaint"), "", 0, 0, S::npos); - test(S("binja"), "gfsrt", 0, 0, S::npos); - test(S("latkm"), "pfsoc", 0, 1, S::npos); - test(S("lecfr"), "tpflm", 0, 2, S::npos); - test(S("eqkst"), "sgkec", 0, 4, 0); - test(S("cdafr"), "romds", 0, 5, S::npos); - test(S("prbhe"), "qhjistlgmr", 0, 0, S::npos); - test(S("lbisk"), "pedfirsglo", 0, 1, S::npos); - test(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos); - test(S("ehmja"), "dabckmepqj", 0, 9, 0); - test(S("mhqgd"), "pqscrjthli", 0, 10, S::npos); - test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos); - test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos); - test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos); - test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0); - test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0); - test(S("clrgb"), "", 1, 0, S::npos); - test(S("tjmek"), "osmia", 1, 0, S::npos); - test(S("bgstp"), "ckonl", 1, 1, S::npos); - test(S("hstrk"), "ilcaj", 1, 2, S::npos); - test(S("kmspj"), "lasiq", 1, 4, S::npos); - test(S("tjboh"), "kfqmr", 1, 5, S::npos); - test(S("ilbcj"), "klnitfaobg", 1, 0, S::npos); - test(S("jkngf"), "gjhmdlqikp", 1, 1, S::npos); - test(S("gfcql"), "skbgtahqej", 1, 5, 0); - test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 0); - test(S("bthpg"), "bjgfmnlkio", 1, 10, 0); - test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos); - test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos); - test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1); - test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1); - test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1); - test(S("ndrhl"), "", 2, 0, S::npos); - test(S("mrecp"), "otkgb", 2, 0, S::npos); - test(S("qlasf"), "cqsjl", 2, 1, S::npos); - test(S("smaqd"), "dpifl", 2, 2, S::npos); - test(S("hjeni"), "oapht", 2, 4, 0); - test(S("ocmfj"), "cifts", 2, 5, 1); - test(S("hmftq"), "nmsckbgalo", 2, 0, S::npos); - test(S("fklad"), "tpksqhamle", 2, 1, S::npos); - test(S("dirnm"), "tpdrchmkji", 2, 5, 2); - test(S("hrgdc"), "ijagfkblst", 2, 9, 2); - test(S("ifakg"), "kpocsignjb", 2, 10, 0); - test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos); - test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos); - test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 1); - test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2); - test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2); - test(S("cjgao"), "", 4, 0, S::npos); - test(S("kjplq"), "mabns", 4, 0, S::npos); - test(S("herni"), "bdnrp", 4, 1, S::npos); - test(S("tadrb"), "scidp", 4, 2, S::npos); - test(S("pkfeo"), "agbjl", 4, 4, S::npos); - test(S("hoser"), "jfmpr", 4, 5, 4); - test(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos); - test(S("pgejb"), "apsfntdoqc", 4, 1, S::npos); - test(S("thlnq"), "ndkjeisgcl", 4, 5, 3); - test(S("nbmit"), "rnfpqatdeo", 4, 9, 4); - test(S("jgmib"), "bntjlqrfik", 4, 10, 4); - test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos); - test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos); - test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4); - test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4); - test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4); - test(S("klopi"), "", 5, 0, S::npos); - test(S("dajhn"), "psthd", 5, 0, S::npos); - test(S("jbgno"), "rpmjd", 5, 1, S::npos); - test(S("hkjae"), "dfsmk", 5, 2, S::npos); +void test0() { + test(S(""), "", 0, 0, S::npos); + test(S(""), "irkhs", 0, 0, S::npos); + test(S(""), "kante", 0, 1, S::npos); + test(S(""), "oknlr", 0, 2, S::npos); + test(S(""), "pcdro", 0, 4, S::npos); + test(S(""), "bnrpe", 0, 5, S::npos); + test(S(""), "jtdaefblso", 0, 0, S::npos); + test(S(""), "oselktgbca", 0, 1, S::npos); + test(S(""), "eqgaplhckj", 0, 5, S::npos); + test(S(""), "bjahtcmnlp", 0, 9, S::npos); + test(S(""), "hjlcmgpket", 0, 10, S::npos); + test(S(""), "htaobedqikfplcgjsmrn", 0, 0, S::npos); + test(S(""), "hpqiarojkcdlsgnmfetb", 0, 1, S::npos); + test(S(""), "dfkaprhjloqetcsimnbg", 0, 10, S::npos); + test(S(""), "ihqrfebgadntlpmjksoc", 0, 19, S::npos); + test(S(""), "ngtjfcalbseiqrphmkdo", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "lbtqd", 1, 0, S::npos); + test(S(""), "tboim", 1, 1, S::npos); + test(S(""), "slcer", 1, 2, S::npos); + test(S(""), "cbjfs", 1, 4, S::npos); + test(S(""), "aqibs", 1, 5, S::npos); + test(S(""), "gtfblmqinc", 1, 0, S::npos); + test(S(""), "mkqpbtdalg", 1, 1, S::npos); + test(S(""), "kphatlimcd", 1, 5, S::npos); + test(S(""), "pblasqogic", 1, 9, S::npos); + test(S(""), "arosdhcfme", 1, 10, S::npos); + test(S(""), "blkhjeogicatqfnpdmsr", 1, 0, S::npos); + test(S(""), "bmhineprjcoadgstflqk", 1, 1, S::npos); + test(S(""), "djkqcmetslnghpbarfoi", 1, 10, S::npos); + test(S(""), "lgokshjtpbemarcdqnfi", 1, 19, S::npos); + test(S(""), "bqjhtkfepimcnsgrlado", 1, 20, S::npos); + test(S("eaint"), "", 0, 0, S::npos); + test(S("binja"), "gfsrt", 0, 0, S::npos); + test(S("latkm"), "pfsoc", 0, 1, S::npos); + test(S("lecfr"), "tpflm", 0, 2, S::npos); + test(S("eqkst"), "sgkec", 0, 4, 0); + test(S("cdafr"), "romds", 0, 5, S::npos); + test(S("prbhe"), "qhjistlgmr", 0, 0, S::npos); + test(S("lbisk"), "pedfirsglo", 0, 1, S::npos); + test(S("hrlpd"), "aqcoslgrmk", 0, 5, S::npos); + test(S("ehmja"), "dabckmepqj", 0, 9, 0); + test(S("mhqgd"), "pqscrjthli", 0, 10, S::npos); + test(S("tgklq"), "kfphdcsjqmobliagtren", 0, 0, S::npos); + test(S("bocjs"), "rokpefncljibsdhqtagm", 0, 1, S::npos); + test(S("grbsd"), "afionmkphlebtcjqsgrd", 0, 10, S::npos); + test(S("ofjqr"), "aenmqplidhkofrjbctsg", 0, 19, 0); + test(S("btlfi"), "osjmbtcadhiklegrpqnf", 0, 20, 0); + test(S("clrgb"), "", 1, 0, S::npos); + test(S("tjmek"), "osmia", 1, 0, S::npos); + test(S("bgstp"), "ckonl", 1, 1, S::npos); + test(S("hstrk"), "ilcaj", 1, 2, S::npos); + test(S("kmspj"), "lasiq", 1, 4, S::npos); + test(S("tjboh"), "kfqmr", 1, 5, S::npos); + test(S("ilbcj"), "klnitfaobg", 1, 0, S::npos); + test(S("jkngf"), "gjhmdlqikp", 1, 1, S::npos); + test(S("gfcql"), "skbgtahqej", 1, 5, 0); + test(S("dqtlg"), "bjsdgtlpkf", 1, 9, 0); + test(S("bthpg"), "bjgfmnlkio", 1, 10, 0); + test(S("dgsnq"), "lbhepotfsjdqigcnamkr", 1, 0, S::npos); + test(S("rmfhp"), "tebangckmpsrqdlfojhi", 1, 1, S::npos); + test(S("jfdam"), "joflqbdkhtegimscpanr", 1, 10, 1); + test(S("edapb"), "adpmcohetfbsrjinlqkg", 1, 19, 1); + test(S("brfsm"), "iacldqjpfnogbsrhmetk", 1, 20, 1); + test(S("ndrhl"), "", 2, 0, S::npos); + test(S("mrecp"), "otkgb", 2, 0, S::npos); + test(S("qlasf"), "cqsjl", 2, 1, S::npos); + test(S("smaqd"), "dpifl", 2, 2, S::npos); + test(S("hjeni"), "oapht", 2, 4, 0); + test(S("ocmfj"), "cifts", 2, 5, 1); + test(S("hmftq"), "nmsckbgalo", 2, 0, S::npos); + test(S("fklad"), "tpksqhamle", 2, 1, S::npos); + test(S("dirnm"), "tpdrchmkji", 2, 5, 2); + test(S("hrgdc"), "ijagfkblst", 2, 9, 2); + test(S("ifakg"), "kpocsignjb", 2, 10, 0); + test(S("ebrgd"), "pecqtkjsnbdrialgmohf", 2, 0, S::npos); + test(S("rcjml"), "aiortphfcmkjebgsndql", 2, 1, S::npos); + test(S("peqmt"), "sdbkeamglhipojqftrcn", 2, 10, 1); + test(S("frehn"), "ljqncehgmfktroapidbs", 2, 19, 2); + test(S("tqolf"), "rtcfodilamkbenjghqps", 2, 20, 2); + test(S("cjgao"), "", 4, 0, S::npos); + test(S("kjplq"), "mabns", 4, 0, S::npos); + test(S("herni"), "bdnrp", 4, 1, S::npos); + test(S("tadrb"), "scidp", 4, 2, S::npos); + test(S("pkfeo"), "agbjl", 4, 4, S::npos); + test(S("hoser"), "jfmpr", 4, 5, 4); + test(S("kgrsp"), "rbpefghsmj", 4, 0, S::npos); + test(S("pgejb"), "apsfntdoqc", 4, 1, S::npos); + test(S("thlnq"), "ndkjeisgcl", 4, 5, 3); + test(S("nbmit"), "rnfpqatdeo", 4, 9, 4); + test(S("jgmib"), "bntjlqrfik", 4, 10, 4); + test(S("ncrfj"), "kcrtmpolnaqejghsfdbi", 4, 0, S::npos); + test(S("ncsik"), "lobheanpkmqidsrtcfgj", 4, 1, S::npos); + test(S("sgbfh"), "athdkljcnreqbgpmisof", 4, 10, 4); + test(S("dktbn"), "qkdmjialrscpbhefgont", 4, 19, 4); + test(S("fthqm"), "dmasojntqleribkgfchp", 4, 20, 4); + test(S("klopi"), "", 5, 0, S::npos); + test(S("dajhn"), "psthd", 5, 0, S::npos); + test(S("jbgno"), "rpmjd", 5, 1, S::npos); + test(S("hkjae"), "dfsmk", 5, 2, S::npos); } template -void test1() -{ - test(S("gbhqo"), "skqne", 5, 4, 3); - test(S("ktdor"), "kipnf", 5, 5, 0); - test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); - test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); - test(S("armql"), "pcdgltbrfj", 5, 5, 4); - test(S("cdhjo"), "aekfctpirg", 5, 9, 0); - test(S("jcons"), "ledihrsgpf", 5, 10, 4); - test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); - test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); - test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 4); - test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 4); - test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, 4); - test(S("gajqn"), "", 6, 0, S::npos); - test(S("stedk"), "hrnat", 6, 0, S::npos); - test(S("tjkaf"), "gsqdt", 6, 1, S::npos); - test(S("dthpe"), "bspkd", 6, 2, S::npos); - test(S("klhde"), "ohcmb", 6, 4, 2); - test(S("bhlki"), "heatr", 6, 5, 1); - test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); - test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); - test(S("dpqbr"), "lmbtdehjrn", 6, 5, 3); - test(S("kdhmo"), "teqmcrlgib", 6, 9, 3); - test(S("jblqp"), "njolbmspac", 6, 10, 4); - test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); - test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); - test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 4); - test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, 4); - test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, 4); - test(S("jnkrfhotgl"), "", 0, 0, S::npos); - test(S("dltjfngbko"), "rqegt", 0, 0, S::npos); - test(S("bmjlpkiqde"), "dashm", 0, 1, S::npos); - test(S("skrflobnqm"), "jqirk", 0, 2, S::npos); - test(S("jkpldtshrm"), "rckeg", 0, 4, S::npos); - test(S("ghasdbnjqo"), "jscie", 0, 5, S::npos); - test(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos); - test(S("ikthdgcamf"), "gdicosleja", 0, 1, S::npos); - test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0); - test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0); - test(S("itphbqsker"), "dtablcrseo", 0, 10, S::npos); - test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos); - test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos); - test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, S::npos); - test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0); - test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0); - test(S("shbcqnmoar"), "", 1, 0, S::npos); - test(S("bdoshlmfin"), "ontrs", 1, 0, S::npos); - test(S("khfrebnsgq"), "pfkna", 1, 1, S::npos); - test(S("getcrsaoji"), "ekosa", 1, 2, 1); - test(S("fjiknedcpq"), "anqhk", 1, 4, S::npos); - test(S("tkejgnafrm"), "jekca", 1, 5, 1); - test(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos); - test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos); - test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1); - test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 0); - test(S("cigfqkated"), "sqcflrgtim", 1, 10, 1); - test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos); - test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos); - test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1); - test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1); - test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1); - test(S("ectnhskflp"), "", 5, 0, S::npos); - test(S("fgtianblpq"), "pijag", 5, 0, S::npos); - test(S("mfeqklirnh"), "jrckd", 5, 1, S::npos); - test(S("astedncjhk"), "qcloh", 5, 2, S::npos); - test(S("fhlqgcajbr"), "thlmp", 5, 4, 2); - test(S("epfhocmdng"), "qidmo", 5, 5, 4); - test(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos); - test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5); - test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, S::npos); - test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5); - test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 4); - test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos); - test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos); - test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5); - test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5); - test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5); - test(S("shoiedtcjb"), "", 9, 0, S::npos); - test(S("ebcinjgads"), "tqbnh", 9, 0, S::npos); - test(S("dqmregkcfl"), "akmle", 9, 1, S::npos); - test(S("ngcrieqajf"), "iqfkm", 9, 2, 6); - test(S("qosmilgnjb"), "tqjsr", 9, 4, 8); - test(S("ikabsjtdfl"), "jplqg", 9, 5, 9); - test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos); - test(S("fdnplotmgh"), "morkglpesn", 9, 1, 7); - test(S("fdbicojerm"), "dmicerngat", 9, 5, 9); - test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 6); - test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 5); - test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos); - test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 6); - test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 7); - test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9); - test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9); - test(S("ncjpmaekbs"), "", 10, 0, S::npos); - test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); - test(S("pqfhsgilen"), "qnpor", 10, 1, 1); - test(S("gqtjsbdckh"), "otdma", 10, 2, 2); - test(S("cfkqpjlegi"), "efhjg", 10, 4, 7); - test(S("beanrfodgj"), "odpte", 10, 5, 7); - test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); - test(S("iomkfthagj"), "oaklidrbqg", 10, 1, 1); +void test1() { + test(S("gbhqo"), "skqne", 5, 4, 3); + test(S("ktdor"), "kipnf", 5, 5, 0); + test(S("ldprn"), "hmrnqdgifl", 5, 0, S::npos); + test(S("egmjk"), "fsmjcdairn", 5, 1, S::npos); + test(S("armql"), "pcdgltbrfj", 5, 5, 4); + test(S("cdhjo"), "aekfctpirg", 5, 9, 0); + test(S("jcons"), "ledihrsgpf", 5, 10, 4); + test(S("cbrkp"), "mqcklahsbtirgopefndj", 5, 0, S::npos); + test(S("fhgna"), "kmlthaoqgecrnpdbjfis", 5, 1, S::npos); + test(S("ejfcd"), "sfhbamcdptojlkrenqgi", 5, 10, 4); + test(S("kqjhe"), "pbniofmcedrkhlstgaqj", 5, 19, 4); + test(S("pbdjl"), "mongjratcskbhqiepfdl", 5, 20, 4); + test(S("gajqn"), "", 6, 0, S::npos); + test(S("stedk"), "hrnat", 6, 0, S::npos); + test(S("tjkaf"), "gsqdt", 6, 1, S::npos); + test(S("dthpe"), "bspkd", 6, 2, S::npos); + test(S("klhde"), "ohcmb", 6, 4, 2); + test(S("bhlki"), "heatr", 6, 5, 1); + test(S("lqmoh"), "pmblckedfn", 6, 0, S::npos); + test(S("mtqin"), "aceqmsrbik", 6, 1, S::npos); + test(S("dpqbr"), "lmbtdehjrn", 6, 5, 3); + test(S("kdhmo"), "teqmcrlgib", 6, 9, 3); + test(S("jblqp"), "njolbmspac", 6, 10, 4); + test(S("qmjgl"), "pofnhidklamecrbqjgst", 6, 0, S::npos); + test(S("rothp"), "jbhckmtgrqnosafedpli", 6, 1, S::npos); + test(S("ghknq"), "dobntpmqklicsahgjerf", 6, 10, 4); + test(S("eopfi"), "tpdshainjkbfoemlrgcq", 6, 19, 4); + test(S("dsnmg"), "oldpfgeakrnitscbjmqh", 6, 20, 4); + test(S("jnkrfhotgl"), "", 0, 0, S::npos); + test(S("dltjfngbko"), "rqegt", 0, 0, S::npos); + test(S("bmjlpkiqde"), "dashm", 0, 1, S::npos); + test(S("skrflobnqm"), "jqirk", 0, 2, S::npos); + test(S("jkpldtshrm"), "rckeg", 0, 4, S::npos); + test(S("ghasdbnjqo"), "jscie", 0, 5, S::npos); + test(S("igrkhpbqjt"), "efsphndliq", 0, 0, S::npos); + test(S("ikthdgcamf"), "gdicosleja", 0, 1, S::npos); + test(S("pcofgeniam"), "qcpjibosfl", 0, 5, 0); + test(S("rlfjgesqhc"), "lrhmefnjcq", 0, 9, 0); + test(S("itphbqsker"), "dtablcrseo", 0, 10, S::npos); + test(S("skjafcirqm"), "apckjsftedbhgomrnilq", 0, 0, S::npos); + test(S("tcqomarsfd"), "pcbrgflehjtiadnsokqm", 0, 1, S::npos); + test(S("rocfeldqpk"), "nsiadegjklhobrmtqcpf", 0, 10, S::npos); + test(S("cfpegndlkt"), "cpmajdqnolikhgsbretf", 0, 19, 0); + test(S("fqbtnkeasj"), "jcflkntmgiqrphdosaeb", 0, 20, 0); + test(S("shbcqnmoar"), "", 1, 0, S::npos); + test(S("bdoshlmfin"), "ontrs", 1, 0, S::npos); + test(S("khfrebnsgq"), "pfkna", 1, 1, S::npos); + test(S("getcrsaoji"), "ekosa", 1, 2, 1); + test(S("fjiknedcpq"), "anqhk", 1, 4, S::npos); + test(S("tkejgnafrm"), "jekca", 1, 5, 1); + test(S("jnakolqrde"), "ikemsjgacf", 1, 0, S::npos); + test(S("lcjptsmgbe"), "arolgsjkhm", 1, 1, S::npos); + test(S("itfsmcjorl"), "oftkbldhre", 1, 5, 1); + test(S("omchkfrjea"), "gbkqdoeftl", 1, 9, 0); + test(S("cigfqkated"), "sqcflrgtim", 1, 10, 1); + test(S("tscenjikml"), "fmhbkislrjdpanogqcet", 1, 0, S::npos); + test(S("qcpaemsinf"), "rnioadktqlgpbcjsmhef", 1, 1, S::npos); + test(S("gltkojeipd"), "oakgtnldpsefihqmjcbr", 1, 10, 1); + test(S("qistfrgnmp"), "gbnaelosidmcjqktfhpr", 1, 19, 1); + test(S("bdnpfcqaem"), "akbripjhlosndcmqgfet", 1, 20, 1); + test(S("ectnhskflp"), "", 5, 0, S::npos); + test(S("fgtianblpq"), "pijag", 5, 0, S::npos); + test(S("mfeqklirnh"), "jrckd", 5, 1, S::npos); + test(S("astedncjhk"), "qcloh", 5, 2, S::npos); + test(S("fhlqgcajbr"), "thlmp", 5, 4, 2); + test(S("epfhocmdng"), "qidmo", 5, 5, 4); + test(S("apcnsibger"), "lnegpsjqrd", 5, 0, S::npos); + test(S("aqkocrbign"), "rjqdablmfs", 5, 1, 5); + test(S("ijsmdtqgce"), "enkgpbsjaq", 5, 5, S::npos); + test(S("clobgsrken"), "kdsgoaijfh", 5, 9, 5); + test(S("jbhcfposld"), "trfqgmckbe", 5, 10, 4); + test(S("oqnpblhide"), "igetsracjfkdnpoblhqm", 5, 0, S::npos); + test(S("lroeasctif"), "nqctfaogirshlekbdjpm", 5, 1, S::npos); + test(S("bpjlgmiedh"), "csehfgomljdqinbartkp", 5, 10, 5); + test(S("pamkeoidrj"), "qahoegcmplkfsjbdnitr", 5, 19, 5); + test(S("espogqbthk"), "dpteiajrqmsognhlfbkc", 5, 20, 5); + test(S("shoiedtcjb"), "", 9, 0, S::npos); + test(S("ebcinjgads"), "tqbnh", 9, 0, S::npos); + test(S("dqmregkcfl"), "akmle", 9, 1, S::npos); + test(S("ngcrieqajf"), "iqfkm", 9, 2, 6); + test(S("qosmilgnjb"), "tqjsr", 9, 4, 8); + test(S("ikabsjtdfl"), "jplqg", 9, 5, 9); + test(S("ersmicafdh"), "oilnrbcgtj", 9, 0, S::npos); + test(S("fdnplotmgh"), "morkglpesn", 9, 1, 7); + test(S("fdbicojerm"), "dmicerngat", 9, 5, 9); + test(S("mbtafndjcq"), "radgeskbtc", 9, 9, 6); + test(S("mlenkpfdtc"), "ljikprsmqo", 9, 10, 5); + test(S("ahlcifdqgs"), "trqihkcgsjamfdbolnpe", 9, 0, S::npos); + test(S("bgjemaltks"), "lqmthbsrekajgnofcipd", 9, 1, 6); + test(S("pdhslbqrfc"), "jtalmedribkgqsopcnfh", 9, 10, 7); + test(S("dirhtsnjkc"), "spqfoiclmtagejbndkrh", 9, 19, 9); + test(S("dlroktbcja"), "nmotklspigjrdhcfaebq", 9, 20, 9); + test(S("ncjpmaekbs"), "", 10, 0, S::npos); + test(S("hlbosgmrak"), "hpmsd", 10, 0, S::npos); + test(S("pqfhsgilen"), "qnpor", 10, 1, 1); + test(S("gqtjsbdckh"), "otdma", 10, 2, 2); + test(S("cfkqpjlegi"), "efhjg", 10, 4, 7); + test(S("beanrfodgj"), "odpte", 10, 5, 7); + test(S("adtkqpbjfi"), "bctdgfmolr", 10, 0, S::npos); + test(S("iomkfthagj"), "oaklidrbqg", 10, 1, 1); } template -void test2() -{ - test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 9); - test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 8); - test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 9); - test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); - test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 8); - test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 9); - test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 9); - test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, 9); - test(S("cqjohampgd"), "", 11, 0, S::npos); - test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); - test(S("tjehkpsalm"), "jbrnk", 11, 1, 1); - test(S("ngfbojitcl"), "tqedg", 11, 2, 7); - test(S("rcfkdbhgjo"), "nqskp", 11, 4, 3); - test(S("qghptonrea"), "eaqkl", 11, 5, 9); - test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); - test(S("hlmgabenti"), "lsftgajqpm", 11, 1, 1); - test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 7); - test(S("jqedtkornm"), "shkncmiaqj", 11, 9, 9); - test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 9); - test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); - test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); - test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 9); - test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, 9); - test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, 9); - test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos); - test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos); - test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, S::npos); - test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, S::npos); - test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, S::npos); - test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, S::npos); - test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos); - test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, S::npos); - test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, S::npos); - test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, S::npos); - test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, S::npos); - test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos); - test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, S::npos); - test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, S::npos); - test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0); - test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0); - test(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos); - test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos); - test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, S::npos); - test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1); - test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1); - test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, S::npos); - test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos); - test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, S::npos); - test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, S::npos); - test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1); - test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1); - test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos); - test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, S::npos); - test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1); - test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1); - test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1); - test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos); - test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos); - test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, S::npos); - test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 7); - test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10); - test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 6); - test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos); - test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 9); - test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 5); - test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10); - test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 9); - test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos); - test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, S::npos); - test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10); - test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10); - test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10); - test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos); - test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos); - test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 16); - test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 7); - test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 16); - test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19); - test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos); - test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 15); - test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 17); - test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 16); - test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 16); - test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos); - test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 10); - test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19); - test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19); - test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19); - test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); - test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); - test(S("grkpahljcftesdmonqib"), "odife", 20, 1, 15); - test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 12); - test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 19); - test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 19); - test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); - test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 3); - test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 19); - test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 19); - test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 19); - test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); +void test2() { + test(S("sdpcilonqj"), "dnjfsagktr", 10, 5, 9); + test(S("gtfbdkqeml"), "nejaktmiqg", 10, 9, 8); + test(S("bmeqgcdorj"), "pjqonlebsf", 10, 10, 9); + test(S("etqlcanmob"), "dshmnbtolcjepgaikfqr", 10, 0, S::npos); + test(S("roqmkbdtia"), "iogfhpabtjkqlrnemcds", 10, 1, 8); + test(S("kadsithljf"), "ngridfabjsecpqltkmoh", 10, 10, 9); + test(S("sgtkpbfdmh"), "athmknplcgofrqejsdib", 10, 19, 9); + test(S("qgmetnabkl"), "ldobhmqcafnjtkeisgrp", 10, 20, 9); + test(S("cqjohampgd"), "", 11, 0, S::npos); + test(S("hobitmpsan"), "aocjb", 11, 0, S::npos); + test(S("tjehkpsalm"), "jbrnk", 11, 1, 1); + test(S("ngfbojitcl"), "tqedg", 11, 2, 7); + test(S("rcfkdbhgjo"), "nqskp", 11, 4, 3); + test(S("qghptonrea"), "eaqkl", 11, 5, 9); + test(S("hnprfgqjdl"), "reaoicljqm", 11, 0, S::npos); + test(S("hlmgabenti"), "lsftgajqpm", 11, 1, 1); + test(S("ofcjanmrbs"), "rlpfogmits", 11, 5, 7); + test(S("jqedtkornm"), "shkncmiaqj", 11, 9, 9); + test(S("rfedlasjmg"), "fpnatrhqgs", 11, 10, 9); + test(S("talpqjsgkm"), "sjclemqhnpdbgikarfot", 11, 0, S::npos); + test(S("lrkcbtqpie"), "otcmedjikgsfnqbrhpla", 11, 1, S::npos); + test(S("cipogdskjf"), "bonsaefdqiprkhlgtjcm", 11, 10, 9); + test(S("nqedcojahi"), "egpscmahijlfnkrodqtb", 11, 19, 9); + test(S("hefnrkmctj"), "kmqbfepjthgilscrndoa", 11, 20, 9); + test(S("atqirnmekfjolhpdsgcb"), "", 0, 0, S::npos); + test(S("echfkmlpribjnqsaogtd"), "prboq", 0, 0, S::npos); + test(S("qnhiftdgcleajbpkrosm"), "fjcqh", 0, 1, S::npos); + test(S("chamfknorbedjitgslpq"), "fmosa", 0, 2, S::npos); + test(S("njhqpibfmtlkaecdrgso"), "qdbok", 0, 4, S::npos); + test(S("ebnghfsqkprmdcljoiat"), "amslg", 0, 5, S::npos); + test(S("letjomsgihfrpqbkancd"), "smpltjneqb", 0, 0, S::npos); + test(S("nblgoipcrqeaktshjdmf"), "flitskrnge", 0, 1, S::npos); + test(S("cehkbngtjoiflqapsmrd"), "pgqihmlbef", 0, 5, S::npos); + test(S("mignapfoklbhcqjetdrs"), "cfpdqjtgsb", 0, 9, S::npos); + test(S("ceatbhlsqjgpnokfrmdi"), "htpsiaflom", 0, 10, S::npos); + test(S("ocihkjgrdelpfnmastqb"), "kpjfiaceghsrdtlbnomq", 0, 0, S::npos); + test(S("noelgschdtbrjfmiqkap"), "qhtbomidljgafneksprc", 0, 1, S::npos); + test(S("dkclqfombepritjnghas"), "nhtjobkcefldimpsaqgr", 0, 10, S::npos); + test(S("miklnresdgbhqcojftap"), "prabcjfqnoeskilmtgdh", 0, 19, 0); + test(S("htbcigojaqmdkfrnlsep"), "dtrgmchilkasqoebfpjn", 0, 20, 0); + test(S("febhmqtjanokscdirpgl"), "", 1, 0, S::npos); + test(S("loakbsqjpcrdhftniegm"), "sqome", 1, 0, S::npos); + test(S("reagphsqflbitdcjmkno"), "smfte", 1, 1, S::npos); + test(S("jitlfrqemsdhkopncabg"), "ciboh", 1, 2, 1); + test(S("mhtaepscdnrjqgbkifol"), "haois", 1, 4, 1); + test(S("tocesrfmnglpbjihqadk"), "abfki", 1, 5, S::npos); + test(S("lpfmctjrhdagneskbqoi"), "frdkocntmq", 1, 0, S::npos); + test(S("lsmqaepkdhncirbtjfgo"), "oasbpedlnr", 1, 1, S::npos); + test(S("epoiqmtldrabnkjhcfsg"), "kltqmhgand", 1, 5, S::npos); + test(S("emgasrilpknqojhtbdcf"), "gdtfjchpmr", 1, 9, 1); + test(S("hnfiagdpcklrjetqbsom"), "ponmcqblet", 1, 10, 1); + test(S("nsdfebgajhmtricpoklq"), "sgphqdnofeiklatbcmjr", 1, 0, S::npos); + test(S("atjgfsdlpobmeiqhncrk"), "ljqprsmigtfoneadckbh", 1, 1, S::npos); + test(S("sitodfgnrejlahcbmqkp"), "ligeojhafnkmrcsqtbdp", 1, 10, 1); + test(S("fraghmbiceknltjpqosd"), "lsimqfnjarbopedkhcgt", 1, 19, 1); + test(S("pmafenlhqtdbkirjsogc"), "abedmfjlghniorcqptks", 1, 20, 1); + test(S("pihgmoeqtnakrjslcbfd"), "", 10, 0, S::npos); + test(S("gjdkeprctqblnhiafsom"), "hqtoa", 10, 0, S::npos); + test(S("mkpnblfdsahrcqijteog"), "cahif", 10, 1, S::npos); + test(S("gckarqnelodfjhmbptis"), "kehis", 10, 2, 7); + test(S("gqpskidtbclomahnrjfe"), "kdlmh", 10, 4, 10); + test(S("pkldjsqrfgitbhmaecno"), "paeql", 10, 5, 6); + test(S("aftsijrbeklnmcdqhgop"), "aghoqiefnb", 10, 0, S::npos); + test(S("mtlgdrhafjkbiepqnsoc"), "jrbqaikpdo", 10, 1, 9); + test(S("pqgirnaefthokdmbsclj"), "smjonaeqcl", 10, 5, 5); + test(S("kpdbgjmtherlsfcqoina"), "eqbdrkcfah", 10, 9, 10); + test(S("jrlbothiknqmdgcfasep"), "kapmsienhf", 10, 10, 9); + test(S("mjogldqferckabinptsh"), "jpqotrlenfcsbhkaimdg", 10, 0, S::npos); + test(S("apoklnefbhmgqcdrisjt"), "jlbmhnfgtcqprikeados", 10, 1, S::npos); + test(S("ifeopcnrjbhkdgatmqls"), "stgbhfmdaljnpqoicker", 10, 10, 10); + test(S("ckqhaiesmjdnrgolbtpf"), "oihcetflbjagdsrkmqpn", 10, 19, 10); + test(S("bnlgapfimcoterskqdjh"), "adtclebmnpjsrqfkigoh", 10, 20, 10); + test(S("kgdlrobpmjcthqsafeni"), "", 19, 0, S::npos); + test(S("dfkechomjapgnslbtqir"), "beafg", 19, 0, S::npos); + test(S("rloadknfbqtgmhcsipje"), "iclat", 19, 1, 16); + test(S("mgjhkolrnadqbpetcifs"), "rkhnf", 19, 2, 7); + test(S("cmlfakiojdrgtbsphqen"), "clshq", 19, 4, 16); + test(S("kghbfipeomsntdalrqjc"), "dtcoj", 19, 5, 19); + test(S("eldiqckrnmtasbghjfpo"), "rqosnjmfth", 19, 0, S::npos); + test(S("abqjcfedgotihlnspkrm"), "siatdfqglh", 19, 1, 15); + test(S("qfbadrtjsimkolcenhpg"), "mrlshtpgjq", 19, 5, 17); + test(S("abseghclkjqifmtodrnp"), "adlcskgqjt", 19, 9, 16); + test(S("ibmsnlrjefhtdokacqpg"), "drshcjknaf", 19, 10, 16); + test(S("mrkfciqjebaponsthldg"), "etsaqroinghpkjdlfcbm", 19, 0, S::npos); + test(S("mjkticdeoqshpalrfbgn"), "sgepdnkqliambtrocfhj", 19, 1, 10); + test(S("rqnoclbdejgiphtfsakm"), "nlmcjaqgbsortfdihkpe", 19, 10, 19); + test(S("plkqbhmtfaeodjcrsing"), "racfnpmosldibqkghjet", 19, 19, 19); + test(S("oegalhmstjrfickpbndq"), "fjhdsctkqeiolagrnmbp", 19, 20, 19); + test(S("rdtgjcaohpblniekmsfq"), "", 20, 0, S::npos); + test(S("ofkqbnjetrmsaidphglc"), "ejanp", 20, 0, S::npos); + test(S("grkpahljcftesdmonqib"), "odife", 20, 1, 15); + test(S("jimlgbhfqkteospardcn"), "okaqd", 20, 2, 12); + test(S("gftenihpmslrjkqadcob"), "lcdbi", 20, 4, 19); + test(S("bmhldogtckrfsanijepq"), "fsqbj", 20, 5, 19); + test(S("nfqkrpjdesabgtlcmoih"), "bigdomnplq", 20, 0, S::npos); + test(S("focalnrpiqmdkstehbjg"), "apiblotgcd", 20, 1, 3); + test(S("rhqdspkmebiflcotnjga"), "acfhdenops", 20, 5, 19); + test(S("rahdtmsckfboqlpniegj"), "jopdeamcrk", 20, 9, 19); + test(S("fbkeiopclstmdqranjhg"), "trqncbkgmh", 20, 10, 19); + test(S("lifhpdgmbconstjeqark"), "tomglrkencbsfjqpihda", 20, 0, S::npos); } template -void test3() -{ - test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 4); - test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 17); - test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 19); - test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, 19); - test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); - test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); - test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 6); - test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 13); - test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 10); - test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 17); - test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); - test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 14); - test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 19); - test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 14); - test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 16); - test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); - test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 17); - test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 17); - test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 19); - test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, 19); +void test3() { + test(S("pboqganrhedjmltsicfk"), "gbkhdnpoietfcmrslajq", 20, 1, 4); + test(S("klchabsimetjnqgorfpd"), "rtfnmbsglkjaichoqedp", 20, 10, 17); + test(S("sirfgmjqhctndbklaepo"), "ohkmdpfqbsacrtjnlgei", 20, 19, 19); + test(S("rlbdsiceaonqjtfpghkm"), "dlbrteoisgphmkncajfq", 20, 20, 19); + test(S("ecgdanriptblhjfqskom"), "", 21, 0, S::npos); + test(S("fdmiarlpgcskbhoteqjn"), "sjrlo", 21, 0, S::npos); + test(S("rlbstjqopignecmfadkh"), "qjpor", 21, 1, 6); + test(S("grjpqmbshektdolcafni"), "odhfn", 21, 2, 13); + test(S("sakfcohtqnibprjmlged"), "qtfin", 21, 4, 10); + test(S("mjtdglasihqpocebrfkn"), "hpqfo", 21, 5, 17); + test(S("okaplfrntghqbmeicsdj"), "fabmertkos", 21, 0, S::npos); + test(S("sahngemrtcjidqbklfpo"), "brqtgkmaej", 21, 1, 14); + test(S("dlmsipcnekhbgoaftqjr"), "nfrdeihsgl", 21, 5, 19); + test(S("ahegrmqnoiklpfsdbcjt"), "hlfrosekpi", 21, 9, 14); + test(S("hdsjbnmlegtkqripacof"), "atgbkrjdsm", 21, 10, 16); + test(S("pcnedrfjihqbalkgtoms"), "blnrptjgqmaifsdkhoec", 21, 0, S::npos); + test(S("qjidealmtpskrbfhocng"), "ctpmdahebfqjgknloris", 21, 1, 17); + test(S("qeindtagmokpfhsclrbj"), "apnkeqthrmlbfodiscgj", 21, 10, 17); + test(S("kpfegbjhsrnodltqciam"), "jdgictpframeoqlsbknh", 21, 19, 19); + test(S("hnbrcplsjfgiktoedmaq"), "qprlsfojamgndekthibc", 21, 20, 19); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); test2(); test3(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find_last_of( "", 0, 0) == SV::npos, "" ); - static_assert (sv1.find_last_of( "irkhs", 0, 5) == SV::npos, "" ); - static_assert (sv2.find_last_of( "", 0, 0) == SV::npos, "" ); - static_assert (sv2.find_last_of( "gfsrt", 5, 5) == SV::npos, "" ); - static_assert (sv2.find_last_of( "lecar", 5, 5) == 4, "" ); - } + static_assert(sv1.find_last_of("", 0, 0) == SV::npos, ""); + static_assert(sv1.find_last_of("irkhs", 0, 5) == SV::npos, ""); + static_assert(sv2.find_last_of("", 0, 0) == SV::npos, ""); + static_assert(sv2.find_last_of("gfsrt", 5, 5) == SV::npos, ""); + static_assert(sv2.find_last_of("lecar", 5, 5) == 4, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_string_view_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_last_of_string_view_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_last_of_string_view_size.pass.cpp @@ -18,138 +18,131 @@ #include "test_macros.h" template -void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos)); - assert(s.find_last_of(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x < s.size()); +void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str, pos)); + assert(s.find_last_of(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x < s.size()); } template -void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str)); - assert(s.find_last_of(str) == x); - if (x != S::npos) - assert(x < s.size()); +void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find_last_of(str)); + assert(s.find_last_of(str) == x); + if (x != S::npos) + assert(x < s.size()); } template -void test0() -{ - test(S(""), S(""), 0, S::npos); - test(S(""), S("laenf"), 0, S::npos); - test(S(""), S("pqlnkmbdjo"), 0, S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("bjaht"), 1, S::npos); - test(S(""), S("hjlcmgpket"), 1, S::npos); - test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); - test(S("fodgq"), S(""), 0, S::npos); - test(S("qanej"), S("dfkap"), 0, S::npos); - test(S("clbao"), S("ihqrfebgad"), 0, S::npos); - test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, 0); - test(S("srdfq"), S(""), 1, S::npos); - test(S("oemth"), S("ikcrq"), 1, S::npos); - test(S("cdaih"), S("dmajblfhsg"), 1, 1); - test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, 1); - test(S("cshmd"), S(""), 2, S::npos); - test(S("lhcdo"), S("oebqi"), 2, S::npos); - test(S("qnsoh"), S("kojhpmbsfe"), 2, 2); - test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, 2); - test(S("fmtsp"), S(""), 4, S::npos); - test(S("khbpm"), S("aobjd"), 4, 2); - test(S("pbsji"), S("pcbahntsje"), 4, 3); - test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, 4); - test(S("eqmpa"), S(""), 5, S::npos); - test(S("omigs"), S("kocgb"), 5, 3); - test(S("onmje"), S("fbslrjiqkm"), 5, 3); - test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, 4); - test(S("schfa"), S(""), 6, S::npos); - test(S("igdsc"), S("qngpd"), 6, 2); - test(S("brqgo"), S("rodhqklgmb"), 6, 4); - test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, 4); - test(S("hcjitbfapl"), S(""), 0, S::npos); - test(S("daiprenocl"), S("ashjd"), 0, 0); - test(S("litpcfdghe"), S("mgojkldsqh"), 0, 0); - test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, 0); - test(S("qpghtfbaji"), S(""), 1, S::npos); - test(S("gfshlcmdjr"), S("nadkh"), 1, S::npos); - test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 1); - test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, 1); - test(S("crnklpmegd"), S(""), 5, S::npos); - test(S("jsbtafedoc"), S("prqgn"), 5, S::npos); - test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 5); - test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, 5); - test(S("lmofqdhpki"), S(""), 9, S::npos); - test(S("hnefkqimca"), S("rtjpa"), 9, 9); - test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 7); - test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, 9); - test(S("elgofjmbrq"), S(""), 10, S::npos); - test(S("mjqdgalkpc"), S("dplqa"), 10, 8); - test(S("kthqnfcerm"), S("dkacjoptns"), 10, 6); - test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, 9); - test(S("eqsgalomhb"), S(""), 11, S::npos); - test(S("akiteljmoh"), S("lofbc"), 11, 8); - test(S("hlbdfreqjo"), S("astoegbfpn"), 11, 9); - test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, 9); - test(S("snafbdlghrjkpqtoceim"), S(""), 0, S::npos); - test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, S::npos); - test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 0); - test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, 0); - test(S("jlnkraeodhcspfgbqitm"), S(""), 1, S::npos); - test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, S::npos); - test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 1); - test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, 1); - test(S("hdpkobnsalmcfijregtq"), S(""), 10, S::npos); - test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 10); - test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 10); - test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, 10); - test(S("niptglfbosehkamrdqcj"), S(""), 19, S::npos); - test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 16); - test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 19); - test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, 19); - test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); - test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, 19); - test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, 18); - test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, 19); - test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); - test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, 12); - test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, 17); - test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, 19); +void test0() { + test(S(""), S(""), 0, S::npos); + test(S(""), S("laenf"), 0, S::npos); + test(S(""), S("pqlnkmbdjo"), 0, S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("bjaht"), 1, S::npos); + test(S(""), S("hjlcmgpket"), 1, S::npos); + test(S(""), S("htaobedqikfplcgjsmrn"), 1, S::npos); + test(S("fodgq"), S(""), 0, S::npos); + test(S("qanej"), S("dfkap"), 0, S::npos); + test(S("clbao"), S("ihqrfebgad"), 0, S::npos); + test(S("mekdn"), S("ngtjfcalbseiqrphmkdo"), 0, 0); + test(S("srdfq"), S(""), 1, S::npos); + test(S("oemth"), S("ikcrq"), 1, S::npos); + test(S("cdaih"), S("dmajblfhsg"), 1, 1); + test(S("qohtk"), S("oqftjhdmkgsblacenirp"), 1, 1); + test(S("cshmd"), S(""), 2, S::npos); + test(S("lhcdo"), S("oebqi"), 2, S::npos); + test(S("qnsoh"), S("kojhpmbsfe"), 2, 2); + test(S("pkrof"), S("acbsjqogpltdkhinfrem"), 2, 2); + test(S("fmtsp"), S(""), 4, S::npos); + test(S("khbpm"), S("aobjd"), 4, 2); + test(S("pbsji"), S("pcbahntsje"), 4, 3); + test(S("mprdj"), S("fhepcrntkoagbmldqijs"), 4, 4); + test(S("eqmpa"), S(""), 5, S::npos); + test(S("omigs"), S("kocgb"), 5, 3); + test(S("onmje"), S("fbslrjiqkm"), 5, 3); + test(S("oqmrj"), S("jeidpcmalhfnqbgtrsko"), 5, 4); + test(S("schfa"), S(""), 6, S::npos); + test(S("igdsc"), S("qngpd"), 6, 2); + test(S("brqgo"), S("rodhqklgmb"), 6, 4); + test(S("tnrph"), S("thdjgafrlbkoiqcspmne"), 6, 4); + test(S("hcjitbfapl"), S(""), 0, S::npos); + test(S("daiprenocl"), S("ashjd"), 0, 0); + test(S("litpcfdghe"), S("mgojkldsqh"), 0, 0); + test(S("aidjksrolc"), S("imqnaghkfrdtlopbjesc"), 0, 0); + test(S("qpghtfbaji"), S(""), 1, S::npos); + test(S("gfshlcmdjr"), S("nadkh"), 1, S::npos); + test(S("nkodajteqp"), S("ofdrqmkebl"), 1, 1); + test(S("gbmetiprqd"), S("bdfjqgatlksriohemnpc"), 1, 1); + test(S("crnklpmegd"), S(""), 5, S::npos); + test(S("jsbtafedoc"), S("prqgn"), 5, S::npos); + test(S("qnmodrtkeb"), S("pejafmnokr"), 5, 5); + test(S("cpebqsfmnj"), S("odnqkgijrhabfmcestlp"), 5, 5); + test(S("lmofqdhpki"), S(""), 9, S::npos); + test(S("hnefkqimca"), S("rtjpa"), 9, 9); + test(S("drtasbgmfp"), S("ktsrmnqagd"), 9, 7); + test(S("lsaijeqhtr"), S("rtdhgcisbnmoaqkfpjle"), 9, 9); + test(S("elgofjmbrq"), S(""), 10, S::npos); + test(S("mjqdgalkpc"), S("dplqa"), 10, 8); + test(S("kthqnfcerm"), S("dkacjoptns"), 10, 6); + test(S("dfsjhanorc"), S("hqfimtrgnbekpdcsjalo"), 10, 9); + test(S("eqsgalomhb"), S(""), 11, S::npos); + test(S("akiteljmoh"), S("lofbc"), 11, 8); + test(S("hlbdfreqjo"), S("astoegbfpn"), 11, 9); + test(S("taqobhlerg"), S("pdgreqomsncafklhtibj"), 11, 9); + test(S("snafbdlghrjkpqtoceim"), S(""), 0, S::npos); + test(S("aemtbrgcklhndjisfpoq"), S("lbtqd"), 0, S::npos); + test(S("pnracgfkjdiholtbqsem"), S("tboimldpjh"), 0, 0); + test(S("dicfltehbsgrmojnpkaq"), S("slcerthdaiqjfnobgkpm"), 0, 0); + test(S("jlnkraeodhcspfgbqitm"), S(""), 1, S::npos); + test(S("lhosrngtmfjikbqpcade"), S("aqibs"), 1, S::npos); + test(S("rbtaqjhgkneisldpmfoc"), S("gtfblmqinc"), 1, 1); + test(S("gpifsqlrdkbonjtmheca"), S("mkqpbtdalgniorhfescj"), 1, 1); + test(S("hdpkobnsalmcfijregtq"), S(""), 10, S::npos); + test(S("jtlshdgqaiprkbcoenfm"), S("pblas"), 10, 10); + test(S("fkdrbqltsgmcoiphneaj"), S("arosdhcfme"), 10, 10); + test(S("crsplifgtqedjohnabmk"), S("blkhjeogicatqfnpdmsr"), 10, 10); + test(S("niptglfbosehkamrdqcj"), S(""), 19, S::npos); + test(S("copqdhstbingamjfkler"), S("djkqc"), 19, 16); + test(S("mrtaefilpdsgocnhqbjk"), S("lgokshjtpb"), 19, 19); + test(S("kojatdhlcmigpbfrqnes"), S("bqjhtkfepimcnsgrlado"), 19, 19); + test(S("eaintpchlqsbdgrkjofm"), S(""), 20, S::npos); + test(S("gjnhidfsepkrtaqbmclo"), S("nocfa"), 20, 19); + test(S("spocfaktqdbiejlhngmr"), S("bgtajmiedc"), 20, 18); + test(S("rphmlekgfscndtaobiqj"), S("lsckfnqgdahejiopbtmr"), 20, 19); + test(S("liatsqdoegkmfcnbhrpj"), S(""), 21, S::npos); + test(S("binjagtfldkrspcomqeh"), S("gfsrt"), 21, 12); + test(S("latkmisecnorjbfhqpdg"), S("pfsocbhjtm"), 21, 17); + test(S("lecfratdjkhnsmqpoigb"), S("tpflmdnoicjgkberhqsa"), 21, 19); } template -void test1() -{ - test(S(""), S(""), S::npos); - test(S(""), S("laenf"), S::npos); - test(S(""), S("pqlnkmbdjo"), S::npos); - test(S(""), S("qkamfogpnljdcshbreti"), S::npos); - test(S("nhmko"), S(""), S::npos); - test(S("lahfb"), S("irkhs"), 2); - test(S("gmfhd"), S("kantesmpgj"), 1); - test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), 4); - test(S("eolhfgpjqk"), S(""), S::npos); - test(S("nbatdlmekr"), S("bnrpe"), 9); - test(S("jdmciepkaq"), S("jtdaefblso"), 8); - test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), 9); - test(S("gprdcokbnjhlsfmtieqa"), S(""), S::npos); - test(S("qjghlnftcaismkropdeb"), S("bjaht"), 19); - test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 19); - test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 19); +void test1() { + test(S(""), S(""), S::npos); + test(S(""), S("laenf"), S::npos); + test(S(""), S("pqlnkmbdjo"), S::npos); + test(S(""), S("qkamfogpnljdcshbreti"), S::npos); + test(S("nhmko"), S(""), S::npos); + test(S("lahfb"), S("irkhs"), 2); + test(S("gmfhd"), S("kantesmpgj"), 1); + test(S("odaft"), S("oknlrstdpiqmjbaghcfe"), 4); + test(S("eolhfgpjqk"), S(""), S::npos); + test(S("nbatdlmekr"), S("bnrpe"), 9); + test(S("jdmciepkaq"), S("jtdaefblso"), 8); + test(S("hkbgspoflt"), S("oselktgbcapndfjihrmq"), 9); + test(S("gprdcokbnjhlsfmtieqa"), S(""), S::npos); + test(S("qjghlnftcaismkropdeb"), S("bjaht"), 19); + test(S("pnalfrdtkqcmojiesbhg"), S("hjlcmgpket"), 19); + test(S("pniotcfrhqsmgdkjbael"), S("htaobedqikfplcgjsmrn"), 19); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size.pass.cpp @@ -19,158 +19,148 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos)); - assert(s.find(str, pos) == x); - if (x != S::npos) - { - typename S::size_type n = S::traits_type::length(str); - assert(pos <= x && x + n <= s.size()); - } +void test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos)); + assert(s.find(str, pos) == x); + if (x != S::npos) { + typename S::size_type n = S::traits_type::length(str); + assert(pos <= x && x + n <= s.size()); + } } template -void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str)); - assert(s.find(str) == x); - if (x != S::npos) - { - typename S::size_type n = S::traits_type::length(str); - assert(0 <= x && x + n <= s.size()); - } +void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str)); + assert(s.find(str) == x); + if (x != S::npos) { + typename S::size_type n = S::traits_type::length(str); + assert(0 <= x && x + n <= s.size()); + } } template -void test0() -{ - test(S(""), "", 0, 0); - test(S(""), "abcde", 0, S::npos); - test(S(""), "abcdeabcde", 0, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S(""), "", 1, S::npos); - test(S(""), "abcde", 1, S::npos); - test(S(""), "abcdeabcde", 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcde"), "", 0, 0); - test(S("abcde"), "abcde", 0, 0); - test(S("abcde"), "abcdeabcde", 0, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S("abcde"), "", 1, 1); - test(S("abcde"), "abcde", 1, S::npos); - test(S("abcde"), "abcdeabcde", 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcde"), "", 2, 2); - test(S("abcde"), "abcde", 2, S::npos); - test(S("abcde"), "abcdeabcde", 2, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, S::npos); - test(S("abcde"), "", 4, 4); - test(S("abcde"), "abcde", 4, S::npos); - test(S("abcde"), "abcdeabcde", 4, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, S::npos); - test(S("abcde"), "", 5, 5); - test(S("abcde"), "abcde", 5, S::npos); - test(S("abcde"), "abcdeabcde", 5, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, S::npos); - test(S("abcde"), "", 6, S::npos); - test(S("abcde"), "abcde", 6, S::npos); - test(S("abcde"), "abcdeabcde", 6, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, S::npos); - test(S("abcdeabcde"), "", 0, 0); - test(S("abcdeabcde"), "abcde", 0, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S("abcdeabcde"), "", 1, 1); - test(S("abcdeabcde"), "abcde", 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 1, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcdeabcde"), "", 5, 5); - test(S("abcdeabcde"), "abcde", 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, S::npos); - test(S("abcdeabcde"), "", 9, 9); - test(S("abcdeabcde"), "abcde", 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, S::npos); - test(S("abcdeabcde"), "", 10, 10); - test(S("abcdeabcde"), "abcde", 10, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); - test(S("abcdeabcde"), "", 11, S::npos); - test(S("abcdeabcde"), "abcde", 11, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "", 1, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 19, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 20, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, S::npos); +void test0() { + test(S(""), "", 0, 0); + test(S(""), "abcde", 0, S::npos); + test(S(""), "abcdeabcde", 0, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S(""), "", 1, S::npos); + test(S(""), "abcde", 1, S::npos); + test(S(""), "abcdeabcde", 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcde"), "", 0, 0); + test(S("abcde"), "abcde", 0, 0); + test(S("abcde"), "abcdeabcde", 0, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S("abcde"), "", 1, 1); + test(S("abcde"), "abcde", 1, S::npos); + test(S("abcde"), "abcdeabcde", 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcde"), "", 2, 2); + test(S("abcde"), "abcde", 2, S::npos); + test(S("abcde"), "abcdeabcde", 2, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, S::npos); + test(S("abcde"), "", 4, 4); + test(S("abcde"), "abcde", 4, S::npos); + test(S("abcde"), "abcdeabcde", 4, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, S::npos); + test(S("abcde"), "", 5, 5); + test(S("abcde"), "abcde", 5, S::npos); + test(S("abcde"), "abcdeabcde", 5, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, S::npos); + test(S("abcde"), "", 6, S::npos); + test(S("abcde"), "abcde", 6, S::npos); + test(S("abcde"), "abcdeabcde", 6, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, S::npos); + test(S("abcdeabcde"), "", 0, 0); + test(S("abcdeabcde"), "abcde", 0, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S("abcdeabcde"), "", 1, 1); + test(S("abcdeabcde"), "abcde", 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 1, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcdeabcde"), "", 5, 5); + test(S("abcdeabcde"), "abcde", 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, S::npos); + test(S("abcdeabcde"), "", 9, 9); + test(S("abcdeabcde"), "abcde", 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, S::npos); + test(S("abcdeabcde"), "", 10, 10); + test(S("abcdeabcde"), "abcde", 10, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); + test(S("abcdeabcde"), "", 11, S::npos); + test(S("abcdeabcde"), "abcde", 11, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "", 1, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 19, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 20, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, S::npos); } template -void test1() -{ - test(S(""), "", 0); - test(S(""), "abcde", S::npos); - test(S(""), "abcdeabcde", S::npos); - test(S(""), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcde"), "", 0); - test(S("abcde"), "abcde", 0); - test(S("abcde"), "abcdeabcde", S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcdeabcde"), "", 0); - test(S("abcdeabcde"), "abcde", 0); - test(S("abcdeabcde"), "abcdeabcde", 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0); +void test1() { + test(S(""), "", 0); + test(S(""), "abcde", S::npos); + test(S(""), "abcdeabcde", S::npos); + test(S(""), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcde"), "", 0); + test(S("abcde"), "abcde", 0); + test(S("abcde"), "abcdeabcde", S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcdeabcde"), "", 0); + test(S("abcdeabcde"), "abcde", 0); + test(S("abcdeabcde"), "abcdeabcde", 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find( "") == 0, "" ); - static_assert (sv1.find( "abcde") == SV::npos, "" ); - static_assert (sv2.find( "") == 0, "" ); - static_assert (sv2.find( "abcde") == 0, "" ); - static_assert (sv2.find( "abcde", 1) == SV::npos, "" ); - } + static_assert(sv1.find("") == 0, ""); + static_assert(sv1.find("abcde") == SV::npos, ""); + static_assert(sv2.find("") == 0, ""); + static_assert(sv2.find("abcde") == 0, ""); + static_assert(sv2.find("abcde", 1) == SV::npos, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_pointer_size_size.pass.cpp @@ -19,379 +19,375 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos, n)); - assert(s.find(str, pos, n) == x); - if (x != S::npos) - assert(pos <= x && x + n <= s.size()); +void test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos, n)); + assert(s.find(str, pos, n) == x); + if (x != S::npos) + assert(pos <= x && x + n <= s.size()); } template -void test0() -{ - test(S(""), "", 0, 0, 0); - test(S(""), "abcde", 0, 0, 0); - test(S(""), "abcde", 0, 1, S::npos); - test(S(""), "abcde", 0, 2, S::npos); - test(S(""), "abcde", 0, 4, S::npos); - test(S(""), "abcde", 0, 5, S::npos); - test(S(""), "abcdeabcde", 0, 0, 0); - test(S(""), "abcdeabcde", 0, 1, S::npos); - test(S(""), "abcdeabcde", 0, 5, S::npos); - test(S(""), "abcdeabcde", 0, 9, S::npos); - test(S(""), "abcdeabcde", 0, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S(""), "", 1, 0, S::npos); - test(S(""), "abcde", 1, 0, S::npos); - test(S(""), "abcde", 1, 1, S::npos); - test(S(""), "abcde", 1, 2, S::npos); - test(S(""), "abcde", 1, 4, S::npos); - test(S(""), "abcde", 1, 5, S::npos); - test(S(""), "abcdeabcde", 1, 0, S::npos); - test(S(""), "abcdeabcde", 1, 1, S::npos); - test(S(""), "abcdeabcde", 1, 5, S::npos); - test(S(""), "abcdeabcde", 1, 9, S::npos); - test(S(""), "abcdeabcde", 1, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 0, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcde"), "", 0, 0, 0); - test(S("abcde"), "abcde", 0, 0, 0); - test(S("abcde"), "abcde", 0, 1, 0); - test(S("abcde"), "abcde", 0, 2, 0); - test(S("abcde"), "abcde", 0, 4, 0); - test(S("abcde"), "abcde", 0, 5, 0); - test(S("abcde"), "abcdeabcde", 0, 0, 0); - test(S("abcde"), "abcdeabcde", 0, 1, 0); - test(S("abcde"), "abcdeabcde", 0, 5, 0); - test(S("abcde"), "abcdeabcde", 0, 9, S::npos); - test(S("abcde"), "abcdeabcde", 0, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S("abcde"), "", 1, 0, 1); - test(S("abcde"), "abcde", 1, 0, 1); - test(S("abcde"), "abcde", 1, 1, S::npos); - test(S("abcde"), "abcde", 1, 2, S::npos); - test(S("abcde"), "abcde", 1, 4, S::npos); - test(S("abcde"), "abcde", 1, 5, S::npos); - test(S("abcde"), "abcdeabcde", 1, 0, 1); - test(S("abcde"), "abcdeabcde", 1, 1, S::npos); - test(S("abcde"), "abcdeabcde", 1, 5, S::npos); - test(S("abcde"), "abcdeabcde", 1, 9, S::npos); - test(S("abcde"), "abcdeabcde", 1, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcde"), "", 2, 0, 2); - test(S("abcde"), "abcde", 2, 0, 2); - test(S("abcde"), "abcde", 2, 1, S::npos); - test(S("abcde"), "abcde", 2, 2, S::npos); - test(S("abcde"), "abcde", 2, 4, S::npos); - test(S("abcde"), "abcde", 2, 5, S::npos); - test(S("abcde"), "abcdeabcde", 2, 0, 2); - test(S("abcde"), "abcdeabcde", 2, 1, S::npos); - test(S("abcde"), "abcdeabcde", 2, 5, S::npos); - test(S("abcde"), "abcdeabcde", 2, 9, S::npos); - test(S("abcde"), "abcdeabcde", 2, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos); - test(S("abcde"), "", 4, 0, 4); - test(S("abcde"), "abcde", 4, 0, 4); - test(S("abcde"), "abcde", 4, 1, S::npos); - test(S("abcde"), "abcde", 4, 2, S::npos); - test(S("abcde"), "abcde", 4, 4, S::npos); - test(S("abcde"), "abcde", 4, 5, S::npos); - test(S("abcde"), "abcdeabcde", 4, 0, 4); - test(S("abcde"), "abcdeabcde", 4, 1, S::npos); - test(S("abcde"), "abcdeabcde", 4, 5, S::npos); - test(S("abcde"), "abcdeabcde", 4, 9, S::npos); - test(S("abcde"), "abcdeabcde", 4, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos); - test(S("abcde"), "", 5, 0, 5); - test(S("abcde"), "abcde", 5, 0, 5); - test(S("abcde"), "abcde", 5, 1, S::npos); - test(S("abcde"), "abcde", 5, 2, S::npos); +void test0() { + test(S(""), "", 0, 0, 0); + test(S(""), "abcde", 0, 0, 0); + test(S(""), "abcde", 0, 1, S::npos); + test(S(""), "abcde", 0, 2, S::npos); + test(S(""), "abcde", 0, 4, S::npos); + test(S(""), "abcde", 0, 5, S::npos); + test(S(""), "abcdeabcde", 0, 0, 0); + test(S(""), "abcdeabcde", 0, 1, S::npos); + test(S(""), "abcdeabcde", 0, 5, S::npos); + test(S(""), "abcdeabcde", 0, 9, S::npos); + test(S(""), "abcdeabcde", 0, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S(""), "", 1, 0, S::npos); + test(S(""), "abcde", 1, 0, S::npos); + test(S(""), "abcde", 1, 1, S::npos); + test(S(""), "abcde", 1, 2, S::npos); + test(S(""), "abcde", 1, 4, S::npos); + test(S(""), "abcde", 1, 5, S::npos); + test(S(""), "abcdeabcde", 1, 0, S::npos); + test(S(""), "abcdeabcde", 1, 1, S::npos); + test(S(""), "abcdeabcde", 1, 5, S::npos); + test(S(""), "abcdeabcde", 1, 9, S::npos); + test(S(""), "abcdeabcde", 1, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 0, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcde"), "", 0, 0, 0); + test(S("abcde"), "abcde", 0, 0, 0); + test(S("abcde"), "abcde", 0, 1, 0); + test(S("abcde"), "abcde", 0, 2, 0); + test(S("abcde"), "abcde", 0, 4, 0); + test(S("abcde"), "abcde", 0, 5, 0); + test(S("abcde"), "abcdeabcde", 0, 0, 0); + test(S("abcde"), "abcdeabcde", 0, 1, 0); + test(S("abcde"), "abcdeabcde", 0, 5, 0); + test(S("abcde"), "abcdeabcde", 0, 9, S::npos); + test(S("abcde"), "abcdeabcde", 0, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S("abcde"), "", 1, 0, 1); + test(S("abcde"), "abcde", 1, 0, 1); + test(S("abcde"), "abcde", 1, 1, S::npos); + test(S("abcde"), "abcde", 1, 2, S::npos); + test(S("abcde"), "abcde", 1, 4, S::npos); + test(S("abcde"), "abcde", 1, 5, S::npos); + test(S("abcde"), "abcdeabcde", 1, 0, 1); + test(S("abcde"), "abcdeabcde", 1, 1, S::npos); + test(S("abcde"), "abcdeabcde", 1, 5, S::npos); + test(S("abcde"), "abcdeabcde", 1, 9, S::npos); + test(S("abcde"), "abcdeabcde", 1, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcde"), "", 2, 0, 2); + test(S("abcde"), "abcde", 2, 0, 2); + test(S("abcde"), "abcde", 2, 1, S::npos); + test(S("abcde"), "abcde", 2, 2, S::npos); + test(S("abcde"), "abcde", 2, 4, S::npos); + test(S("abcde"), "abcde", 2, 5, S::npos); + test(S("abcde"), "abcdeabcde", 2, 0, 2); + test(S("abcde"), "abcdeabcde", 2, 1, S::npos); + test(S("abcde"), "abcdeabcde", 2, 5, S::npos); + test(S("abcde"), "abcdeabcde", 2, 9, S::npos); + test(S("abcde"), "abcdeabcde", 2, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos); + test(S("abcde"), "", 4, 0, 4); + test(S("abcde"), "abcde", 4, 0, 4); + test(S("abcde"), "abcde", 4, 1, S::npos); + test(S("abcde"), "abcde", 4, 2, S::npos); + test(S("abcde"), "abcde", 4, 4, S::npos); + test(S("abcde"), "abcde", 4, 5, S::npos); + test(S("abcde"), "abcdeabcde", 4, 0, 4); + test(S("abcde"), "abcdeabcde", 4, 1, S::npos); + test(S("abcde"), "abcdeabcde", 4, 5, S::npos); + test(S("abcde"), "abcdeabcde", 4, 9, S::npos); + test(S("abcde"), "abcdeabcde", 4, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos); + test(S("abcde"), "", 5, 0, 5); + test(S("abcde"), "abcde", 5, 0, 5); + test(S("abcde"), "abcde", 5, 1, S::npos); + test(S("abcde"), "abcde", 5, 2, S::npos); } template -void test1() -{ - test(S("abcde"), "abcde", 5, 4, S::npos); - test(S("abcde"), "abcde", 5, 5, S::npos); - test(S("abcde"), "abcdeabcde", 5, 0, 5); - test(S("abcde"), "abcdeabcde", 5, 1, S::npos); - test(S("abcde"), "abcdeabcde", 5, 5, S::npos); - test(S("abcde"), "abcdeabcde", 5, 9, S::npos); - test(S("abcde"), "abcdeabcde", 5, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); - test(S("abcde"), "", 6, 0, S::npos); - test(S("abcde"), "abcde", 6, 0, S::npos); - test(S("abcde"), "abcde", 6, 1, S::npos); - test(S("abcde"), "abcde", 6, 2, S::npos); - test(S("abcde"), "abcde", 6, 4, S::npos); - test(S("abcde"), "abcde", 6, 5, S::npos); - test(S("abcde"), "abcdeabcde", 6, 0, S::npos); - test(S("abcde"), "abcdeabcde", 6, 1, S::npos); - test(S("abcde"), "abcdeabcde", 6, 5, S::npos); - test(S("abcde"), "abcdeabcde", 6, 9, S::npos); - test(S("abcde"), "abcdeabcde", 6, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos); - test(S("abcdeabcde"), "", 0, 0, 0); - test(S("abcdeabcde"), "abcde", 0, 0, 0); - test(S("abcdeabcde"), "abcde", 0, 1, 0); - test(S("abcdeabcde"), "abcde", 0, 2, 0); - test(S("abcdeabcde"), "abcde", 0, 4, 0); - test(S("abcdeabcde"), "abcde", 0, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 0, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 1, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S("abcdeabcde"), "", 1, 0, 1); - test(S("abcdeabcde"), "abcde", 1, 0, 1); - test(S("abcdeabcde"), "abcde", 1, 1, 5); - test(S("abcdeabcde"), "abcde", 1, 2, 5); - test(S("abcdeabcde"), "abcde", 1, 4, 5); - test(S("abcdeabcde"), "abcde", 1, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 1, 0, 1); - test(S("abcdeabcde"), "abcdeabcde", 1, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 1, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 1, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 1, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcdeabcde"), "", 5, 0, 5); - test(S("abcdeabcde"), "abcde", 5, 0, 5); - test(S("abcdeabcde"), "abcde", 5, 1, 5); - test(S("abcdeabcde"), "abcde", 5, 2, 5); - test(S("abcdeabcde"), "abcde", 5, 4, 5); - test(S("abcdeabcde"), "abcde", 5, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 0, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 5, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); - test(S("abcdeabcde"), "", 9, 0, 9); - test(S("abcdeabcde"), "abcde", 9, 0, 9); - test(S("abcdeabcde"), "abcde", 9, 1, S::npos); - test(S("abcdeabcde"), "abcde", 9, 2, S::npos); - test(S("abcdeabcde"), "abcde", 9, 4, S::npos); - test(S("abcdeabcde"), "abcde", 9, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, 0, 9); - test(S("abcdeabcde"), "abcdeabcde", 9, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 9, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos); - test(S("abcdeabcde"), "", 10, 0, 10); - test(S("abcdeabcde"), "abcde", 10, 0, 10); - test(S("abcdeabcde"), "abcde", 10, 1, S::npos); - test(S("abcdeabcde"), "abcde", 10, 2, S::npos); - test(S("abcdeabcde"), "abcde", 10, 4, S::npos); - test(S("abcdeabcde"), "abcde", 10, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 10, 0, 10); - test(S("abcdeabcde"), "abcdeabcde", 10, 1, S::npos); +void test1() { + test(S("abcde"), "abcde", 5, 4, S::npos); + test(S("abcde"), "abcde", 5, 5, S::npos); + test(S("abcde"), "abcdeabcde", 5, 0, 5); + test(S("abcde"), "abcdeabcde", 5, 1, S::npos); + test(S("abcde"), "abcdeabcde", 5, 5, S::npos); + test(S("abcde"), "abcdeabcde", 5, 9, S::npos); + test(S("abcde"), "abcdeabcde", 5, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); + test(S("abcde"), "", 6, 0, S::npos); + test(S("abcde"), "abcde", 6, 0, S::npos); + test(S("abcde"), "abcde", 6, 1, S::npos); + test(S("abcde"), "abcde", 6, 2, S::npos); + test(S("abcde"), "abcde", 6, 4, S::npos); + test(S("abcde"), "abcde", 6, 5, S::npos); + test(S("abcde"), "abcdeabcde", 6, 0, S::npos); + test(S("abcde"), "abcdeabcde", 6, 1, S::npos); + test(S("abcde"), "abcdeabcde", 6, 5, S::npos); + test(S("abcde"), "abcdeabcde", 6, 9, S::npos); + test(S("abcde"), "abcdeabcde", 6, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos); + test(S("abcdeabcde"), "", 0, 0, 0); + test(S("abcdeabcde"), "abcde", 0, 0, 0); + test(S("abcdeabcde"), "abcde", 0, 1, 0); + test(S("abcdeabcde"), "abcde", 0, 2, 0); + test(S("abcdeabcde"), "abcde", 0, 4, 0); + test(S("abcdeabcde"), "abcde", 0, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 0, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 1, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S("abcdeabcde"), "", 1, 0, 1); + test(S("abcdeabcde"), "abcde", 1, 0, 1); + test(S("abcdeabcde"), "abcde", 1, 1, 5); + test(S("abcdeabcde"), "abcde", 1, 2, 5); + test(S("abcdeabcde"), "abcde", 1, 4, 5); + test(S("abcdeabcde"), "abcde", 1, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 1, 0, 1); + test(S("abcdeabcde"), "abcdeabcde", 1, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 1, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 1, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 1, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcdeabcde"), "", 5, 0, 5); + test(S("abcdeabcde"), "abcde", 5, 0, 5); + test(S("abcdeabcde"), "abcde", 5, 1, 5); + test(S("abcdeabcde"), "abcde", 5, 2, 5); + test(S("abcdeabcde"), "abcde", 5, 4, 5); + test(S("abcdeabcde"), "abcde", 5, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 0, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 5, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); + test(S("abcdeabcde"), "", 9, 0, 9); + test(S("abcdeabcde"), "abcde", 9, 0, 9); + test(S("abcdeabcde"), "abcde", 9, 1, S::npos); + test(S("abcdeabcde"), "abcde", 9, 2, S::npos); + test(S("abcdeabcde"), "abcde", 9, 4, S::npos); + test(S("abcdeabcde"), "abcde", 9, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, 0, 9); + test(S("abcdeabcde"), "abcdeabcde", 9, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 9, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos); + test(S("abcdeabcde"), "", 10, 0, 10); + test(S("abcdeabcde"), "abcde", 10, 0, 10); + test(S("abcdeabcde"), "abcde", 10, 1, S::npos); + test(S("abcdeabcde"), "abcde", 10, 2, S::npos); + test(S("abcdeabcde"), "abcde", 10, 4, S::npos); + test(S("abcdeabcde"), "abcde", 10, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 10, 0, 10); + test(S("abcdeabcde"), "abcdeabcde", 10, 1, S::npos); } template -void test2() -{ - test(S("abcdeabcde"), "abcdeabcde", 10, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 10, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 10, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); - test(S("abcdeabcde"), "", 11, 0, S::npos); - test(S("abcdeabcde"), "abcde", 11, 0, S::npos); - test(S("abcdeabcde"), "abcde", 11, 1, S::npos); - test(S("abcdeabcde"), "abcde", 11, 2, S::npos); - test(S("abcdeabcde"), "abcde", 11, 4, S::npos); - test(S("abcdeabcde"), "abcde", 11, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 0, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 5, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 9, S::npos); - test(S("abcdeabcde"), "abcdeabcde", 11, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 5); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 5); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 5); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20); +void test2() { + test(S("abcdeabcde"), "abcdeabcde", 10, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 10, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 10, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); + test(S("abcdeabcde"), "", 11, 0, S::npos); + test(S("abcdeabcde"), "abcde", 11, 0, S::npos); + test(S("abcdeabcde"), "abcde", 11, 1, S::npos); + test(S("abcdeabcde"), "abcde", 11, 2, S::npos); + test(S("abcdeabcde"), "abcde", 11, 4, S::npos); + test(S("abcdeabcde"), "abcde", 11, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 0, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 5, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 9, S::npos); + test(S("abcdeabcde"), "abcdeabcde", 11, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 5); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 5); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 5); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20); } template -void test3() -{ - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 21, 0, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 0, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 2, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 4, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 0, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 5, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 9, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, S::npos); +void test3() { + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 21, 0, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 0, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 2, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 4, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 0, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 5, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 9, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, S::npos); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); test2(); test3(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find( "", 0, 0 ) == 0, "" ); - static_assert (sv1.find( "abcde", 0, 0 ) == 0, "" ); - static_assert (sv1.find( "abcde", 0, 1 ) == SV::npos, "" ); - static_assert (sv2.find( "", 0, 0 ) == 0, "" ); - static_assert (sv2.find( "abcde", 0, 0 ) == 0, "" ); - static_assert (sv2.find( "abcde", 0, 1 ) == 0, "" ); - } + static_assert(sv1.find("", 0, 0) == 0, ""); + static_assert(sv1.find("abcde", 0, 0) == 0, ""); + static_assert(sv1.find("abcde", 0, 1) == SV::npos, ""); + static_assert(sv2.find("", 0, 0) == 0, ""); + static_assert(sv2.find("abcde", 0, 0) == 0, ""); + static_assert(sv2.find("abcde", 0, 1) == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/find_string_view_size.pass.cpp @@ -19,151 +19,144 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos)); - assert(s.find(str, pos) == x); - if (x != S::npos) - assert(pos <= x && x + str.size() <= s.size()); +void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str, pos)); + assert(s.find(str, pos) == x); + if (x != S::npos) + assert(pos <= x && x + str.size() <= s.size()); } template -void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.find(str)); - assert(s.find(str) == x); - if (x != S::npos) - assert(0 <= x && x + str.size() <= s.size()); +void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.find(str)); + assert(s.find(str) == x); + if (x != S::npos) + assert(0 <= x && x + str.size() <= s.size()); } template -void test0() -{ - test(S(""), S(""), 0, 0); - test(S(""), S("abcde"), 0, S::npos); - test(S(""), S("abcdeabcde"), 0, S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S(""), S(""), 1, S::npos); - test(S(""), S("abcde"), 1, S::npos); - test(S(""), S("abcdeabcde"), 1, S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), S(""), 0, 0); - test(S("abcde"), S("abcde"), 0, 0); - test(S("abcde"), S("abcdeabcde"), 0, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcde"), S(""), 1, 1); - test(S("abcde"), S("abcde"), 1, S::npos); - test(S("abcde"), S("abcdeabcde"), 1, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), S(""), 2, 2); - test(S("abcde"), S("abcde"), 2, S::npos); - test(S("abcde"), S("abcdeabcde"), 2, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 2, S::npos); - test(S("abcde"), S(""), 4, 4); - test(S("abcde"), S("abcde"), 4, S::npos); - test(S("abcde"), S("abcdeabcde"), 4, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 4, S::npos); - test(S("abcde"), S(""), 5, 5); - test(S("abcde"), S("abcde"), 5, S::npos); - test(S("abcde"), S("abcdeabcde"), 5, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcde"), S(""), 6, S::npos); - test(S("abcde"), S("abcde"), 6, S::npos); - test(S("abcde"), S("abcdeabcde"), 6, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 6, S::npos); - test(S("abcdeabcde"), S(""), 0, 0); - test(S("abcdeabcde"), S("abcde"), 0, 0); - test(S("abcdeabcde"), S("abcdeabcde"), 0, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcdeabcde"), S(""), 1, 1); - test(S("abcdeabcde"), S("abcde"), 1, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), S(""), 5, 5); - test(S("abcdeabcde"), S("abcde"), 5, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), S(""), 9, 9); - test(S("abcdeabcde"), S("abcde"), 9, S::npos); - test(S("abcdeabcde"), S("abcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), S(""), 10, 10); - test(S("abcdeabcde"), S("abcde"), 10, S::npos); - test(S("abcdeabcde"), S("abcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), S(""), 11, S::npos); - test(S("abcdeabcde"), S("abcde"), 11, S::npos); - test(S("abcdeabcde"), S("abcdeabcde"), 11, S::npos); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 1, 1); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 1, 5); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 1, 5); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 19, 19); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 19, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 20, 20); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 21, S::npos); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 21, S::npos); +void test0() { + test(S(""), S(""), 0, 0); + test(S(""), S("abcde"), 0, S::npos); + test(S(""), S("abcdeabcde"), 0, S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S(""), S(""), 1, S::npos); + test(S(""), S("abcde"), 1, S::npos); + test(S(""), S("abcdeabcde"), 1, S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), S(""), 0, 0); + test(S("abcde"), S("abcde"), 0, 0); + test(S("abcde"), S("abcdeabcde"), 0, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcde"), S(""), 1, 1); + test(S("abcde"), S("abcde"), 1, S::npos); + test(S("abcde"), S("abcdeabcde"), 1, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), S(""), 2, 2); + test(S("abcde"), S("abcde"), 2, S::npos); + test(S("abcde"), S("abcdeabcde"), 2, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 2, S::npos); + test(S("abcde"), S(""), 4, 4); + test(S("abcde"), S("abcde"), 4, S::npos); + test(S("abcde"), S("abcdeabcde"), 4, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 4, S::npos); + test(S("abcde"), S(""), 5, 5); + test(S("abcde"), S("abcde"), 5, S::npos); + test(S("abcde"), S("abcdeabcde"), 5, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcde"), S(""), 6, S::npos); + test(S("abcde"), S("abcde"), 6, S::npos); + test(S("abcde"), S("abcdeabcde"), 6, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 6, S::npos); + test(S("abcdeabcde"), S(""), 0, 0); + test(S("abcdeabcde"), S("abcde"), 0, 0); + test(S("abcdeabcde"), S("abcdeabcde"), 0, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcdeabcde"), S(""), 1, 1); + test(S("abcdeabcde"), S("abcde"), 1, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), S(""), 5, 5); + test(S("abcdeabcde"), S("abcde"), 5, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), S(""), 9, 9); + test(S("abcdeabcde"), S("abcde"), 9, S::npos); + test(S("abcdeabcde"), S("abcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), S(""), 10, 10); + test(S("abcdeabcde"), S("abcde"), 10, S::npos); + test(S("abcdeabcde"), S("abcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), S(""), 11, S::npos); + test(S("abcdeabcde"), S("abcde"), 11, S::npos); + test(S("abcdeabcde"), S("abcdeabcde"), 11, S::npos); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 1, 1); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 1, 5); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 1, 5); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 19, 19); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 19, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 20, 20); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 21, S::npos); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 21, S::npos); } template -void test1() -{ - test(S(""), S(""), 0); - test(S(""), S("abcde"), S::npos); - test(S(""), S("abcdeabcde"), S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcde"), S(""), 0); - test(S("abcde"), S("abcde"), 0); - test(S("abcde"), S("abcdeabcde"), S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcde"), S(""), 0); - test(S("abcdeabcde"), S("abcde"), 0); - test(S("abcdeabcde"), S("abcdeabcde"), 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 0); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0); +void test1() { + test(S(""), S(""), 0); + test(S(""), S("abcde"), S::npos); + test(S(""), S("abcdeabcde"), S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcde"), S(""), 0); + test(S("abcde"), S("abcde"), 0); + test(S("abcde"), S("abcdeabcde"), S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcde"), S(""), 0); + test(S("abcdeabcde"), S("abcde"), 0); + test(S("abcdeabcde"), S("abcdeabcde"), 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 0); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.find(sv1) == 0, "" ); - static_assert (sv1.find(sv2) == SV::npos, "" ); - static_assert (sv2.find(sv1) == 0, "" ); - static_assert (sv2.find(sv2) == 0, "" ); - static_assert (sv2.find(sv2, 1 ) == SV::npos, "" ); - } + static_assert(sv1.find(sv1) == 0, ""); + static_assert(sv1.find(sv2) == SV::npos, ""); + static_assert(sv2.find(sv1) == 0, ""); + static_assert(sv2.find(sv2) == 0, ""); + static_assert(sv2.find(sv2, 1) == SV::npos, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/rfind_char_size.pass.cpp @@ -18,29 +18,23 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, typename S::value_type c, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(c, pos)); - assert(s.rfind(c, pos) == x); - if (x != S::npos) - assert(x <= pos && x + 1 <= s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(c, pos)); + assert(s.rfind(c, pos) == x); + if (x != S::npos) + assert(x <= pos && x + 1 <= s.size()); } template -void -test(const S& s, typename S::value_type c, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(c)); - assert(s.rfind(c) == x); - if (x != S::npos) - assert(x + 1 <= s.size()); +void test(const S& s, typename S::value_type c, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(c)); + assert(s.rfind(c) == x); + if (x != S::npos) + assert(x + 1 <= s.size()); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test(S(""), 'b', 0, S::npos); test(S(""), 'b', 1, S::npos); @@ -67,22 +61,22 @@ test(S("abcde"), 'b', 1); test(S("abcdeabcde"), 'b', 6); test(S("abcdeabcdeabcdeabcde"), 'b', 16); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.rfind( 'b', 0 ) == SV::npos, "" ); - static_assert (sv1.rfind( 'b', 1 ) == SV::npos, "" ); - static_assert (sv2.rfind( 'b', 0 ) == SV::npos, "" ); - static_assert (sv2.rfind( 'b', 1 ) == 1, "" ); - static_assert (sv2.rfind( 'b', 2 ) == 1, "" ); - static_assert (sv2.rfind( 'b', 3 ) == 1, "" ); - static_assert (sv2.rfind( 'b', 4 ) == 1, "" ); - } + static_assert(sv1.rfind('b', 0) == SV::npos, ""); + static_assert(sv1.rfind('b', 1) == SV::npos, ""); + static_assert(sv2.rfind('b', 0) == SV::npos, ""); + static_assert(sv2.rfind('b', 1) == 1, ""); + static_assert(sv2.rfind('b', 2) == 1, ""); + static_assert(sv2.rfind('b', 3) == 1, ""); + static_assert(sv2.rfind('b', 4) == 1, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size.pass.cpp @@ -18,159 +18,149 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos)); - assert(s.rfind(str, pos) == x); - if (x != S::npos) - { - typename S::size_type n = S::traits_type::length(str); - assert(x <= pos && x + n <= s.size()); - } +void test(const S& s, const typename S::value_type* str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos)); + assert(s.rfind(str, pos) == x); + if (x != S::npos) { + typename S::size_type n = S::traits_type::length(str); + assert(x <= pos && x + n <= s.size()); + } } template -void -test(const S& s, const typename S::value_type* str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str)); - assert(s.rfind(str) == x); - if (x != S::npos) - { - typename S::size_type pos = s.size(); - typename S::size_type n = S::traits_type::length(str); - assert(x <= pos && x + n <= s.size()); - } +void test(const S& s, const typename S::value_type* str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str)); + assert(s.rfind(str) == x); + if (x != S::npos) { + typename S::size_type pos = s.size(); + typename S::size_type n = S::traits_type::length(str); + assert(x <= pos && x + n <= s.size()); + } } template -void test0() -{ - test(S(""), "", 0, 0); - test(S(""), "abcde", 0, S::npos); - test(S(""), "abcdeabcde", 0, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S(""), "", 1, 0); - test(S(""), "abcde", 1, S::npos); - test(S(""), "abcdeabcde", 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcde"), "", 0, 0); - test(S("abcde"), "abcde", 0, 0); - test(S("abcde"), "abcdeabcde", 0, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S("abcde"), "", 1, 1); - test(S("abcde"), "abcde", 1, 0); - test(S("abcde"), "abcdeabcde", 1, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcde"), "", 2, 2); - test(S("abcde"), "abcde", 2, 0); - test(S("abcde"), "abcdeabcde", 2, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, S::npos); - test(S("abcde"), "", 4, 4); - test(S("abcde"), "abcde", 4, 0); - test(S("abcde"), "abcdeabcde", 4, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, S::npos); - test(S("abcde"), "", 5, 5); - test(S("abcde"), "abcde", 5, 0); - test(S("abcde"), "abcdeabcde", 5, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, S::npos); - test(S("abcde"), "", 6, 5); - test(S("abcde"), "abcde", 6, 0); - test(S("abcde"), "abcdeabcde", 6, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, S::npos); - test(S("abcdeabcde"), "", 0, 0); - test(S("abcdeabcde"), "abcde", 0, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, S::npos); - test(S("abcdeabcde"), "", 1, 1); - test(S("abcdeabcde"), "abcde", 1, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); - test(S("abcdeabcde"), "", 5, 5); - test(S("abcdeabcde"), "abcde", 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, S::npos); - test(S("abcdeabcde"), "", 9, 9); - test(S("abcdeabcde"), "abcde", 9, 5); - test(S("abcdeabcde"), "abcdeabcde", 9, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, S::npos); - test(S("abcdeabcde"), "", 10, 10); - test(S("abcdeabcde"), "abcde", 10, 5); - test(S("abcdeabcde"), "abcdeabcde", 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); - test(S("abcdeabcde"), "", 11, 10); - test(S("abcdeabcde"), "abcde", 11, 5); - test(S("abcdeabcde"), "abcdeabcde", 11, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0); - test(S("abcdeabcdeabcdeabcde"), "", 1, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0); - test(S("abcdeabcdeabcdeabcde"), "", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0); - test(S("abcdeabcdeabcdeabcde"), "", 19, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0); - test(S("abcdeabcdeabcdeabcde"), "", 20, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 21, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0); +void test0() { + test(S(""), "", 0, 0); + test(S(""), "abcde", 0, S::npos); + test(S(""), "abcdeabcde", 0, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S(""), "", 1, 0); + test(S(""), "abcde", 1, S::npos); + test(S(""), "abcdeabcde", 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcde"), "", 0, 0); + test(S("abcde"), "abcde", 0, 0); + test(S("abcde"), "abcdeabcde", 0, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S("abcde"), "", 1, 1); + test(S("abcde"), "abcde", 1, 0); + test(S("abcde"), "abcdeabcde", 1, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcde"), "", 2, 2); + test(S("abcde"), "abcde", 2, 0); + test(S("abcde"), "abcdeabcde", 2, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, S::npos); + test(S("abcde"), "", 4, 4); + test(S("abcde"), "abcde", 4, 0); + test(S("abcde"), "abcdeabcde", 4, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, S::npos); + test(S("abcde"), "", 5, 5); + test(S("abcde"), "abcde", 5, 0); + test(S("abcde"), "abcdeabcde", 5, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, S::npos); + test(S("abcde"), "", 6, 5); + test(S("abcde"), "abcde", 6, 0); + test(S("abcde"), "abcdeabcde", 6, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, S::npos); + test(S("abcdeabcde"), "", 0, 0); + test(S("abcdeabcde"), "abcde", 0, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, S::npos); + test(S("abcdeabcde"), "", 1, 1); + test(S("abcdeabcde"), "abcde", 1, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, S::npos); + test(S("abcdeabcde"), "", 5, 5); + test(S("abcdeabcde"), "abcde", 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, S::npos); + test(S("abcdeabcde"), "", 9, 9); + test(S("abcdeabcde"), "abcde", 9, 5); + test(S("abcdeabcde"), "abcdeabcde", 9, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, S::npos); + test(S("abcdeabcde"), "", 10, 10); + test(S("abcdeabcde"), "abcde", 10, 5); + test(S("abcdeabcde"), "abcdeabcde", 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, S::npos); + test(S("abcdeabcde"), "", 11, 10); + test(S("abcdeabcde"), "abcde", 11, 5); + test(S("abcdeabcde"), "abcdeabcde", 11, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0); + test(S("abcdeabcdeabcdeabcde"), "", 1, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0); + test(S("abcdeabcdeabcdeabcde"), "", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0); + test(S("abcdeabcdeabcdeabcde"), "", 19, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0); + test(S("abcdeabcdeabcdeabcde"), "", 20, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 21, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0); } template -void test1() -{ - test(S(""), "", 0); - test(S(""), "abcde", S::npos); - test(S(""), "abcdeabcde", S::npos); - test(S(""), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcde"), "", 5); - test(S("abcde"), "abcde", 0); - test(S("abcde"), "abcdeabcde", S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcdeabcde"), "", 10); - test(S("abcdeabcde"), "abcde", 5); - test(S("abcdeabcde"), "abcdeabcde", 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0); +void test1() { + test(S(""), "", 0); + test(S(""), "abcde", S::npos); + test(S(""), "abcdeabcde", S::npos); + test(S(""), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcde"), "", 5); + test(S("abcde"), "abcde", 0); + test(S("abcde"), "abcdeabcde", S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcdeabcde"), "", 10); + test(S("abcdeabcde"), "abcde", 5); + test(S("abcdeabcde"), "abcdeabcde", 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.rfind( "") == 0, "" ); - static_assert (sv1.rfind( "abcde") == SV::npos, "" ); - static_assert (sv2.rfind( "") == 5, "" ); - static_assert (sv2.rfind( "abcde") == 0, "" ); - static_assert (sv2.rfind( "abcde", 1) == 0, "" ); - } + static_assert(sv1.rfind("") == 0, ""); + static_assert(sv1.rfind("abcde") == SV::npos, ""); + static_assert(sv2.rfind("") == 5, ""); + static_assert(sv2.rfind("abcde") == 0, ""); + static_assert(sv2.rfind("abcde", 1) == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/rfind_pointer_size_size.pass.cpp @@ -18,379 +18,375 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const typename S::value_type* str, typename S::size_type pos, - typename S::size_type n, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos, n)); - assert(s.rfind(str, pos, n) == x); - if (x != S::npos) - assert(x <= pos && x + n <= s.size()); +void test(const S& s, + const typename S::value_type* str, + typename S::size_type pos, + typename S::size_type n, + typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos, n)); + assert(s.rfind(str, pos, n) == x); + if (x != S::npos) + assert(x <= pos && x + n <= s.size()); } template -void test0() -{ - test(S(""), "", 0, 0, 0); - test(S(""), "abcde", 0, 0, 0); - test(S(""), "abcde", 0, 1, S::npos); - test(S(""), "abcde", 0, 2, S::npos); - test(S(""), "abcde", 0, 4, S::npos); - test(S(""), "abcde", 0, 5, S::npos); - test(S(""), "abcdeabcde", 0, 0, 0); - test(S(""), "abcdeabcde", 0, 1, S::npos); - test(S(""), "abcdeabcde", 0, 5, S::npos); - test(S(""), "abcdeabcde", 0, 9, S::npos); - test(S(""), "abcdeabcde", 0, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S(""), "", 1, 0, 0); - test(S(""), "abcde", 1, 0, 0); - test(S(""), "abcde", 1, 1, S::npos); - test(S(""), "abcde", 1, 2, S::npos); - test(S(""), "abcde", 1, 4, S::npos); - test(S(""), "abcde", 1, 5, S::npos); - test(S(""), "abcdeabcde", 1, 0, 0); - test(S(""), "abcdeabcde", 1, 1, S::npos); - test(S(""), "abcdeabcde", 1, 5, S::npos); - test(S(""), "abcdeabcde", 1, 9, S::npos); - test(S(""), "abcdeabcde", 1, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 0, 0); - test(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcde"), "", 0, 0, 0); - test(S("abcde"), "abcde", 0, 0, 0); - test(S("abcde"), "abcde", 0, 1, 0); - test(S("abcde"), "abcde", 0, 2, 0); - test(S("abcde"), "abcde", 0, 4, 0); - test(S("abcde"), "abcde", 0, 5, 0); - test(S("abcde"), "abcdeabcde", 0, 0, 0); - test(S("abcde"), "abcdeabcde", 0, 1, 0); - test(S("abcde"), "abcdeabcde", 0, 5, 0); - test(S("abcde"), "abcdeabcde", 0, 9, S::npos); - test(S("abcde"), "abcdeabcde", 0, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S("abcde"), "", 1, 0, 1); - test(S("abcde"), "abcde", 1, 0, 1); - test(S("abcde"), "abcde", 1, 1, 0); - test(S("abcde"), "abcde", 1, 2, 0); - test(S("abcde"), "abcde", 1, 4, 0); - test(S("abcde"), "abcde", 1, 5, 0); - test(S("abcde"), "abcdeabcde", 1, 0, 1); - test(S("abcde"), "abcdeabcde", 1, 1, 0); - test(S("abcde"), "abcdeabcde", 1, 5, 0); - test(S("abcde"), "abcdeabcde", 1, 9, S::npos); - test(S("abcde"), "abcdeabcde", 1, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcde"), "", 2, 0, 2); - test(S("abcde"), "abcde", 2, 0, 2); - test(S("abcde"), "abcde", 2, 1, 0); - test(S("abcde"), "abcde", 2, 2, 0); - test(S("abcde"), "abcde", 2, 4, 0); - test(S("abcde"), "abcde", 2, 5, 0); - test(S("abcde"), "abcdeabcde", 2, 0, 2); - test(S("abcde"), "abcdeabcde", 2, 1, 0); - test(S("abcde"), "abcdeabcde", 2, 5, 0); - test(S("abcde"), "abcdeabcde", 2, 9, S::npos); - test(S("abcde"), "abcdeabcde", 2, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos); - test(S("abcde"), "", 4, 0, 4); - test(S("abcde"), "abcde", 4, 0, 4); - test(S("abcde"), "abcde", 4, 1, 0); - test(S("abcde"), "abcde", 4, 2, 0); - test(S("abcde"), "abcde", 4, 4, 0); - test(S("abcde"), "abcde", 4, 5, 0); - test(S("abcde"), "abcdeabcde", 4, 0, 4); - test(S("abcde"), "abcdeabcde", 4, 1, 0); - test(S("abcde"), "abcdeabcde", 4, 5, 0); - test(S("abcde"), "abcdeabcde", 4, 9, S::npos); - test(S("abcde"), "abcdeabcde", 4, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos); - test(S("abcde"), "", 5, 0, 5); - test(S("abcde"), "abcde", 5, 0, 5); - test(S("abcde"), "abcde", 5, 1, 0); - test(S("abcde"), "abcde", 5, 2, 0); +void test0() { + test(S(""), "", 0, 0, 0); + test(S(""), "abcde", 0, 0, 0); + test(S(""), "abcde", 0, 1, S::npos); + test(S(""), "abcde", 0, 2, S::npos); + test(S(""), "abcde", 0, 4, S::npos); + test(S(""), "abcde", 0, 5, S::npos); + test(S(""), "abcdeabcde", 0, 0, 0); + test(S(""), "abcdeabcde", 0, 1, S::npos); + test(S(""), "abcdeabcde", 0, 5, S::npos); + test(S(""), "abcdeabcde", 0, 9, S::npos); + test(S(""), "abcdeabcde", 0, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S(""), "abcdeabcdeabcdeabcde", 0, 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S(""), "", 1, 0, 0); + test(S(""), "abcde", 1, 0, 0); + test(S(""), "abcde", 1, 1, S::npos); + test(S(""), "abcde", 1, 2, S::npos); + test(S(""), "abcde", 1, 4, S::npos); + test(S(""), "abcde", 1, 5, S::npos); + test(S(""), "abcdeabcde", 1, 0, 0); + test(S(""), "abcdeabcde", 1, 1, S::npos); + test(S(""), "abcdeabcde", 1, 5, S::npos); + test(S(""), "abcdeabcde", 1, 9, S::npos); + test(S(""), "abcdeabcde", 1, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 0, 0); + test(S(""), "abcdeabcdeabcdeabcde", 1, 1, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S(""), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcde"), "", 0, 0, 0); + test(S("abcde"), "abcde", 0, 0, 0); + test(S("abcde"), "abcde", 0, 1, 0); + test(S("abcde"), "abcde", 0, 2, 0); + test(S("abcde"), "abcde", 0, 4, 0); + test(S("abcde"), "abcde", 0, 5, 0); + test(S("abcde"), "abcdeabcde", 0, 0, 0); + test(S("abcde"), "abcdeabcde", 0, 1, 0); + test(S("abcde"), "abcdeabcde", 0, 5, 0); + test(S("abcde"), "abcdeabcde", 0, 9, S::npos); + test(S("abcde"), "abcdeabcde", 0, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S("abcde"), "", 1, 0, 1); + test(S("abcde"), "abcde", 1, 0, 1); + test(S("abcde"), "abcde", 1, 1, 0); + test(S("abcde"), "abcde", 1, 2, 0); + test(S("abcde"), "abcde", 1, 4, 0); + test(S("abcde"), "abcde", 1, 5, 0); + test(S("abcde"), "abcdeabcde", 1, 0, 1); + test(S("abcde"), "abcdeabcde", 1, 1, 0); + test(S("abcde"), "abcdeabcde", 1, 5, 0); + test(S("abcde"), "abcdeabcde", 1, 9, S::npos); + test(S("abcde"), "abcdeabcde", 1, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcde"), "", 2, 0, 2); + test(S("abcde"), "abcde", 2, 0, 2); + test(S("abcde"), "abcde", 2, 1, 0); + test(S("abcde"), "abcde", 2, 2, 0); + test(S("abcde"), "abcde", 2, 4, 0); + test(S("abcde"), "abcde", 2, 5, 0); + test(S("abcde"), "abcdeabcde", 2, 0, 2); + test(S("abcde"), "abcdeabcde", 2, 1, 0); + test(S("abcde"), "abcdeabcde", 2, 5, 0); + test(S("abcde"), "abcdeabcde", 2, 9, S::npos); + test(S("abcde"), "abcdeabcde", 2, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 0, 2); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 2, 20, S::npos); + test(S("abcde"), "", 4, 0, 4); + test(S("abcde"), "abcde", 4, 0, 4); + test(S("abcde"), "abcde", 4, 1, 0); + test(S("abcde"), "abcde", 4, 2, 0); + test(S("abcde"), "abcde", 4, 4, 0); + test(S("abcde"), "abcde", 4, 5, 0); + test(S("abcde"), "abcdeabcde", 4, 0, 4); + test(S("abcde"), "abcdeabcde", 4, 1, 0); + test(S("abcde"), "abcdeabcde", 4, 5, 0); + test(S("abcde"), "abcdeabcde", 4, 9, S::npos); + test(S("abcde"), "abcdeabcde", 4, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 0, 4); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 4, 20, S::npos); + test(S("abcde"), "", 5, 0, 5); + test(S("abcde"), "abcde", 5, 0, 5); + test(S("abcde"), "abcde", 5, 1, 0); + test(S("abcde"), "abcde", 5, 2, 0); } template -void test1() -{ - test(S("abcde"), "abcde", 5, 4, 0); - test(S("abcde"), "abcde", 5, 5, 0); - test(S("abcde"), "abcdeabcde", 5, 0, 5); - test(S("abcde"), "abcdeabcde", 5, 1, 0); - test(S("abcde"), "abcdeabcde", 5, 5, 0); - test(S("abcde"), "abcdeabcde", 5, 9, S::npos); - test(S("abcde"), "abcdeabcde", 5, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); - test(S("abcde"), "", 6, 0, 5); - test(S("abcde"), "abcde", 6, 0, 5); - test(S("abcde"), "abcde", 6, 1, 0); - test(S("abcde"), "abcde", 6, 2, 0); - test(S("abcde"), "abcde", 6, 4, 0); - test(S("abcde"), "abcde", 6, 5, 0); - test(S("abcde"), "abcdeabcde", 6, 0, 5); - test(S("abcde"), "abcdeabcde", 6, 1, 0); - test(S("abcde"), "abcdeabcde", 6, 5, 0); - test(S("abcde"), "abcdeabcde", 6, 9, S::npos); - test(S("abcde"), "abcdeabcde", 6, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, 5); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, 0); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos); - test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos); - test(S("abcdeabcde"), "", 0, 0, 0); - test(S("abcdeabcde"), "abcde", 0, 0, 0); - test(S("abcdeabcde"), "abcde", 0, 1, 0); - test(S("abcdeabcde"), "abcde", 0, 2, 0); - test(S("abcdeabcde"), "abcde", 0, 4, 0); - test(S("abcdeabcde"), "abcde", 0, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 0, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 1, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 0, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); - test(S("abcdeabcde"), "", 1, 0, 1); - test(S("abcdeabcde"), "abcde", 1, 0, 1); - test(S("abcdeabcde"), "abcde", 1, 1, 0); - test(S("abcdeabcde"), "abcde", 1, 2, 0); - test(S("abcdeabcde"), "abcde", 1, 4, 0); - test(S("abcdeabcde"), "abcde", 1, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 0, 1); - test(S("abcdeabcde"), "abcdeabcde", 1, 1, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 5, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 1, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); - test(S("abcdeabcde"), "", 5, 0, 5); - test(S("abcdeabcde"), "abcde", 5, 0, 5); - test(S("abcdeabcde"), "abcde", 5, 1, 5); - test(S("abcdeabcde"), "abcde", 5, 2, 5); - test(S("abcdeabcde"), "abcde", 5, 4, 5); - test(S("abcdeabcde"), "abcde", 5, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 0, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 5, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 5, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); - test(S("abcdeabcde"), "", 9, 0, 9); - test(S("abcdeabcde"), "abcde", 9, 0, 9); - test(S("abcdeabcde"), "abcde", 9, 1, 5); - test(S("abcdeabcde"), "abcde", 9, 2, 5); - test(S("abcdeabcde"), "abcde", 9, 4, 5); - test(S("abcdeabcde"), "abcde", 9, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 9, 0, 9); - test(S("abcdeabcde"), "abcdeabcde", 9, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 9, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 9, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 9, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos); - test(S("abcdeabcde"), "", 10, 0, 10); - test(S("abcdeabcde"), "abcde", 10, 0, 10); - test(S("abcdeabcde"), "abcde", 10, 1, 5); - test(S("abcdeabcde"), "abcde", 10, 2, 5); - test(S("abcdeabcde"), "abcde", 10, 4, 5); - test(S("abcdeabcde"), "abcde", 10, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 10, 0, 10); - test(S("abcdeabcde"), "abcdeabcde", 10, 1, 5); +void test1() { + test(S("abcde"), "abcde", 5, 4, 0); + test(S("abcde"), "abcde", 5, 5, 0); + test(S("abcde"), "abcdeabcde", 5, 0, 5); + test(S("abcde"), "abcdeabcde", 5, 1, 0); + test(S("abcde"), "abcdeabcde", 5, 5, 0); + test(S("abcde"), "abcdeabcde", 5, 9, S::npos); + test(S("abcde"), "abcdeabcde", 5, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); + test(S("abcde"), "", 6, 0, 5); + test(S("abcde"), "abcde", 6, 0, 5); + test(S("abcde"), "abcde", 6, 1, 0); + test(S("abcde"), "abcde", 6, 2, 0); + test(S("abcde"), "abcde", 6, 4, 0); + test(S("abcde"), "abcde", 6, 5, 0); + test(S("abcde"), "abcdeabcde", 6, 0, 5); + test(S("abcde"), "abcdeabcde", 6, 1, 0); + test(S("abcde"), "abcdeabcde", 6, 5, 0); + test(S("abcde"), "abcdeabcde", 6, 9, S::npos); + test(S("abcde"), "abcdeabcde", 6, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 0, 5); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 1, 0); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 10, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 19, S::npos); + test(S("abcde"), "abcdeabcdeabcdeabcde", 6, 20, S::npos); + test(S("abcdeabcde"), "", 0, 0, 0); + test(S("abcdeabcde"), "abcde", 0, 0, 0); + test(S("abcdeabcde"), "abcde", 0, 1, 0); + test(S("abcdeabcde"), "abcde", 0, 2, 0); + test(S("abcdeabcde"), "abcde", 0, 4, 0); + test(S("abcdeabcde"), "abcde", 0, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 0, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 1, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 0, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, S::npos); + test(S("abcdeabcde"), "", 1, 0, 1); + test(S("abcdeabcde"), "abcde", 1, 0, 1); + test(S("abcdeabcde"), "abcde", 1, 1, 0); + test(S("abcdeabcde"), "abcde", 1, 2, 0); + test(S("abcdeabcde"), "abcde", 1, 4, 0); + test(S("abcdeabcde"), "abcde", 1, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 0, 1); + test(S("abcdeabcde"), "abcdeabcde", 1, 1, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 5, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 1, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, S::npos); + test(S("abcdeabcde"), "", 5, 0, 5); + test(S("abcdeabcde"), "abcde", 5, 0, 5); + test(S("abcdeabcde"), "abcde", 5, 1, 5); + test(S("abcdeabcde"), "abcde", 5, 2, 5); + test(S("abcdeabcde"), "abcde", 5, 4, 5); + test(S("abcdeabcde"), "abcde", 5, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 0, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 5, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 5, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 0, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 5, 20, S::npos); + test(S("abcdeabcde"), "", 9, 0, 9); + test(S("abcdeabcde"), "abcde", 9, 0, 9); + test(S("abcdeabcde"), "abcde", 9, 1, 5); + test(S("abcdeabcde"), "abcde", 9, 2, 5); + test(S("abcdeabcde"), "abcde", 9, 4, 5); + test(S("abcdeabcde"), "abcde", 9, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 9, 0, 9); + test(S("abcdeabcde"), "abcdeabcde", 9, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 9, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 9, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 9, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 0, 9); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 9, 20, S::npos); + test(S("abcdeabcde"), "", 10, 0, 10); + test(S("abcdeabcde"), "abcde", 10, 0, 10); + test(S("abcdeabcde"), "abcde", 10, 1, 5); + test(S("abcdeabcde"), "abcde", 10, 2, 5); + test(S("abcdeabcde"), "abcde", 10, 4, 5); + test(S("abcdeabcde"), "abcde", 10, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 10, 0, 10); + test(S("abcdeabcde"), "abcdeabcde", 10, 1, 5); } template -void test2() -{ - test(S("abcdeabcde"), "abcdeabcde", 10, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 10, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 10, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); - test(S("abcdeabcde"), "", 11, 0, 10); - test(S("abcdeabcde"), "abcde", 11, 0, 10); - test(S("abcdeabcde"), "abcde", 11, 1, 5); - test(S("abcdeabcde"), "abcde", 11, 2, 5); - test(S("abcdeabcde"), "abcde", 11, 4, 5); - test(S("abcdeabcde"), "abcde", 11, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 11, 0, 10); - test(S("abcdeabcde"), "abcdeabcde", 11, 1, 5); - test(S("abcdeabcde"), "abcdeabcde", 11, 5, 5); - test(S("abcdeabcde"), "abcdeabcde", 11, 9, 0); - test(S("abcdeabcde"), "abcdeabcde", 11, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, 10); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, 5); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, 0); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos); - test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos); - test(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 0); - test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10); - test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20); +void test2() { + test(S("abcdeabcde"), "abcdeabcde", 10, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 10, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 10, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, S::npos); + test(S("abcdeabcde"), "", 11, 0, 10); + test(S("abcdeabcde"), "abcde", 11, 0, 10); + test(S("abcdeabcde"), "abcde", 11, 1, 5); + test(S("abcdeabcde"), "abcde", 11, 2, 5); + test(S("abcdeabcde"), "abcde", 11, 4, 5); + test(S("abcdeabcde"), "abcde", 11, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 11, 0, 10); + test(S("abcdeabcde"), "abcdeabcde", 11, 1, 5); + test(S("abcdeabcde"), "abcdeabcde", 11, 5, 5); + test(S("abcdeabcde"), "abcdeabcde", 11, 9, 0); + test(S("abcdeabcde"), "abcdeabcde", 11, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 0, 10); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 1, 5); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 10, 0); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 19, S::npos); + test(S("abcdeabcde"), "abcdeabcdeabcdeabcde", 11, 20, S::npos); + test(S("abcdeabcdeabcdeabcde"), "", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 2, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 4, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 0, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 9, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 0, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 0, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 0, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 2, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 4, 0); + test(S("abcdeabcdeabcdeabcde"), "abcde", 1, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 5, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 9, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 1, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 0, 1); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 1, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 10, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 1, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 2, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 4, 10); + test(S("abcdeabcdeabcdeabcde"), "abcde", 10, 5, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 5, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 10, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 0, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 1, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 10, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 2, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 4, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 19, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 19, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 0, 19); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 19, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 2, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 4, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 20, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 20, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 0, 20); } template -void test3() -{ - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 20, 0); - test(S("abcdeabcdeabcdeabcde"), "", 21, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 2, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 4, 15); - test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 5, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 9, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0, 20); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 1, 15); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 10, 10); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 19, 0); - test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, 0); +void test3() { + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 20, 20, 0); + test(S("abcdeabcdeabcdeabcde"), "", 21, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 2, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 4, 15); + test(S("abcdeabcdeabcdeabcde"), "abcde", 21, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 5, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 9, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcde", 21, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 0, 20); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 1, 15); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 10, 10); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 19, 0); + test(S("abcdeabcdeabcdeabcde"), "abcdeabcdeabcdeabcde", 21, 20, 0); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); test2(); test3(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.rfind( "", 0, 0 ) == 0, "" ); - static_assert (sv1.rfind( "abcde", 0, 0 ) == 0, "" ); - static_assert (sv1.rfind( "abcde", 0, 1 ) == SV::npos, "" ); - static_assert (sv2.rfind( "", 0, 0 ) == 0, "" ); - static_assert (sv2.rfind( "abcde", 0, 0 ) == 0, "" ); - static_assert (sv2.rfind( "abcde", 0, 1 ) == 0, "" ); - } + static_assert(sv1.rfind("", 0, 0) == 0, ""); + static_assert(sv1.rfind("abcde", 0, 0) == 0, ""); + static_assert(sv1.rfind("abcde", 0, 1) == SV::npos, ""); + static_assert(sv2.rfind("", 0, 0) == 0, ""); + static_assert(sv2.rfind("abcde", 0, 0) == 0, ""); + static_assert(sv2.rfind("abcde", 0, 1) == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.find/rfind_string_view_size.pass.cpp @@ -19,151 +19,144 @@ #include "constexpr_char_traits.h" template -void -test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos)); - assert(s.rfind(str, pos) == x); - if (x != S::npos) - assert(x <= pos && x + str.size() <= s.size()); +void test(const S& s, const S& str, typename S::size_type pos, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str, pos)); + assert(s.rfind(str, pos) == x); + if (x != S::npos) + assert(x <= pos && x + str.size() <= s.size()); } template -void -test(const S& s, const S& str, typename S::size_type x) -{ - LIBCPP_ASSERT_NOEXCEPT(s.rfind(str)); - assert(s.rfind(str) == x); - if (x != S::npos) - assert(0 <= x && x + str.size() <= s.size()); +void test(const S& s, const S& str, typename S::size_type x) { + LIBCPP_ASSERT_NOEXCEPT(s.rfind(str)); + assert(s.rfind(str) == x); + if (x != S::npos) + assert(0 <= x && x + str.size() <= s.size()); } template -void test0() -{ - test(S(""), S(""), 0, 0); - test(S(""), S("abcde"), 0, S::npos); - test(S(""), S("abcdeabcde"), 0, S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S(""), S(""), 1, 0); - test(S(""), S("abcde"), 1, S::npos); - test(S(""), S("abcdeabcde"), 1, S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), S(""), 0, 0); - test(S("abcde"), S("abcde"), 0, 0); - test(S("abcde"), S("abcdeabcde"), 0, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcde"), S(""), 1, 1); - test(S("abcde"), S("abcde"), 1, 0); - test(S("abcde"), S("abcdeabcde"), 1, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcde"), S(""), 2, 2); - test(S("abcde"), S("abcde"), 2, 0); - test(S("abcde"), S("abcdeabcde"), 2, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 2, S::npos); - test(S("abcde"), S(""), 4, 4); - test(S("abcde"), S("abcde"), 4, 0); - test(S("abcde"), S("abcdeabcde"), 4, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 4, S::npos); - test(S("abcde"), S(""), 5, 5); - test(S("abcde"), S("abcde"), 5, 0); - test(S("abcde"), S("abcdeabcde"), 5, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcde"), S(""), 6, 5); - test(S("abcde"), S("abcde"), 6, 0); - test(S("abcde"), S("abcdeabcde"), 6, S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), 6, S::npos); - test(S("abcdeabcde"), S(""), 0, 0); - test(S("abcdeabcde"), S("abcde"), 0, 0); - test(S("abcdeabcde"), S("abcdeabcde"), 0, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); - test(S("abcdeabcde"), S(""), 1, 1); - test(S("abcdeabcde"), S("abcde"), 1, 0); - test(S("abcdeabcde"), S("abcdeabcde"), 1, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); - test(S("abcdeabcde"), S(""), 5, 5); - test(S("abcdeabcde"), S("abcde"), 5, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 5, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); - test(S("abcdeabcde"), S(""), 9, 9); - test(S("abcdeabcde"), S("abcde"), 9, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 9, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 9, S::npos); - test(S("abcdeabcde"), S(""), 10, 10); - test(S("abcdeabcde"), S("abcde"), 10, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 10, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); - test(S("abcdeabcde"), S(""), 11, 10); - test(S("abcdeabcde"), S("abcde"), 11, 5); - test(S("abcdeabcde"), S("abcdeabcde"), 11, 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 11, S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 1, 1); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 19, 19); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 19, 15); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 19, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 19, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 20, 20); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 20, 15); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 20, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 20, 0); - test(S("abcdeabcdeabcdeabcde"), S(""), 21, 20); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 21, 15); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 21, 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 21, 0); +void test0() { + test(S(""), S(""), 0, 0); + test(S(""), S("abcde"), 0, S::npos); + test(S(""), S("abcdeabcde"), 0, S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S(""), S(""), 1, 0); + test(S(""), S("abcde"), 1, S::npos); + test(S(""), S("abcdeabcde"), 1, S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), S(""), 0, 0); + test(S("abcde"), S("abcde"), 0, 0); + test(S("abcde"), S("abcdeabcde"), 0, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcde"), S(""), 1, 1); + test(S("abcde"), S("abcde"), 1, 0); + test(S("abcde"), S("abcdeabcde"), 1, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcde"), S(""), 2, 2); + test(S("abcde"), S("abcde"), 2, 0); + test(S("abcde"), S("abcdeabcde"), 2, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 2, S::npos); + test(S("abcde"), S(""), 4, 4); + test(S("abcde"), S("abcde"), 4, 0); + test(S("abcde"), S("abcdeabcde"), 4, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 4, S::npos); + test(S("abcde"), S(""), 5, 5); + test(S("abcde"), S("abcde"), 5, 0); + test(S("abcde"), S("abcdeabcde"), 5, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcde"), S(""), 6, 5); + test(S("abcde"), S("abcde"), 6, 0); + test(S("abcde"), S("abcdeabcde"), 6, S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), 6, S::npos); + test(S("abcdeabcde"), S(""), 0, 0); + test(S("abcdeabcde"), S("abcde"), 0, 0); + test(S("abcdeabcde"), S("abcdeabcde"), 0, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, S::npos); + test(S("abcdeabcde"), S(""), 1, 1); + test(S("abcdeabcde"), S("abcde"), 1, 0); + test(S("abcdeabcde"), S("abcdeabcde"), 1, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, S::npos); + test(S("abcdeabcde"), S(""), 5, 5); + test(S("abcdeabcde"), S("abcde"), 5, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 5, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 5, S::npos); + test(S("abcdeabcde"), S(""), 9, 9); + test(S("abcdeabcde"), S("abcde"), 9, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 9, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 9, S::npos); + test(S("abcdeabcde"), S(""), 10, 10); + test(S("abcdeabcde"), S("abcde"), 10, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 10, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, S::npos); + test(S("abcdeabcde"), S(""), 11, 10); + test(S("abcdeabcde"), S("abcde"), 11, 5); + test(S("abcdeabcde"), S("abcdeabcde"), 11, 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), 11, S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 1, 1); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 1, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 10, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 19, 19); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 19, 15); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 19, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 19, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 20, 20); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 20, 15); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 20, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 20, 0); + test(S("abcdeabcdeabcdeabcde"), S(""), 21, 20); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 21, 15); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 21, 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 21, 0); } template -void test1() -{ - test(S(""), S(""), 0); - test(S(""), S("abcde"), S::npos); - test(S(""), S("abcdeabcde"), S::npos); - test(S(""), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcde"), S(""), 5); - test(S("abcde"), S("abcde"), 0); - test(S("abcde"), S("abcdeabcde"), S::npos); - test(S("abcde"), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcde"), S(""), 10); - test(S("abcdeabcde"), S("abcde"), 5); - test(S("abcdeabcde"), S("abcdeabcde"), 0); - test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), S::npos); - test(S("abcdeabcdeabcdeabcde"), S(""), 20); - test(S("abcdeabcdeabcdeabcde"), S("abcde"), 15); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10); - test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0); +void test1() { + test(S(""), S(""), 0); + test(S(""), S("abcde"), S::npos); + test(S(""), S("abcdeabcde"), S::npos); + test(S(""), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcde"), S(""), 5); + test(S("abcde"), S("abcde"), 0); + test(S("abcde"), S("abcdeabcde"), S::npos); + test(S("abcde"), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcde"), S(""), 10); + test(S("abcdeabcde"), S("abcde"), 5); + test(S("abcdeabcde"), S("abcdeabcde"), 0); + test(S("abcdeabcde"), S("abcdeabcdeabcdeabcde"), S::npos); + test(S("abcdeabcdeabcdeabcde"), S(""), 20); + test(S("abcdeabcdeabcdeabcde"), S("abcde"), 15); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcde"), 10); + test(S("abcdeabcdeabcdeabcde"), S("abcdeabcdeabcdeabcde"), 0); } -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view S; test0(); test1(); - } + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; - static_assert (sv1.rfind(sv1) == 0, "" ); - static_assert (sv1.rfind(sv2) == SV::npos, "" ); - static_assert (sv2.rfind(sv1) == 5, "" ); - static_assert (sv2.rfind(sv2) == 0, "" ); - static_assert (sv2.rfind(sv2, 1) == 0, "" ); - } + static_assert(sv1.rfind(sv1) == 0, ""); + static_assert(sv1.rfind(sv2) == SV::npos, ""); + static_assert(sv2.rfind(sv1) == 5, ""); + static_assert(sv2.rfind(sv2) == 0, ""); + static_assert(sv2.rfind(sv2, 1) == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp b/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.io/stream_insert.pass.cpp @@ -22,41 +22,40 @@ #include "test_macros.h" -int main(int, char**) -{ - { - std::ostringstream out; - std::string_view sv("some text"); - out << sv; - assert(out.good()); - assert(sv == out.str()); - } - { - std::ostringstream out; - std::string s("some text"); - std::string_view sv(s); - out.width(12); - out << sv; - assert(out.good()); - assert(" " + s == out.str()); - } +int main(int, char**) { + { + std::ostringstream out; + std::string_view sv("some text"); + out << sv; + assert(out.good()); + assert(sv == out.str()); + } + { + std::ostringstream out; + std::string s("some text"); + std::string_view sv(s); + out.width(12); + out << sv; + assert(out.good()); + assert(" " + s == out.str()); + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - std::wostringstream out; - std::wstring_view sv(L"some text"); - out << sv; - assert(out.good()); - assert(sv == out.str()); - } - { - std::wostringstream out; - std::wstring s(L"some text"); - std::wstring_view sv(s); - out.width(12); - out << sv; - assert(out.good()); - assert(L" " + s == out.str()); - } + { + std::wostringstream out; + std::wstring_view sv(L"some text"); + out << sv; + assert(out.good()); + assert(sv == out.str()); + } + { + std::wostringstream out; + std::wstring s(L"some text"); + std::wstring_view sv(s); + out.width(12); + out << sv; + assert(out.good()); + assert(L" " + s == out.str()); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.io/stream_insert_decl_present.compile.pass.cpp b/libcxx/test/std/strings/string.view/string.view.io/stream_insert_decl_present.compile.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.io/stream_insert_decl_present.compile.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.io/stream_insert_decl_present.compile.pass.cpp @@ -22,6 +22,7 @@ template struct HasDecl : std::false_type {}; template -struct HasDecl(std::declval() << std::declval()))> : std::true_type {}; +struct HasDecl(std::declval() << std::declval()))> : std::true_type { +}; static_assert(HasDecl::value, "streaming operator declaration not present"); diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/begin.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/begin.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.iterators/begin.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.iterators/begin.pass.cpp @@ -18,87 +18,81 @@ #include "test_macros.h" template -void -test(S s) -{ - const S& cs = s; - typename S::iterator b = s.begin(); - typename S::const_iterator cb1 = cs.begin(); - typename S::const_iterator cb2 = s.cbegin(); - if (!s.empty()) - { - assert( *b == s[0]); - assert( &*b == &s[0]); - assert( *cb1 == s[0]); - assert(&*cb1 == &s[0]); - assert( *cb2 == s[0]); - assert(&*cb2 == &s[0]); - - } - assert( b == cb1); - assert( b == cb2); - assert(cb1 == cb2); +void test(S s) { + const S& cs = s; + typename S::iterator b = s.begin(); + typename S::const_iterator cb1 = cs.begin(); + typename S::const_iterator cb2 = s.cbegin(); + if (!s.empty()) { + assert(*b == s[0]); + assert(&*b == &s[0]); + assert(*cb1 == s[0]); + assert(&*cb1 == &s[0]); + assert(*cb2 == s[0]); + assert(&*cb2 == &s[0]); + } + assert(b == cb1); + assert(b == cb2); + assert(cb1 == cb2); } - -int main(int, char**) -{ - typedef std::string_view string_view; +int main(int, char**) { + typedef std::string_view string_view; #ifndef TEST_HAS_NO_CHAR8_T - typedef std::u8string_view u8string_view; + typedef std::u8string_view u8string_view; #endif - typedef std::u16string_view u16string_view; - typedef std::u32string_view u32string_view; + typedef std::u16string_view u16string_view; + typedef std::u32string_view u32string_view; - test(string_view ()); - test(u16string_view()); - test(u32string_view()); - test(string_view ( "123")); + test(string_view()); + test(u16string_view()); + test(u32string_view()); + test(string_view("123")); #ifndef TEST_HAS_NO_CHAR8_T - test(u8string_view{u8"123"}); + test(u8string_view{u8"123"}); #endif #if TEST_STD_VER >= 11 - test(u16string_view{u"123"}); - test(u32string_view{U"123"}); + test(u16string_view{u"123"}); + test(u32string_view{U"123"}); #endif #ifndef TEST_HAS_NO_WIDE_CHARACTERS - typedef std::wstring_view wstring_view; - test(wstring_view ()); - test(wstring_view (L"123")); + typedef std::wstring_view wstring_view; + test(wstring_view()); + test(wstring_view(L"123")); #endif #if TEST_STD_VER > 11 - { - constexpr string_view sv { "123", 3 }; + { + constexpr string_view sv{"123", 3}; # ifndef TEST_HAS_NO_CHAR8_T - constexpr u8string_view u8sv {u8"123", 3 }; -#endif - constexpr u16string_view u16sv {u"123", 3 }; - constexpr u32string_view u32sv {U"123", 3 }; + constexpr u8string_view u8sv{u8"123", 3}; +# endif + constexpr u16string_view u16sv{u"123", 3}; + constexpr u32string_view u32sv{U"123", 3}; - static_assert ( *sv.begin() == sv[0], "" ); + static_assert(*sv.begin() == sv[0], ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert ( *u8sv.begin() == u8sv[0], "" ); -#endif - static_assert ( *u16sv.begin() == u16sv[0], "" ); - static_assert ( *u32sv.begin() == u32sv[0], "" ); + static_assert(*u8sv.begin() == u8sv[0], ""); +# endif + static_assert(*u16sv.begin() == u16sv[0], ""); + static_assert(*u32sv.begin() == u32sv[0], ""); - static_assert ( *sv.cbegin() == sv[0], "" ); + static_assert(*sv.cbegin() == sv[0], ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert ( *u8sv.cbegin() == u8sv[0], "" ); -#endif - static_assert ( *u16sv.cbegin() == u16sv[0], "" ); - static_assert ( *u32sv.cbegin() == u32sv[0], "" ); + static_assert(*u8sv.cbegin() == u8sv[0], ""); +# endif + static_assert(*u16sv.cbegin() == u16sv[0], ""); + static_assert(*u32sv.cbegin() == u32sv[0], ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - constexpr wstring_view wsv {L"123", 3 }; - static_assert ( *wsv.begin() == wsv[0], "" ); - static_assert ( *wsv.cbegin() == wsv[0], "" ); - } -#endif +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + constexpr wstring_view wsv{L"123", 3}; + static_assert(*wsv.begin() == wsv[0], ""); + static_assert(*wsv.cbegin() == wsv[0], ""); } +# endif + } #endif // TEST_STD_VER > 11 return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/end.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/end.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.iterators/end.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.iterators/end.pass.cpp @@ -19,95 +19,88 @@ #include "test_macros.h" template -void -test(S s) -{ - const S& cs = s; - typename S::iterator e = s.end(); - typename S::const_iterator ce1 = cs.end(); - typename S::const_iterator ce2 = s.cend(); - - if (s.empty()) - { - assert( e == s.begin()); - assert(ce1 == cs.begin()); - assert(ce2 == s.begin()); - } - else - { - assert( e != s.begin()); - assert(ce1 != cs.begin()); - assert(ce2 != s.begin()); - } - - assert(static_cast( e - s.begin()) == s.size()); - assert(static_cast(ce1 - cs.begin()) == cs.size()); - assert(static_cast(ce2 - s.cbegin()) == s.size()); - - assert( e == ce1); - assert( e == ce2); - assert(ce1 == ce2); +void test(S s) { + const S& cs = s; + typename S::iterator e = s.end(); + typename S::const_iterator ce1 = cs.end(); + typename S::const_iterator ce2 = s.cend(); + + if (s.empty()) { + assert(e == s.begin()); + assert(ce1 == cs.begin()); + assert(ce2 == s.begin()); + } else { + assert(e != s.begin()); + assert(ce1 != cs.begin()); + assert(ce2 != s.begin()); + } + + assert(static_cast(e - s.begin()) == s.size()); + assert(static_cast(ce1 - cs.begin()) == cs.size()); + assert(static_cast(ce2 - s.cbegin()) == s.size()); + + assert(e == ce1); + assert(e == ce2); + assert(ce1 == ce2); } - -int main(int, char**) -{ - typedef std::string_view string_view; +int main(int, char**) { + typedef std::string_view string_view; #ifndef TEST_HAS_NO_CHAR8_T - typedef std::u8string_view u8string_view; + typedef std::u8string_view u8string_view; #endif - typedef std::u16string_view u16string_view; - typedef std::u32string_view u32string_view; + typedef std::u16string_view u16string_view; + typedef std::u32string_view u32string_view; - test(string_view ()); - test(u16string_view()); - test(u32string_view()); - test(string_view ( "123")); + test(string_view()); + test(u16string_view()); + test(u32string_view()); + test(string_view("123")); #ifndef TEST_HAS_NO_CHAR8_T - test(u8string_view{u8"123"}); + test(u8string_view{u8"123"}); #endif #if TEST_STD_VER >= 11 - test(u16string_view{u"123"}); - test(u32string_view{U"123"}); + test(u16string_view{u"123"}); + test(u32string_view{U"123"}); #endif #ifndef TEST_HAS_NO_WIDE_CHARACTERS - typedef std::wstring_view wstring_view; - test(wstring_view ()); - test(wstring_view (L"123")); + typedef std::wstring_view wstring_view; + test(wstring_view()); + test(wstring_view(L"123")); #endif #if TEST_STD_VER > 11 - { - constexpr string_view sv { "123", 3 }; + { + constexpr string_view sv{"123", 3}; # ifndef TEST_HAS_NO_CHAR8_T - constexpr u8string_view u8sv {u8"123", 3 }; -#endif - constexpr u16string_view u16sv {u"123", 3 }; - constexpr u32string_view u32sv {U"123", 3 }; + constexpr u8string_view u8sv{u8"123", 3}; +# endif + constexpr u16string_view u16sv{u"123", 3}; + constexpr u32string_view u32sv{U"123", 3}; - static_assert ( sv.begin() != sv.end(), "" ); + static_assert(sv.begin() != sv.end(), ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert ( u8sv.begin() != u8sv.end(), "" ); -#endif - static_assert ( u16sv.begin() != u16sv.end(), "" ); - static_assert ( u32sv.begin() != u32sv.end(), "" ); + static_assert(u8sv.begin() != u8sv.end(), ""); +# endif + static_assert(u16sv.begin() != u16sv.end(), ""); + static_assert(u32sv.begin() != u32sv.end(), ""); - static_assert ( sv.begin() != sv.cend(), "" ); + static_assert(sv.begin() != sv.cend(), ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert ( u8sv.begin() != u8sv.cend(), "" ); -#endif - static_assert ( u16sv.begin() != u16sv.cend(), "" ); - static_assert ( u32sv.begin() != u32sv.cend(), "" ); + static_assert(u8sv.begin() != u8sv.cend(), ""); +# endif + static_assert(u16sv.begin() != u16sv.cend(), ""); + static_assert(u32sv.begin() != u32sv.cend(), ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - constexpr wstring_view wsv {L"123", 3 }; - static_assert ( wsv.begin() != wsv.end(), "" ); - static_assert ( wsv.begin() != wsv.cend(), "" ); - } -#endif +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + constexpr wstring_view wsv{L"123", 3}; + static_assert(wsv.begin() != wsv.end(), ""); + static_assert(wsv.begin() != wsv.cend(), ""); } +# endif + } #endif // TEST_STD_VER > 11 return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/iterator_concept_conformance.compile.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/iterator_concept_conformance.compile.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.iterators/iterator_concept_conformance.compile.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.iterators/iterator_concept_conformance.compile.pass.cpp @@ -16,9 +16,9 @@ #include "test_macros.h" -using iterator = std::string_view::iterator; -using const_iterator = std::string_view::const_iterator; -using reverse_iterator = std::string_view::reverse_iterator; +using iterator = std::string_view::iterator; +using const_iterator = std::string_view::const_iterator; +using reverse_iterator = std::string_view::reverse_iterator; using const_reverse_iterator = std::string_view::const_reverse_iterator; static_assert(std::contiguous_iterator); diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.iterators/rbegin.pass.cpp @@ -18,88 +18,82 @@ #include "test_macros.h" template -void -test(S s) -{ - const S& cs = s; - typename S::reverse_iterator b = s.rbegin(); - typename S::const_reverse_iterator cb1 = cs.rbegin(); - typename S::const_reverse_iterator cb2 = s.crbegin(); - if (!s.empty()) - { - const std::size_t last = s.size() - 1; - assert( *b == s[last]); - assert( &*b == &s[last]); - assert( *cb1 == s[last]); - assert(&*cb1 == &s[last]); - assert( *cb2 == s[last]); - assert(&*cb2 == &s[last]); - - } - assert( b == cb1); - assert( b == cb2); - assert(cb1 == cb2); +void test(S s) { + const S& cs = s; + typename S::reverse_iterator b = s.rbegin(); + typename S::const_reverse_iterator cb1 = cs.rbegin(); + typename S::const_reverse_iterator cb2 = s.crbegin(); + if (!s.empty()) { + const std::size_t last = s.size() - 1; + assert(*b == s[last]); + assert(&*b == &s[last]); + assert(*cb1 == s[last]); + assert(&*cb1 == &s[last]); + assert(*cb2 == s[last]); + assert(&*cb2 == &s[last]); + } + assert(b == cb1); + assert(b == cb2); + assert(cb1 == cb2); } - -int main(int, char**) -{ - typedef std::string_view string_view; +int main(int, char**) { + typedef std::string_view string_view; #ifndef TEST_HAS_NO_CHAR8_T - typedef std::u8string_view u8string_view; + typedef std::u8string_view u8string_view; #endif - typedef std::u16string_view u16string_view; - typedef std::u32string_view u32string_view; + typedef std::u16string_view u16string_view; + typedef std::u32string_view u32string_view; - test(string_view ()); - test(u16string_view()); - test(u32string_view()); - test(string_view ( "123")); + test(string_view()); + test(u16string_view()); + test(u32string_view()); + test(string_view("123")); #ifndef TEST_HAS_NO_CHAR8_T - test(u8string_view{u8"123"}); + test(u8string_view{u8"123"}); #endif #if TEST_STD_VER >= 11 - test(u16string_view{u"123"}); - test(u32string_view{U"123"}); + test(u16string_view{u"123"}); + test(u32string_view{U"123"}); #endif #ifndef TEST_HAS_NO_WIDE_CHARACTERS - typedef std::wstring_view wstring_view; - test(wstring_view ()); - test(wstring_view (L"123")); + typedef std::wstring_view wstring_view; + test(wstring_view()); + test(wstring_view(L"123")); #endif #if TEST_STD_VER > 14 - { - constexpr string_view sv { "123", 3 }; + { + constexpr string_view sv{"123", 3}; # ifndef TEST_HAS_NO_CHAR8_T - constexpr u8string_view u8sv {u8"123", 3 }; -#endif - constexpr u16string_view u16sv {u"123", 3 }; - constexpr u32string_view u32sv {U"123", 3 }; + constexpr u8string_view u8sv{u8"123", 3}; +# endif + constexpr u16string_view u16sv{u"123", 3}; + constexpr u32string_view u32sv{U"123", 3}; - static_assert ( *sv.rbegin() == sv[2], "" ); + static_assert(*sv.rbegin() == sv[2], ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert ( *u8sv.rbegin() == u8sv[2], "" ); -#endif - static_assert ( *u16sv.rbegin() == u16sv[2], "" ); - static_assert ( *u32sv.rbegin() == u32sv[2], "" ); + static_assert(*u8sv.rbegin() == u8sv[2], ""); +# endif + static_assert(*u16sv.rbegin() == u16sv[2], ""); + static_assert(*u32sv.rbegin() == u32sv[2], ""); - static_assert ( *sv.crbegin() == sv[2], "" ); + static_assert(*sv.crbegin() == sv[2], ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert ( *u8sv.crbegin() == u8sv[2], "" ); -#endif - static_assert ( *u16sv.crbegin() == u16sv[2], "" ); - static_assert ( *u32sv.crbegin() == u32sv[2], "" ); + static_assert(*u8sv.crbegin() == u8sv[2], ""); +# endif + static_assert(*u16sv.crbegin() == u16sv[2], ""); + static_assert(*u32sv.crbegin() == u32sv[2], ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - constexpr wstring_view wsv {L"123", 3 }; - static_assert ( *wsv.rbegin() == wsv[2], "" ); - static_assert ( *wsv.crbegin() == wsv[2], "" ); - } -#endif +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + constexpr wstring_view wsv{L"123", 3}; + static_assert(*wsv.rbegin() == wsv[2], ""); + static_assert(*wsv.crbegin() == wsv[2], ""); } +# endif + } #endif // TEST_STD_VER > 14 return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.iterators/rend.pass.cpp b/libcxx/test/std/strings/string.view/string.view.iterators/rend.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.iterators/rend.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.iterators/rend.pass.cpp @@ -19,95 +19,88 @@ #include "test_macros.h" template -void -test(S s) -{ - const S& cs = s; - typename S::reverse_iterator e = s.rend(); - typename S::const_reverse_iterator ce1 = cs.rend(); - typename S::const_reverse_iterator ce2 = s.crend(); - - if (s.empty()) - { - assert( e == s.rbegin()); - assert(ce1 == cs.rbegin()); - assert(ce2 == s.rbegin()); - } - else - { - assert( e != s.rbegin()); - assert(ce1 != cs.rbegin()); - assert(ce2 != s.rbegin()); - } - - assert(static_cast( e - s.rbegin()) == s.size()); - assert(static_cast(ce1 - cs.rbegin()) == cs.size()); - assert(static_cast(ce2 - s.crbegin()) == s.size()); - - assert( e == ce1); - assert( e == ce2); - assert(ce1 == ce2); +void test(S s) { + const S& cs = s; + typename S::reverse_iterator e = s.rend(); + typename S::const_reverse_iterator ce1 = cs.rend(); + typename S::const_reverse_iterator ce2 = s.crend(); + + if (s.empty()) { + assert(e == s.rbegin()); + assert(ce1 == cs.rbegin()); + assert(ce2 == s.rbegin()); + } else { + assert(e != s.rbegin()); + assert(ce1 != cs.rbegin()); + assert(ce2 != s.rbegin()); + } + + assert(static_cast(e - s.rbegin()) == s.size()); + assert(static_cast(ce1 - cs.rbegin()) == cs.size()); + assert(static_cast(ce2 - s.crbegin()) == s.size()); + + assert(e == ce1); + assert(e == ce2); + assert(ce1 == ce2); } - -int main(int, char**) -{ - typedef std::string_view string_view; +int main(int, char**) { + typedef std::string_view string_view; #ifndef TEST_HAS_NO_CHAR8_T - typedef std::u8string_view u8string_view; + typedef std::u8string_view u8string_view; #endif - typedef std::u16string_view u16string_view; - typedef std::u32string_view u32string_view; + typedef std::u16string_view u16string_view; + typedef std::u32string_view u32string_view; - test(string_view ()); - test(u16string_view()); - test(u32string_view()); - test(string_view ( "123")); + test(string_view()); + test(u16string_view()); + test(u32string_view()); + test(string_view("123")); #ifndef TEST_HAS_NO_CHAR8_T - test(u8string_view{u8"123"}); + test(u8string_view{u8"123"}); #endif #if TEST_STD_VER >= 11 - test(u16string_view{u"123"}); - test(u32string_view{U"123"}); + test(u16string_view{u"123"}); + test(u32string_view{U"123"}); #endif #ifndef TEST_HAS_NO_WIDE_CHARACTERS - typedef std::wstring_view wstring_view; - test(wstring_view ()); - test(wstring_view (L"123")); + typedef std::wstring_view wstring_view; + test(wstring_view()); + test(wstring_view(L"123")); #endif #if TEST_STD_VER > 14 - { - constexpr string_view sv { "123", 3 }; + { + constexpr string_view sv{"123", 3}; # ifndef TEST_HAS_NO_CHAR8_T - constexpr u8string_view u8sv {u8"123", 3 }; -#endif - constexpr u16string_view u16sv {u"123", 3 }; - constexpr u32string_view u32sv {U"123", 3 }; + constexpr u8string_view u8sv{u8"123", 3}; +# endif + constexpr u16string_view u16sv{u"123", 3}; + constexpr u32string_view u32sv{U"123", 3}; - static_assert ( *--sv.rend() == sv[0], "" ); + static_assert(*--sv.rend() == sv[0], ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert ( *--u8sv.rend() == u8sv[0], "" ); -#endif - static_assert ( *--u16sv.rend() == u16sv[0], "" ); - static_assert ( *--u32sv.rend() == u32sv[0], "" ); + static_assert(*--u8sv.rend() == u8sv[0], ""); +# endif + static_assert(*--u16sv.rend() == u16sv[0], ""); + static_assert(*--u32sv.rend() == u32sv[0], ""); - static_assert ( *--sv.crend() == sv[0], "" ); + static_assert(*--sv.crend() == sv[0], ""); # ifndef TEST_HAS_NO_CHAR8_T - static_assert ( *--u8sv.crend() == u8sv[0], "" ); -#endif - static_assert ( *--u16sv.crend() == u16sv[0], "" ); - static_assert ( *--u32sv.crend() == u32sv[0], "" ); + static_assert(*--u8sv.crend() == u8sv[0], ""); +# endif + static_assert(*--u16sv.crend() == u16sv[0], ""); + static_assert(*--u32sv.crend() == u32sv[0], ""); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - { - constexpr wstring_view wsv {L"123", 3 }; - static_assert ( *--wsv.rend() == wsv[0], "" ); - static_assert ( *--wsv.crend() == wsv[0], "" ); - } -#endif +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + { + constexpr wstring_view wsv{L"123", 3}; + static_assert(*--wsv.rend() == wsv[0], ""); + static_assert(*--wsv.crend() == wsv[0], ""); } +# endif + } #endif // TEST_STD_VER > 14 return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp b/libcxx/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.modifiers/remove_prefix.pass.cpp @@ -17,64 +17,64 @@ #include "test_macros.h" -template -void test ( const CharT *s, std::size_t len ) { - typedef std::basic_string_view SV; - { - SV sv1 ( s ); - assert ( sv1.size() == len ); - assert ( sv1.data() == s ); +template +void test(const CharT* s, std::size_t len) { + typedef std::basic_string_view SV; + { + SV sv1(s); + assert(sv1.size() == len); + assert(sv1.data() == s); - if ( len > 0 ) { - sv1.remove_prefix ( 1 ); - assert ( sv1.size() == (len - 1)); - assert ( sv1.data() == (s + 1)); - sv1.remove_prefix ( len - 1 ); + if (len > 0) { + sv1.remove_prefix(1); + assert(sv1.size() == (len - 1)); + assert(sv1.data() == (s + 1)); + sv1.remove_prefix(len - 1); } - assert ( sv1.size() == 0 ); - sv1.remove_prefix ( 0 ); - assert ( sv1.size() == 0 ); - } + assert(sv1.size() == 0); + sv1.remove_prefix(0); + assert(sv1.size() == 0); + } } #if TEST_STD_VER > 11 -constexpr std::size_t test_ce ( size_t n, size_t k ) { - typedef std::basic_string_view SV; - SV sv1{ "ABCDEFGHIJKL", n }; - sv1.remove_prefix ( k ); - return sv1.size(); +constexpr std::size_t test_ce(size_t n, size_t k) { + typedef std::basic_string_view SV; + SV sv1{"ABCDEFGHIJKL", n}; + sv1.remove_prefix(k); + return sv1.size(); } #endif int main(int, char**) { - test ( "ABCDE", 5 ); - test ( "a", 1 ); - test ( "", 0 ); + test("ABCDE", 5); + test("a", 1); + test("", 0); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"ABCDE", 5 ); - test ( L"a", 1 ); - test ( L"", 0 ); + test(L"ABCDE", 5); + test(L"a", 1); + test(L"", 0); #endif #if TEST_STD_VER >= 11 - test ( u"ABCDE", 5 ); - test ( u"a", 1 ); - test ( u"", 0 ); + test(u"ABCDE", 5); + test(u"a", 1); + test(u"", 0); - test ( U"ABCDE", 5 ); - test ( U"a", 1 ); - test ( U"", 0 ); + test(U"ABCDE", 5); + test(U"a", 1); + test(U"", 0); #endif #if TEST_STD_VER > 11 - { - static_assert ( test_ce ( 5, 0 ) == 5, "" ); - static_assert ( test_ce ( 5, 1 ) == 4, "" ); - static_assert ( test_ce ( 5, 5 ) == 0, "" ); - static_assert ( test_ce ( 9, 3 ) == 6, "" ); - } + { + static_assert(test_ce(5, 0) == 5, ""); + static_assert(test_ce(5, 1) == 4, ""); + static_assert(test_ce(5, 5) == 0, ""); + static_assert(test_ce(9, 3) == 6, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp b/libcxx/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.modifiers/remove_suffix.pass.cpp @@ -17,65 +17,64 @@ #include "test_macros.h" -template -void test ( const CharT *s, std::size_t len ) { - typedef std::basic_string_view SV; - { - SV sv1 ( s ); - assert ( sv1.size() == len ); - assert ( sv1.data() == s ); - - if ( len > 0 ) { - sv1.remove_suffix ( 1 ); - assert ( sv1.size() == (len - 1)); - assert ( sv1.data() == s); - sv1.remove_suffix ( len - 1 ); - } - - assert ( sv1.size() == 0 ); - sv1.remove_suffix ( 0 ); - assert ( sv1.size() == 0 ); +template +void test(const CharT* s, std::size_t len) { + typedef std::basic_string_view SV; + { + SV sv1(s); + assert(sv1.size() == len); + assert(sv1.data() == s); + + if (len > 0) { + sv1.remove_suffix(1); + assert(sv1.size() == (len - 1)); + assert(sv1.data() == s); + sv1.remove_suffix(len - 1); } + assert(sv1.size() == 0); + sv1.remove_suffix(0); + assert(sv1.size() == 0); + } } #if TEST_STD_VER > 11 -constexpr std::size_t test_ce ( size_t n, size_t k ) { - typedef std::basic_string_view SV; - SV sv1{ "ABCDEFGHIJKL", n }; - sv1.remove_suffix ( k ); - return sv1.size(); +constexpr std::size_t test_ce(size_t n, size_t k) { + typedef std::basic_string_view SV; + SV sv1{"ABCDEFGHIJKL", n}; + sv1.remove_suffix(k); + return sv1.size(); } #endif int main(int, char**) { - test ( "ABCDE", 5 ); - test ( "a", 1 ); - test ( "", 0 ); + test("ABCDE", 5); + test("a", 1); + test("", 0); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"ABCDE", 5 ); - test ( L"a", 1 ); - test ( L"", 0 ); + test(L"ABCDE", 5); + test(L"a", 1); + test(L"", 0); #endif #if TEST_STD_VER >= 11 - test ( u"ABCDE", 5 ); - test ( u"a", 1 ); - test ( u"", 0 ); + test(u"ABCDE", 5); + test(u"a", 1); + test(u"", 0); - test ( U"ABCDE", 5 ); - test ( U"a", 1 ); - test ( U"", 0 ); + test(U"ABCDE", 5); + test(U"a", 1); + test(U"", 0); #endif #if TEST_STD_VER > 11 - { - static_assert ( test_ce ( 5, 0 ) == 5, "" ); - static_assert ( test_ce ( 5, 1 ) == 4, "" ); - static_assert ( test_ce ( 5, 5 ) == 0, "" ); - static_assert ( test_ce ( 9, 3 ) == 6, "" ); - } + { + static_assert(test_ce(5, 0) == 5, ""); + static_assert(test_ce(5, 1) == 4, ""); + static_assert(test_ce(5, 5) == 0, ""); + static_assert(test_ce(9, 3) == 6, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp b/libcxx/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.modifiers/swap.pass.cpp @@ -17,63 +17,61 @@ #include "test_macros.h" -template -void test ( const CharT *s, std::size_t len ) { - typedef std::basic_string_view SV; - { +template +void test(const CharT* s, std::size_t len) { + typedef std::basic_string_view SV; + { SV sv1(s); SV sv2; - assert ( sv1.size() == len ); - assert ( sv1.data() == s ); - assert ( sv2.size() == 0 ); - - sv1.swap ( sv2 ); - assert ( sv1.size() == 0 ); - assert ( sv2.size() == len ); - assert ( sv2.data() == s ); - } + assert(sv1.size() == len); + assert(sv1.data() == s); + assert(sv2.size() == 0); + sv1.swap(sv2); + assert(sv1.size() == 0); + assert(sv2.size() == len); + assert(sv2.data() == s); + } } #if TEST_STD_VER > 11 -constexpr std::size_t test_ce ( size_t n, size_t k ) { - typedef std::basic_string_view SV; - SV sv1{ "ABCDEFGHIJKL", n }; - SV sv2 { sv1.data(), k }; - sv1.swap ( sv2 ); - return sv1.size(); +constexpr std::size_t test_ce(size_t n, size_t k) { + typedef std::basic_string_view SV; + SV sv1{"ABCDEFGHIJKL", n}; + SV sv2{sv1.data(), k}; + sv1.swap(sv2); + return sv1.size(); } #endif - int main(int, char**) { - test ( "ABCDE", 5 ); - test ( "a", 1 ); - test ( "", 0 ); + test("ABCDE", 5); + test("a", 1); + test("", 0); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"ABCDE", 5 ); - test ( L"a", 1 ); - test ( L"", 0 ); + test(L"ABCDE", 5); + test(L"a", 1); + test(L"", 0); #endif #if TEST_STD_VER >= 11 - test ( u"ABCDE", 5 ); - test ( u"a", 1 ); - test ( u"", 0 ); + test(u"ABCDE", 5); + test(u"a", 1); + test(u"", 0); - test ( U"ABCDE", 5 ); - test ( U"a", 1 ); - test ( U"", 0 ); + test(U"ABCDE", 5); + test(U"a", 1); + test(U"", 0); #endif #if TEST_STD_VER > 11 - { - static_assert ( test_ce (2, 3) == 3, "" ); - static_assert ( test_ce (5, 3) == 3, "" ); - static_assert ( test_ce (0, 1) == 1, "" ); - } + { + static_assert(test_ce(2, 3) == 3, ""); + static_assert(test_ce(5, 3) == 3, ""); + static_assert(test_ce(0, 1) == 1, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp b/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.nonmem/quoted.pass.cpp @@ -21,205 +21,196 @@ #include "test_macros.h" -bool is_skipws ( const std::istream *is ) { - return ( is->flags() & std::ios_base::skipws ) != 0; -} +bool is_skipws(const std::istream* is) { return (is->flags() & std::ios_base::skipws) != 0; } #ifndef TEST_HAS_NO_WIDE_CHARACTERS -bool is_skipws ( const std::wistream *is ) { - return ( is->flags() & std::ios_base::skipws ) != 0; -} +bool is_skipws(const std::wistream* is) { return (is->flags() & std::ios_base::skipws) != 0; } #endif -void round_trip ( const char *p ) { - std::stringstream ss; - bool skippingws = is_skipws ( &ss ); - std::string_view sv {p}; - - ss << std::quoted(sv); - std::string s; - ss >> std::quoted(s); - assert ( s == sv ); - assert ( skippingws == is_skipws ( &ss )); - } - -void round_trip_ws ( const char *p ) { - std::stringstream ss; - std::noskipws ( ss ); - bool skippingws = is_skipws ( &ss ); - std::string_view sv {p}; - - ss << std::quoted(sv); - std::string s; - ss >> std::quoted(s); - assert ( s == sv ); - assert ( skippingws == is_skipws ( &ss )); - } - -void round_trip_d ( const char *p, char delim ) { - std::stringstream ss; - std::string_view sv {p}; - - ss << std::quoted(sv, delim); - std::string s; - ss >> std::quoted(s, delim); - assert ( s == sv ); - } - -void round_trip_e ( const char *p, char escape ) { - std::stringstream ss; - std::string_view sv {p}; - - ss << std::quoted(sv, '"', escape ); - std::string s; - ss >> std::quoted(s, '"', escape ); - assert ( s == sv ); - } - - - -std::string quote ( const char *p, char delim='"', char escape='\\' ) { - std::stringstream ss; - ss << std::quoted(p, delim, escape); - std::string s; - ss >> s; // no quote - return s; +void round_trip(const char* p) { + std::stringstream ss; + bool skippingws = is_skipws(&ss); + std::string_view sv{p}; + + ss << std::quoted(sv); + std::string s; + ss >> std::quoted(s); + assert(s == sv); + assert(skippingws == is_skipws(&ss)); +} + +void round_trip_ws(const char* p) { + std::stringstream ss; + std::noskipws(ss); + bool skippingws = is_skipws(&ss); + std::string_view sv{p}; + + ss << std::quoted(sv); + std::string s; + ss >> std::quoted(s); + assert(s == sv); + assert(skippingws == is_skipws(&ss)); +} + +void round_trip_d(const char* p, char delim) { + std::stringstream ss; + std::string_view sv{p}; + + ss << std::quoted(sv, delim); + std::string s; + ss >> std::quoted(s, delim); + assert(s == sv); +} + +void round_trip_e(const char* p, char escape) { + std::stringstream ss; + std::string_view sv{p}; + + ss << std::quoted(sv, '"', escape); + std::string s; + ss >> std::quoted(s, '"', escape); + assert(s == sv); +} + +std::string quote(const char* p, char delim = '"', char escape = '\\') { + std::stringstream ss; + ss << std::quoted(p, delim, escape); + std::string s; + ss >> s; // no quote + return s; } -std::string unquote ( const char *p, char delim='"', char escape='\\' ) { - std::stringstream ss; - ss << p; - std::string s; - ss >> std::quoted(s, delim, escape); - return s; +std::string unquote(const char* p, char delim = '"', char escape = '\\') { + std::stringstream ss; + ss << p; + std::string s; + ss >> std::quoted(s, delim, escape); + return s; } #ifndef TEST_HAS_NO_WIDE_CHARACTERS -void round_trip ( const wchar_t *p ) { - std::wstringstream ss; - bool skippingws = is_skipws ( &ss ); - std::wstring_view sv {p}; - - ss << std::quoted(sv); - std::wstring s; - ss >> std::quoted(s); - assert ( s == sv ); - assert ( skippingws == is_skipws ( &ss )); - } - - -void round_trip_ws ( const wchar_t *p ) { - std::wstringstream ss; - std::noskipws ( ss ); - bool skippingws = is_skipws ( &ss ); - std::wstring_view sv {p}; - - ss << std::quoted(sv); - std::wstring s; - ss >> std::quoted(s); - assert ( s == sv ); - assert ( skippingws == is_skipws ( &ss )); - } - -void round_trip_d ( const wchar_t *p, wchar_t delim ) { - std::wstringstream ss; - std::wstring_view sv {p}; - - ss << std::quoted(sv, delim); - std::wstring s; - ss >> std::quoted(s, delim); - assert ( s == sv ); - } - -void round_trip_e ( const wchar_t *p, wchar_t escape ) { - std::wstringstream ss; - std::wstring_view sv {p}; - - ss << std::quoted(sv, wchar_t('"'), escape ); - std::wstring s; - ss >> std::quoted(s, wchar_t('"'), escape ); - assert ( s == sv ); - } - - -std::wstring quote ( const wchar_t *p, wchar_t delim='"', wchar_t escape='\\' ) { - std::wstringstream ss; - std::wstring_view sv {p}; - - ss << std::quoted(sv, delim, escape); - std::wstring s; - ss >> s; // no quote - return s; +void round_trip(const wchar_t* p) { + std::wstringstream ss; + bool skippingws = is_skipws(&ss); + std::wstring_view sv{p}; + + ss << std::quoted(sv); + std::wstring s; + ss >> std::quoted(s); + assert(s == sv); + assert(skippingws == is_skipws(&ss)); +} + +void round_trip_ws(const wchar_t* p) { + std::wstringstream ss; + std::noskipws(ss); + bool skippingws = is_skipws(&ss); + std::wstring_view sv{p}; + + ss << std::quoted(sv); + std::wstring s; + ss >> std::quoted(s); + assert(s == sv); + assert(skippingws == is_skipws(&ss)); +} + +void round_trip_d(const wchar_t* p, wchar_t delim) { + std::wstringstream ss; + std::wstring_view sv{p}; + + ss << std::quoted(sv, delim); + std::wstring s; + ss >> std::quoted(s, delim); + assert(s == sv); +} + +void round_trip_e(const wchar_t* p, wchar_t escape) { + std::wstringstream ss; + std::wstring_view sv{p}; + + ss << std::quoted(sv, wchar_t('"'), escape); + std::wstring s; + ss >> std::quoted(s, wchar_t('"'), escape); + assert(s == sv); +} + +std::wstring quote(const wchar_t* p, wchar_t delim = '"', wchar_t escape = '\\') { + std::wstringstream ss; + std::wstring_view sv{p}; + + ss << std::quoted(sv, delim, escape); + std::wstring s; + ss >> s; // no quote + return s; } -std::wstring unquote ( const wchar_t *p, wchar_t delim='"', wchar_t escape='\\' ) { - std::wstringstream ss; - std::wstring_view sv {p}; +std::wstring unquote(const wchar_t* p, wchar_t delim = '"', wchar_t escape = '\\') { + std::wstringstream ss; + std::wstring_view sv{p}; - ss << sv; - std::wstring s; - ss >> std::quoted(s, delim, escape); - return s; + ss << sv; + std::wstring s; + ss >> std::quoted(s, delim, escape); + return s; } #endif // TEST_HAS_NO_WIDE_CHARACTERS -int main(int, char**) -{ - round_trip ( "" ); - round_trip_ws ( "" ); - round_trip_d ( "", 'q' ); - round_trip_e ( "", 'q' ); +int main(int, char**) { + round_trip(""); + round_trip_ws(""); + round_trip_d("", 'q'); + round_trip_e("", 'q'); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - round_trip ( L"" ); - round_trip_ws ( L"" ); - round_trip_d ( L"", 'q' ); - round_trip_e ( L"", 'q' ); + round_trip(L""); + round_trip_ws(L""); + round_trip_d(L"", 'q'); + round_trip_e(L"", 'q'); #endif - round_trip ( "Hi" ); - round_trip_ws ( "Hi" ); - round_trip_d ( "Hi", '!' ); - round_trip_e ( "Hi", '!' ); - assert ( quote ( "Hi", '!' ) == "!Hi!" ); - assert ( quote ( "Hi!", '!' ) == R"(!Hi\!!)" ); + round_trip("Hi"); + round_trip_ws("Hi"); + round_trip_d("Hi", '!'); + round_trip_e("Hi", '!'); + assert(quote("Hi", '!') == "!Hi!"); + assert(quote("Hi!", '!') == R"(!Hi\!!)"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - round_trip ( L"Hi" ); - round_trip_ws ( L"Hi" ); - round_trip_d ( L"Hi", '!' ); - round_trip_e ( L"Hi", '!' ); - assert ( quote ( L"Hi", '!' ) == L"!Hi!" ); - assert ( quote ( L"Hi!", '!' ) == LR"(!Hi\!!)" ); + round_trip(L"Hi"); + round_trip_ws(L"Hi"); + round_trip_d(L"Hi", '!'); + round_trip_e(L"Hi", '!'); + assert(quote(L"Hi", '!') == L"!Hi!"); + assert(quote(L"Hi!", '!') == LR"(!Hi\!!)"); #endif - round_trip ( "Hi Mom" ); - round_trip_ws ( "Hi Mom" ); + round_trip("Hi Mom"); + round_trip_ws("Hi Mom"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - round_trip ( L"Hi Mom" ); - round_trip_ws ( L"Hi Mom" ); + round_trip(L"Hi Mom"); + round_trip_ws(L"Hi Mom"); #endif - assert ( quote ( "" ) == "\"\"" ); - assert ( quote ( "a" ) == "\"a\"" ); + assert(quote("") == "\"\""); + assert(quote("a") == "\"a\""); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert ( quote ( L"" ) == L"\"\"" ); - assert ( quote ( L"a" ) == L"\"a\"" ); + assert(quote(L"") == L"\"\""); + assert(quote(L"a") == L"\"a\""); #endif - // missing end quote - must not hang - assert ( unquote ( "\"abc" ) == "abc" ); - assert ( unquote ( "abc" ) == "abc" ); // no delimiter - assert ( unquote ( "abc def" ) == "abc" ); // no delimiter - assert ( unquote ( "" ) == "" ); // nothing there + // missing end quote - must not hang + assert(unquote("\"abc") == "abc"); + assert(unquote("abc") == "abc"); // no delimiter + assert(unquote("abc def") == "abc"); // no delimiter + assert(unquote("") == ""); // nothing there #ifndef TEST_HAS_NO_WIDE_CHARACTERS - assert ( unquote ( L"\"abc" ) == L"abc" ); - assert ( unquote ( L"abc" ) == L"abc" ); // no delimiter - assert ( unquote ( L"abc def" ) == L"abc" ); // no delimiter - assert ( unquote ( L"" ) == L"" ); // nothing there + assert(unquote(L"\"abc") == L"abc"); + assert(unquote(L"abc") == L"abc"); // no delimiter + assert(unquote(L"abc def") == L"abc"); // no delimiter + assert(unquote(L"") == L""); // nothing there #endif - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer.pass.cpp @@ -18,25 +18,22 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } +int sign(int x) { return x > 0 ? 1 : (x < 0 ? -1 : 0); } -template -void test1 ( std::basic_string_view sv1, const CharT *s, int expected ) { - assert ( sign( sv1.compare(s)) == sign(expected)); +template +void test1(std::basic_string_view sv1, const CharT* s, int expected) { + assert(sign(sv1.compare(s)) == sign(expected)); } -template -void -test( const CharT *s1, const CharT *s2, int expected) -{ - typedef std::basic_string_view string_view_t; - string_view_t sv1 ( s1 ); - test1 ( sv1, s2, expected ); +template +void test(const CharT* s1, const CharT* s2, int expected) { + typedef std::basic_string_view string_view_t; + string_view_t sv1(s1); + test1(sv1, s2, expected); } -int main(int, char**) -{ - { +int main(int, char**) { + { test("", "", 0); test("", "abcde", -5); test("", "abcdefghij", -10); @@ -53,10 +50,10 @@ test("abcdefghijklmnopqrst", "abcde", 15); test("abcdefghijklmnopqrst", "abcdefghij", 10); test("abcdefghijklmnopqrst", "abcdefghijklmnopqrst", 0); - } + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { + { test(L"", L"", 0); test(L"", L"abcde", -5); test(L"", L"abcdefghij", -10); @@ -73,11 +70,11 @@ test(L"abcdefghijklmnopqrst", L"abcde", 15); test(L"abcdefghijklmnopqrst", L"abcdefghij", 10); test(L"abcdefghijklmnopqrst", L"abcdefghijklmnopqrst", 0); - } + } #endif #if TEST_STD_VER >= 11 - { + { test(U"", U"", 0); test(U"", U"abcde", -5); test(U"", U"abcdefghij", -10); @@ -94,9 +91,9 @@ test(U"abcdefghijklmnopqrst", U"abcde", 15); test(U"abcdefghijklmnopqrst", U"abcdefghij", 10); test(U"abcdefghijklmnopqrst", U"abcdefghijklmnopqrst", 0); - } + } - { + { test(u"", u"", 0); test(u"", u"abcde", -5); test(u"", u"abcdefghij", -10); @@ -113,19 +110,19 @@ test(u"abcdefghijklmnopqrst", u"abcde", 15); test(u"abcdefghijklmnopqrst", u"abcdefghij", 10); test(u"abcdefghijklmnopqrst", u"abcdefghijklmnopqrst", 0); - } + } #endif #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; - static_assert ( sv1.compare("") == 0, "" ); - static_assert ( sv1.compare("abcde") < 0, "" ); - static_assert ( sv2.compare("") > 0, "" ); - static_assert ( sv2.compare("abcde") == 0, "" ); - } + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; + static_assert(sv1.compare("") == 0, ""); + static_assert(sv1.compare("abcde") < 0, ""); + static_assert(sv2.compare("") > 0, ""); + static_assert(sv2.compare("abcde") == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp @@ -19,370 +19,361 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } +int sign(int x) { return x > 0 ? 1 : (x < 0 ? -1 : 0); } -template -void test1 ( std::basic_string_view sv1, - std::size_t pos1, size_t n1, const CharT *s, int expected ) { +template +void test1(std::basic_string_view sv1, std::size_t pos1, size_t n1, const CharT* s, int expected) { #ifdef TEST_HAS_NO_EXCEPTIONS - if (pos1 <= sv1.size()) - assert(sign(sv1.compare(pos1, n1, s)) == sign(expected)); + if (pos1 <= sv1.size()) + assert(sign(sv1.compare(pos1, n1, s)) == sign(expected)); #else - try { - assert(sign(sv1.compare(pos1, n1, s)) == sign(expected)); - assert(pos1 <= sv1.size()); - } - catch (const std::out_of_range&) { - assert(pos1 > sv1.size()); - } + try { + assert(sign(sv1.compare(pos1, n1, s)) == sign(expected)); + assert(pos1 <= sv1.size()); + } catch (const std::out_of_range&) { + assert(pos1 > sv1.size()); + } #endif } -template -void -test( const CharT *s1, std::size_t pos1, size_t n1, const CharT *s2, int expected) -{ - typedef std::basic_string_view string_view_t; - string_view_t sv1 ( s1 ); - test1 ( sv1, pos1, n1, s2, expected ); +template +void test(const CharT* s1, std::size_t pos1, size_t n1, const CharT* s2, int expected) { + typedef std::basic_string_view string_view_t; + string_view_t sv1(s1); + test1(sv1, pos1, n1, s2, expected); } -void test0() -{ - test("", 0, 0, "", 0); - test("", 0, 0, "abcde", -5); - test("", 0, 0, "abcdefghij", -10); - test("", 0, 0, "abcdefghijklmnopqrst", -20); - test("", 0, 1, "", 0); - test("", 0, 1, "abcde", -5); - test("", 0, 1, "abcdefghij", -10); - test("", 0, 1, "abcdefghijklmnopqrst", -20); - test("", 1, 0, "", 0); - test("", 1, 0, "abcde", 0); - test("", 1, 0, "abcdefghij", 0); - test("", 1, 0, "abcdefghijklmnopqrst", 0); - test("abcde", 0, 0, "", 0); - test("abcde", 0, 0, "abcde", -5); - test("abcde", 0, 0, "abcdefghij", -10); - test("abcde", 0, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 0, 1, "", 1); - test("abcde", 0, 1, "abcde", -4); - test("abcde", 0, 1, "abcdefghij", -9); - test("abcde", 0, 1, "abcdefghijklmnopqrst", -19); - test("abcde", 0, 2, "", 2); - test("abcde", 0, 2, "abcde", -3); - test("abcde", 0, 2, "abcdefghij", -8); - test("abcde", 0, 2, "abcdefghijklmnopqrst", -18); - test("abcde", 0, 4, "", 4); - test("abcde", 0, 4, "abcde", -1); - test("abcde", 0, 4, "abcdefghij", -6); - test("abcde", 0, 4, "abcdefghijklmnopqrst", -16); - test("abcde", 0, 5, "", 5); - test("abcde", 0, 5, "abcde", 0); - test("abcde", 0, 5, "abcdefghij", -5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", -15); - test("abcde", 0, 6, "", 5); - test("abcde", 0, 6, "abcde", 0); - test("abcde", 0, 6, "abcdefghij", -5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", -15); - test("abcde", 1, 0, "", 0); - test("abcde", 1, 0, "abcde", -5); - test("abcde", 1, 0, "abcdefghij", -10); - test("abcde", 1, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 1, 1, "", 1); - test("abcde", 1, 1, "abcde", 1); - test("abcde", 1, 1, "abcdefghij", 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1); - test("abcde", 1, 2, "", 2); - test("abcde", 1, 2, "abcde", 1); - test("abcde", 1, 2, "abcdefghij", 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1); - test("abcde", 1, 3, "", 3); - test("abcde", 1, 3, "abcde", 1); - test("abcde", 1, 3, "abcdefghij", 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1); - test("abcde", 1, 4, "", 4); - test("abcde", 1, 4, "abcde", 1); - test("abcde", 1, 4, "abcdefghij", 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1); - test("abcde", 1, 5, "", 4); - test("abcde", 1, 5, "abcde", 1); - test("abcde", 1, 5, "abcdefghij", 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1); - test("abcde", 2, 0, "", 0); - test("abcde", 2, 0, "abcde", -5); - test("abcde", 2, 0, "abcdefghij", -10); - test("abcde", 2, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 2, 1, "", 1); - test("abcde", 2, 1, "abcde", 2); - test("abcde", 2, 1, "abcdefghij", 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 2); - test("abcde", 2, 2, "", 2); - test("abcde", 2, 2, "abcde", 2); - test("abcde", 2, 2, "abcdefghij", 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 2); - test("abcde", 2, 3, "", 3); - test("abcde", 2, 3, "abcde", 2); - test("abcde", 2, 3, "abcdefghij", 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 2); - test("abcde", 2, 4, "", 3); - test("abcde", 2, 4, "abcde", 2); - test("abcde", 2, 4, "abcdefghij", 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 2); - test("abcde", 4, 0, "", 0); - test("abcde", 4, 0, "abcde", -5); - test("abcde", 4, 0, "abcdefghij", -10); - test("abcde", 4, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 4, 1, "", 1); - test("abcde", 4, 1, "abcde", 4); - test("abcde", 4, 1, "abcdefghij", 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 4); - test("abcde", 4, 2, "", 1); - test("abcde", 4, 2, "abcde", 4); - test("abcde", 4, 2, "abcdefghij", 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 4); - test("abcde", 5, 0, "", 0); - test("abcde", 5, 0, "abcde", -5); - test("abcde", 5, 0, "abcdefghij", -10); - test("abcde", 5, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 5, 1, "", 0); - test("abcde", 5, 1, "abcde", -5); - test("abcde", 5, 1, "abcdefghij", -10); - test("abcde", 5, 1, "abcdefghijklmnopqrst", -20); +void test0() { + test("", 0, 0, "", 0); + test("", 0, 0, "abcde", -5); + test("", 0, 0, "abcdefghij", -10); + test("", 0, 0, "abcdefghijklmnopqrst", -20); + test("", 0, 1, "", 0); + test("", 0, 1, "abcde", -5); + test("", 0, 1, "abcdefghij", -10); + test("", 0, 1, "abcdefghijklmnopqrst", -20); + test("", 1, 0, "", 0); + test("", 1, 0, "abcde", 0); + test("", 1, 0, "abcdefghij", 0); + test("", 1, 0, "abcdefghijklmnopqrst", 0); + test("abcde", 0, 0, "", 0); + test("abcde", 0, 0, "abcde", -5); + test("abcde", 0, 0, "abcdefghij", -10); + test("abcde", 0, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 0, 1, "", 1); + test("abcde", 0, 1, "abcde", -4); + test("abcde", 0, 1, "abcdefghij", -9); + test("abcde", 0, 1, "abcdefghijklmnopqrst", -19); + test("abcde", 0, 2, "", 2); + test("abcde", 0, 2, "abcde", -3); + test("abcde", 0, 2, "abcdefghij", -8); + test("abcde", 0, 2, "abcdefghijklmnopqrst", -18); + test("abcde", 0, 4, "", 4); + test("abcde", 0, 4, "abcde", -1); + test("abcde", 0, 4, "abcdefghij", -6); + test("abcde", 0, 4, "abcdefghijklmnopqrst", -16); + test("abcde", 0, 5, "", 5); + test("abcde", 0, 5, "abcde", 0); + test("abcde", 0, 5, "abcdefghij", -5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", -15); + test("abcde", 0, 6, "", 5); + test("abcde", 0, 6, "abcde", 0); + test("abcde", 0, 6, "abcdefghij", -5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", -15); + test("abcde", 1, 0, "", 0); + test("abcde", 1, 0, "abcde", -5); + test("abcde", 1, 0, "abcdefghij", -10); + test("abcde", 1, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 1, 1, "", 1); + test("abcde", 1, 1, "abcde", 1); + test("abcde", 1, 1, "abcdefghij", 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1); + test("abcde", 1, 2, "", 2); + test("abcde", 1, 2, "abcde", 1); + test("abcde", 1, 2, "abcdefghij", 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1); + test("abcde", 1, 3, "", 3); + test("abcde", 1, 3, "abcde", 1); + test("abcde", 1, 3, "abcdefghij", 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1); + test("abcde", 1, 4, "", 4); + test("abcde", 1, 4, "abcde", 1); + test("abcde", 1, 4, "abcdefghij", 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1); + test("abcde", 1, 5, "", 4); + test("abcde", 1, 5, "abcde", 1); + test("abcde", 1, 5, "abcdefghij", 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1); + test("abcde", 2, 0, "", 0); + test("abcde", 2, 0, "abcde", -5); + test("abcde", 2, 0, "abcdefghij", -10); + test("abcde", 2, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 2, 1, "", 1); + test("abcde", 2, 1, "abcde", 2); + test("abcde", 2, 1, "abcdefghij", 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 2); + test("abcde", 2, 2, "", 2); + test("abcde", 2, 2, "abcde", 2); + test("abcde", 2, 2, "abcdefghij", 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 2); + test("abcde", 2, 3, "", 3); + test("abcde", 2, 3, "abcde", 2); + test("abcde", 2, 3, "abcdefghij", 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 2); + test("abcde", 2, 4, "", 3); + test("abcde", 2, 4, "abcde", 2); + test("abcde", 2, 4, "abcdefghij", 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 2); + test("abcde", 4, 0, "", 0); + test("abcde", 4, 0, "abcde", -5); + test("abcde", 4, 0, "abcdefghij", -10); + test("abcde", 4, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 4, 1, "", 1); + test("abcde", 4, 1, "abcde", 4); + test("abcde", 4, 1, "abcdefghij", 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 4); + test("abcde", 4, 2, "", 1); + test("abcde", 4, 2, "abcde", 4); + test("abcde", 4, 2, "abcdefghij", 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 4); + test("abcde", 5, 0, "", 0); + test("abcde", 5, 0, "abcde", -5); + test("abcde", 5, 0, "abcdefghij", -10); + test("abcde", 5, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 5, 1, "", 0); + test("abcde", 5, 1, "abcde", -5); + test("abcde", 5, 1, "abcdefghij", -10); + test("abcde", 5, 1, "abcdefghijklmnopqrst", -20); } -void test1() -{ - test("abcde", 6, 0, "", 0); - test("abcde", 6, 0, "abcde", 0); - test("abcde", 6, 0, "abcdefghij", 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0); - test("abcdefghij", 0, 0, "", 0); - test("abcdefghij", 0, 0, "abcde", -5); - test("abcdefghij", 0, 0, "abcdefghij", -10); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 0, 1, "", 1); - test("abcdefghij", 0, 1, "abcde", -4); - test("abcdefghij", 0, 1, "abcdefghij", -9); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", -19); - test("abcdefghij", 0, 5, "", 5); - test("abcdefghij", 0, 5, "abcde", 0); - test("abcdefghij", 0, 5, "abcdefghij", -5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", -15); - test("abcdefghij", 0, 9, "", 9); - test("abcdefghij", 0, 9, "abcde", 4); - test("abcdefghij", 0, 9, "abcdefghij", -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", -11); - test("abcdefghij", 0, 10, "", 10); - test("abcdefghij", 0, 10, "abcde", 5); - test("abcdefghij", 0, 10, "abcdefghij", 0); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", -10); - test("abcdefghij", 0, 11, "", 10); - test("abcdefghij", 0, 11, "abcde", 5); - test("abcdefghij", 0, 11, "abcdefghij", 0); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", -10); - test("abcdefghij", 1, 0, "", 0); - test("abcdefghij", 1, 0, "abcde", -5); - test("abcdefghij", 1, 0, "abcdefghij", -10); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 1, 1, "", 1); - test("abcdefghij", 1, 1, "abcde", 1); - test("abcdefghij", 1, 1, "abcdefghij", 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 1, 4, "", 4); - test("abcdefghij", 1, 4, "abcde", 1); - test("abcdefghij", 1, 4, "abcdefghij", 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 1, 8, "", 8); - test("abcdefghij", 1, 8, "abcde", 1); - test("abcdefghij", 1, 8, "abcdefghij", 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 1, 9, "", 9); - test("abcdefghij", 1, 9, "abcde", 1); - test("abcdefghij", 1, 9, "abcdefghij", 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 1, 10, "", 9); - test("abcdefghij", 1, 10, "abcde", 1); - test("abcdefghij", 1, 10, "abcdefghij", 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 5, 0, "", 0); - test("abcdefghij", 5, 0, "abcde", -5); - test("abcdefghij", 5, 0, "abcdefghij", -10); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 5, 1, "", 1); - test("abcdefghij", 5, 1, "abcde", 5); - test("abcdefghij", 5, 1, "abcdefghij", 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 5, 2, "", 2); - test("abcdefghij", 5, 2, "abcde", 5); - test("abcdefghij", 5, 2, "abcdefghij", 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 5, 4, "", 4); - test("abcdefghij", 5, 4, "abcde", 5); - test("abcdefghij", 5, 4, "abcdefghij", 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 5, 5, "", 5); - test("abcdefghij", 5, 5, "abcde", 5); - test("abcdefghij", 5, 5, "abcdefghij", 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 5, 6, "", 5); - test("abcdefghij", 5, 6, "abcde", 5); - test("abcdefghij", 5, 6, "abcdefghij", 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 9, 0, "", 0); - test("abcdefghij", 9, 0, "abcde", -5); - test("abcdefghij", 9, 0, "abcdefghij", -10); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 9, 1, "", 1); - test("abcdefghij", 9, 1, "abcde", 9); - test("abcdefghij", 9, 1, "abcdefghij", 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 9); - test("abcdefghij", 9, 2, "", 1); - test("abcdefghij", 9, 2, "abcde", 9); - test("abcdefghij", 9, 2, "abcdefghij", 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 9); - test("abcdefghij", 10, 0, "", 0); - test("abcdefghij", 10, 0, "abcde", -5); - test("abcdefghij", 10, 0, "abcdefghij", -10); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 10, 1, "", 0); - test("abcdefghij", 10, 1, "abcde", -5); - test("abcdefghij", 10, 1, "abcdefghij", -10); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 11, 0, "", 0); - test("abcdefghij", 11, 0, "abcde", 0); - test("abcdefghij", 11, 0, "abcdefghij", 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0); +void test1() { + test("abcde", 6, 0, "", 0); + test("abcde", 6, 0, "abcde", 0); + test("abcde", 6, 0, "abcdefghij", 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0); + test("abcdefghij", 0, 0, "", 0); + test("abcdefghij", 0, 0, "abcde", -5); + test("abcdefghij", 0, 0, "abcdefghij", -10); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 0, 1, "", 1); + test("abcdefghij", 0, 1, "abcde", -4); + test("abcdefghij", 0, 1, "abcdefghij", -9); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", -19); + test("abcdefghij", 0, 5, "", 5); + test("abcdefghij", 0, 5, "abcde", 0); + test("abcdefghij", 0, 5, "abcdefghij", -5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", -15); + test("abcdefghij", 0, 9, "", 9); + test("abcdefghij", 0, 9, "abcde", 4); + test("abcdefghij", 0, 9, "abcdefghij", -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", -11); + test("abcdefghij", 0, 10, "", 10); + test("abcdefghij", 0, 10, "abcde", 5); + test("abcdefghij", 0, 10, "abcdefghij", 0); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", -10); + test("abcdefghij", 0, 11, "", 10); + test("abcdefghij", 0, 11, "abcde", 5); + test("abcdefghij", 0, 11, "abcdefghij", 0); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", -10); + test("abcdefghij", 1, 0, "", 0); + test("abcdefghij", 1, 0, "abcde", -5); + test("abcdefghij", 1, 0, "abcdefghij", -10); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 1, 1, "", 1); + test("abcdefghij", 1, 1, "abcde", 1); + test("abcdefghij", 1, 1, "abcdefghij", 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 1, 4, "", 4); + test("abcdefghij", 1, 4, "abcde", 1); + test("abcdefghij", 1, 4, "abcdefghij", 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 1, 8, "", 8); + test("abcdefghij", 1, 8, "abcde", 1); + test("abcdefghij", 1, 8, "abcdefghij", 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 1, 9, "", 9); + test("abcdefghij", 1, 9, "abcde", 1); + test("abcdefghij", 1, 9, "abcdefghij", 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 1, 10, "", 9); + test("abcdefghij", 1, 10, "abcde", 1); + test("abcdefghij", 1, 10, "abcdefghij", 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 5, 0, "", 0); + test("abcdefghij", 5, 0, "abcde", -5); + test("abcdefghij", 5, 0, "abcdefghij", -10); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 5, 1, "", 1); + test("abcdefghij", 5, 1, "abcde", 5); + test("abcdefghij", 5, 1, "abcdefghij", 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 5, 2, "", 2); + test("abcdefghij", 5, 2, "abcde", 5); + test("abcdefghij", 5, 2, "abcdefghij", 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 5, 4, "", 4); + test("abcdefghij", 5, 4, "abcde", 5); + test("abcdefghij", 5, 4, "abcdefghij", 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 5, 5, "", 5); + test("abcdefghij", 5, 5, "abcde", 5); + test("abcdefghij", 5, 5, "abcdefghij", 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 5, 6, "", 5); + test("abcdefghij", 5, 6, "abcde", 5); + test("abcdefghij", 5, 6, "abcdefghij", 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 9, 0, "", 0); + test("abcdefghij", 9, 0, "abcde", -5); + test("abcdefghij", 9, 0, "abcdefghij", -10); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 9, 1, "", 1); + test("abcdefghij", 9, 1, "abcde", 9); + test("abcdefghij", 9, 1, "abcdefghij", 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 9); + test("abcdefghij", 9, 2, "", 1); + test("abcdefghij", 9, 2, "abcde", 9); + test("abcdefghij", 9, 2, "abcdefghij", 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 9); + test("abcdefghij", 10, 0, "", 0); + test("abcdefghij", 10, 0, "abcde", -5); + test("abcdefghij", 10, 0, "abcdefghij", -10); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 10, 1, "", 0); + test("abcdefghij", 10, 1, "abcde", -5); + test("abcdefghij", 10, 1, "abcdefghij", -10); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 11, 0, "", 0); + test("abcdefghij", 11, 0, "abcde", 0); + test("abcdefghij", 11, 0, "abcdefghij", 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0); } -void test2() -{ - test("abcdefghijklmnopqrst", 0, 0, "", 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 0, 1, "", 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", -4); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", -19); - test("abcdefghijklmnopqrst", 0, 10, "", 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", -10); - test("abcdefghijklmnopqrst", 0, 19, "", 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 14); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", -1); - test("abcdefghijklmnopqrst", 0, 20, "", 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 15); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0); - test("abcdefghijklmnopqrst", 0, 21, "", 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 15); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0); - test("abcdefghijklmnopqrst", 1, 0, "", 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 1, 1, "", 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 1, 9, "", 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 1, 18, "", 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 1, 19, "", 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 1, 20, "", 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 10, 0, "", 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 10, 1, "", 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 10, 5, "", 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 10, 9, "", 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 10, 10, "", 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 10, 11, "", 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 19, 0, "", 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 19, 1, "", 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19); - test("abcdefghijklmnopqrst", 19, 2, "", 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19); - test("abcdefghijklmnopqrst", 20, 0, "", 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 20, 1, "", 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", -5); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 21, 0, "", 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0); +void test2() { + test("abcdefghijklmnopqrst", 0, 0, "", 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 0, 1, "", 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", -4); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", -19); + test("abcdefghijklmnopqrst", 0, 10, "", 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", -10); + test("abcdefghijklmnopqrst", 0, 19, "", 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 14); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", -1); + test("abcdefghijklmnopqrst", 0, 20, "", 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 15); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0); + test("abcdefghijklmnopqrst", 0, 21, "", 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 15); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0); + test("abcdefghijklmnopqrst", 1, 0, "", 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 1, 1, "", 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 1, 9, "", 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 1, 18, "", 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 1, 19, "", 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 1, 20, "", 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 10, 0, "", 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 10, 1, "", 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 10, 5, "", 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 10, 9, "", 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 10, 10, "", 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 10, 11, "", 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 19, 0, "", 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 19, 1, "", 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19); + test("abcdefghijklmnopqrst", 19, 2, "", 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19); + test("abcdefghijklmnopqrst", 20, 0, "", 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 20, 1, "", 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", -5); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 21, 0, "", 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0); } +int main(int, char**) { + test0(); + test1(); + test2(); -int main(int, char**) -{ - test0(); - test1(); - test2(); - - { + { test("", 0, 0, "", 0); test("", 0, 0, "abcde", -5); test("", 0, 0, "abcdefghij", -10); test("", 0, 0, "abcdefghijklmnopqrst", -20); test("abcde", 0, 2, "", 5); - test("abcde", 0, 6,"abcde", 0); + test("abcde", 0, 6, "abcde", 0); test("abcde", 0, 6, "abcdefghij", -5); test("abcde", 0, 6, "abcdefghijklmnopqrst", -15); test("abcdefghij", 3, 3, "", 10); - test("abcdefghij", 3, 3,"abcde", 5); + test("abcdefghij", 3, 3, "abcde", 5); test("abcdefghij", 3, 3, "def", 0); test("abcdefghij", 0, 4, "abcdefghijklmnopqrst", -10); test("abcdefghijklmnopqrst", 5, 5, "", 20); test("abcdefghijklmnopqrst", 0, 8, "abcde", 15); test("abcdefghijklmnopqrst", 0, 12, "abcdefghij", 10); test("abcdefghijklmnopqrst", 0, static_cast(-1), "abcdefghijklmnopqrst", 0); - } + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { + { test(L"", 0, 0, L"", 0); test(L"", 0, 0, L"abcde", -5); test(L"", 0, 0, L"abcdefghij", -10); @@ -399,11 +390,11 @@ test(L"abcdefghijklmnopqrst", 0, 8, L"abcde", 15); test(L"abcdefghijklmnopqrst", 0, 12, L"abcdefghij", 10); test(L"abcdefghijklmnopqrst", 0, static_cast(-1), L"abcdefghijklmnopqrst", 0); - } + } #endif #if TEST_STD_VER >= 11 - { + { test(U"", 0, 0, U"", 0); test(U"", 0, 0, U"abcde", -5); test(U"", 0, 0, U"abcdefghij", -10); @@ -420,9 +411,9 @@ test(U"abcdefghijklmnopqrst", 0, 8, U"abcde", 15); test(U"abcdefghijklmnopqrst", 0, 12, U"abcdefghij", 10); test(U"abcdefghijklmnopqrst", 0, static_cast(-1), U"abcdefghijklmnopqrst", 0); - } + } - { + { test(u"", 0, 0, u"", 0); test(u"", 0, 0, u"abcde", -5); test(u"", 0, 0, u"abcdefghij", -10); @@ -439,19 +430,19 @@ test(u"abcdefghijklmnopqrst", 0, 8, u"abcde", 15); test(u"abcdefghijklmnopqrst", 0, 12, u"abcdefghij", 10); test(u"abcdefghijklmnopqrst", 0, static_cast(-1), u"abcdefghijklmnopqrst", 0); - } + } #endif #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcde", 5 }; - static_assert ( sv1.compare(0, 0, "") == 0, "" ); - static_assert ( sv1.compare(0, 0, "abcde") < 0, "" ); - static_assert ( sv2.compare(0, 2, "") > 0, "" ); - static_assert ( sv2.compare(0, 6, "abcde") == 0, "" ); - } + constexpr SV sv1; + constexpr SV sv2{"abcde", 5}; + static_assert(sv1.compare(0, 0, "") == 0, ""); + static_assert(sv1.compare(0, 0, "abcde") < 0, ""); + static_assert(sv2.compare(0, 2, "") > 0, ""); + static_assert(sv2.compare(0, 6, "abcde") == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv.pass.cpp @@ -19,388 +19,382 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } +int sign(int x) { return x > 0 ? 1 : (x < 0 ? -1 : 0); } -template -void test1 ( std::basic_string_view sv1, std::size_t pos1, size_t n1, - std::basic_string_view sv2, int expected ) { +template +void test1( + std::basic_string_view sv1, std::size_t pos1, size_t n1, std::basic_string_view sv2, int expected) { #ifdef TEST_HAS_NO_EXCEPTIONS - if (pos1 <= sv1.size()) - assert(sign( sv1.compare(pos1, n1, sv2)) == sign(expected)); + if (pos1 <= sv1.size()) + assert(sign(sv1.compare(pos1, n1, sv2)) == sign(expected)); #else - try { - assert(sign( sv1.compare(pos1, n1, sv2)) == sign(expected)); - assert(pos1 <= sv1.size()); - } - catch (const std::out_of_range&) { - assert(pos1 > sv1.size()); - } + try { + assert(sign(sv1.compare(pos1, n1, sv2)) == sign(expected)); + assert(pos1 <= sv1.size()); + } catch (const std::out_of_range&) { + assert(pos1 > sv1.size()); + } #endif } - -template -void test ( const CharT *s1, std::size_t pos1, size_t n1, const CharT *s2, int expected ) { - typedef std::basic_string_view string_view_t; - string_view_t sv1 ( s1 ); - string_view_t sv2 ( s2 ); - test1(sv1, pos1, n1, sv2, expected); +template +void test(const CharT* s1, std::size_t pos1, size_t n1, const CharT* s2, int expected) { + typedef std::basic_string_view string_view_t; + string_view_t sv1(s1); + string_view_t sv2(s2); + test1(sv1, pos1, n1, sv2, expected); } -void test0() -{ - test("", 0, 0, "", 0); - test("", 0, 0, "abcde", -5); - test("", 0, 0, "abcdefghij", -10); - test("", 0, 0, "abcdefghijklmnopqrst", -20); - test("", 0, 1, "", 0); - test("", 0, 1, "abcde", -5); - test("", 0, 1, "abcdefghij", -10); - test("", 0, 1, "abcdefghijklmnopqrst", -20); - test("", 1, 0, "", 0); - test("", 1, 0, "abcde", 0); - test("", 1, 0, "abcdefghij", 0); - test("", 1, 0, "abcdefghijklmnopqrst", 0); - test("abcde", 0, 0, "", 0); - test("abcde", 0, 0, "abcde", -5); - test("abcde", 0, 0, "abcdefghij", -10); - test("abcde", 0, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 0, 1, "", 1); - test("abcde", 0, 1, "abcde", -4); - test("abcde", 0, 1, "abcdefghij", -9); - test("abcde", 0, 1, "abcdefghijklmnopqrst", -19); - test("abcde", 0, 2, "", 2); - test("abcde", 0, 2, "abcde", -3); - test("abcde", 0, 2, "abcdefghij", -8); - test("abcde", 0, 2, "abcdefghijklmnopqrst", -18); - test("abcde", 0, 4, "", 4); - test("abcde", 0, 4, "abcde", -1); - test("abcde", 0, 4, "abcdefghij", -6); - test("abcde", 0, 4, "abcdefghijklmnopqrst", -16); - test("abcde", 0, 5, "", 5); - test("abcde", 0, 5, "abcde", 0); - test("abcde", 0, 5, "abcdefghij", -5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", -15); - test("abcde", 0, 6, "", 5); - test("abcde", 0, 6, "abcde", 0); - test("abcde", 0, 6, "abcdefghij", -5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", -15); - test("abcde", 1, 0, "", 0); - test("abcde", 1, 0, "abcde", -5); - test("abcde", 1, 0, "abcdefghij", -10); - test("abcde", 1, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 1, 1, "", 1); - test("abcde", 1, 1, "abcde", 1); - test("abcde", 1, 1, "abcdefghij", 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1); - test("abcde", 1, 2, "", 2); - test("abcde", 1, 2, "abcde", 1); - test("abcde", 1, 2, "abcdefghij", 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1); - test("abcde", 1, 3, "", 3); - test("abcde", 1, 3, "abcde", 1); - test("abcde", 1, 3, "abcdefghij", 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1); - test("abcde", 1, 4, "", 4); - test("abcde", 1, 4, "abcde", 1); - test("abcde", 1, 4, "abcdefghij", 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1); - test("abcde", 1, 5, "", 4); - test("abcde", 1, 5, "abcde", 1); - test("abcde", 1, 5, "abcdefghij", 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1); - test("abcde", 2, 0, "", 0); - test("abcde", 2, 0, "abcde", -5); - test("abcde", 2, 0, "abcdefghij", -10); - test("abcde", 2, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 2, 1, "", 1); - test("abcde", 2, 1, "abcde", 2); - test("abcde", 2, 1, "abcdefghij", 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 2); - test("abcde", 2, 2, "", 2); - test("abcde", 2, 2, "abcde", 2); - test("abcde", 2, 2, "abcdefghij", 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 2); - test("abcde", 2, 3, "", 3); - test("abcde", 2, 3, "abcde", 2); - test("abcde", 2, 3, "abcdefghij", 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 2); - test("abcde", 2, 4, "", 3); - test("abcde", 2, 4, "abcde", 2); - test("abcde", 2, 4, "abcdefghij", 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 2); - test("abcde", 4, 0, "", 0); - test("abcde", 4, 0, "abcde", -5); - test("abcde", 4, 0, "abcdefghij", -10); - test("abcde", 4, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 4, 1, "", 1); - test("abcde", 4, 1, "abcde", 4); - test("abcde", 4, 1, "abcdefghij", 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 4); - test("abcde", 4, 2, "", 1); - test("abcde", 4, 2, "abcde", 4); - test("abcde", 4, 2, "abcdefghij", 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 4); - test("abcde", 5, 0, "", 0); - test("abcde", 5, 0, "abcde", -5); - test("abcde", 5, 0, "abcdefghij", -10); - test("abcde", 5, 0, "abcdefghijklmnopqrst", -20); - test("abcde", 5, 1, "", 0); - test("abcde", 5, 1, "abcde", -5); - test("abcde", 5, 1, "abcdefghij", -10); - test("abcde", 5, 1, "abcdefghijklmnopqrst", -20); +void test0() { + test("", 0, 0, "", 0); + test("", 0, 0, "abcde", -5); + test("", 0, 0, "abcdefghij", -10); + test("", 0, 0, "abcdefghijklmnopqrst", -20); + test("", 0, 1, "", 0); + test("", 0, 1, "abcde", -5); + test("", 0, 1, "abcdefghij", -10); + test("", 0, 1, "abcdefghijklmnopqrst", -20); + test("", 1, 0, "", 0); + test("", 1, 0, "abcde", 0); + test("", 1, 0, "abcdefghij", 0); + test("", 1, 0, "abcdefghijklmnopqrst", 0); + test("abcde", 0, 0, "", 0); + test("abcde", 0, 0, "abcde", -5); + test("abcde", 0, 0, "abcdefghij", -10); + test("abcde", 0, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 0, 1, "", 1); + test("abcde", 0, 1, "abcde", -4); + test("abcde", 0, 1, "abcdefghij", -9); + test("abcde", 0, 1, "abcdefghijklmnopqrst", -19); + test("abcde", 0, 2, "", 2); + test("abcde", 0, 2, "abcde", -3); + test("abcde", 0, 2, "abcdefghij", -8); + test("abcde", 0, 2, "abcdefghijklmnopqrst", -18); + test("abcde", 0, 4, "", 4); + test("abcde", 0, 4, "abcde", -1); + test("abcde", 0, 4, "abcdefghij", -6); + test("abcde", 0, 4, "abcdefghijklmnopqrst", -16); + test("abcde", 0, 5, "", 5); + test("abcde", 0, 5, "abcde", 0); + test("abcde", 0, 5, "abcdefghij", -5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", -15); + test("abcde", 0, 6, "", 5); + test("abcde", 0, 6, "abcde", 0); + test("abcde", 0, 6, "abcdefghij", -5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", -15); + test("abcde", 1, 0, "", 0); + test("abcde", 1, 0, "abcde", -5); + test("abcde", 1, 0, "abcdefghij", -10); + test("abcde", 1, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 1, 1, "", 1); + test("abcde", 1, 1, "abcde", 1); + test("abcde", 1, 1, "abcdefghij", 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1); + test("abcde", 1, 2, "", 2); + test("abcde", 1, 2, "abcde", 1); + test("abcde", 1, 2, "abcdefghij", 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1); + test("abcde", 1, 3, "", 3); + test("abcde", 1, 3, "abcde", 1); + test("abcde", 1, 3, "abcdefghij", 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1); + test("abcde", 1, 4, "", 4); + test("abcde", 1, 4, "abcde", 1); + test("abcde", 1, 4, "abcdefghij", 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1); + test("abcde", 1, 5, "", 4); + test("abcde", 1, 5, "abcde", 1); + test("abcde", 1, 5, "abcdefghij", 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1); + test("abcde", 2, 0, "", 0); + test("abcde", 2, 0, "abcde", -5); + test("abcde", 2, 0, "abcdefghij", -10); + test("abcde", 2, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 2, 1, "", 1); + test("abcde", 2, 1, "abcde", 2); + test("abcde", 2, 1, "abcdefghij", 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 2); + test("abcde", 2, 2, "", 2); + test("abcde", 2, 2, "abcde", 2); + test("abcde", 2, 2, "abcdefghij", 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 2); + test("abcde", 2, 3, "", 3); + test("abcde", 2, 3, "abcde", 2); + test("abcde", 2, 3, "abcdefghij", 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 2); + test("abcde", 2, 4, "", 3); + test("abcde", 2, 4, "abcde", 2); + test("abcde", 2, 4, "abcdefghij", 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 2); + test("abcde", 4, 0, "", 0); + test("abcde", 4, 0, "abcde", -5); + test("abcde", 4, 0, "abcdefghij", -10); + test("abcde", 4, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 4, 1, "", 1); + test("abcde", 4, 1, "abcde", 4); + test("abcde", 4, 1, "abcdefghij", 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 4); + test("abcde", 4, 2, "", 1); + test("abcde", 4, 2, "abcde", 4); + test("abcde", 4, 2, "abcdefghij", 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 4); + test("abcde", 5, 0, "", 0); + test("abcde", 5, 0, "abcde", -5); + test("abcde", 5, 0, "abcdefghij", -10); + test("abcde", 5, 0, "abcdefghijklmnopqrst", -20); + test("abcde", 5, 1, "", 0); + test("abcde", 5, 1, "abcde", -5); + test("abcde", 5, 1, "abcdefghij", -10); + test("abcde", 5, 1, "abcdefghijklmnopqrst", -20); } -void test1() -{ - test("abcde", 6, 0, "", 0); - test("abcde", 6, 0, "abcde", 0); - test("abcde", 6, 0, "abcdefghij", 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0); - test("abcdefghij", 0, 0, "", 0); - test("abcdefghij", 0, 0, "abcde", -5); - test("abcdefghij", 0, 0, "abcdefghij", -10); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 0, 1, "", 1); - test("abcdefghij", 0, 1, "abcde", -4); - test("abcdefghij", 0, 1, "abcdefghij", -9); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", -19); - test("abcdefghij", 0, 5, "", 5); - test("abcdefghij", 0, 5, "abcde", 0); - test("abcdefghij", 0, 5, "abcdefghij", -5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", -15); - test("abcdefghij", 0, 9, "", 9); - test("abcdefghij", 0, 9, "abcde", 4); - test("abcdefghij", 0, 9, "abcdefghij", -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", -11); - test("abcdefghij", 0, 10, "", 10); - test("abcdefghij", 0, 10, "abcde", 5); - test("abcdefghij", 0, 10, "abcdefghij", 0); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", -10); - test("abcdefghij", 0, 11, "", 10); - test("abcdefghij", 0, 11, "abcde", 5); - test("abcdefghij", 0, 11, "abcdefghij", 0); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", -10); - test("abcdefghij", 1, 0, "", 0); - test("abcdefghij", 1, 0, "abcde", -5); - test("abcdefghij", 1, 0, "abcdefghij", -10); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 1, 1, "", 1); - test("abcdefghij", 1, 1, "abcde", 1); - test("abcdefghij", 1, 1, "abcdefghij", 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 1, 4, "", 4); - test("abcdefghij", 1, 4, "abcde", 1); - test("abcdefghij", 1, 4, "abcdefghij", 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 1, 8, "", 8); - test("abcdefghij", 1, 8, "abcde", 1); - test("abcdefghij", 1, 8, "abcdefghij", 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 1, 9, "", 9); - test("abcdefghij", 1, 9, "abcde", 1); - test("abcdefghij", 1, 9, "abcdefghij", 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 1, 10, "", 9); - test("abcdefghij", 1, 10, "abcde", 1); - test("abcdefghij", 1, 10, "abcdefghij", 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1); - test("abcdefghij", 5, 0, "", 0); - test("abcdefghij", 5, 0, "abcde", -5); - test("abcdefghij", 5, 0, "abcdefghij", -10); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 5, 1, "", 1); - test("abcdefghij", 5, 1, "abcde", 5); - test("abcdefghij", 5, 1, "abcdefghij", 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 5, 2, "", 2); - test("abcdefghij", 5, 2, "abcde", 5); - test("abcdefghij", 5, 2, "abcdefghij", 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 5, 4, "", 4); - test("abcdefghij", 5, 4, "abcde", 5); - test("abcdefghij", 5, 4, "abcdefghij", 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 5, 5, "", 5); - test("abcdefghij", 5, 5, "abcde", 5); - test("abcdefghij", 5, 5, "abcdefghij", 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 5, 6, "", 5); - test("abcdefghij", 5, 6, "abcde", 5); - test("abcdefghij", 5, 6, "abcdefghij", 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 5); - test("abcdefghij", 9, 0, "", 0); - test("abcdefghij", 9, 0, "abcde", -5); - test("abcdefghij", 9, 0, "abcdefghij", -10); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 9, 1, "", 1); - test("abcdefghij", 9, 1, "abcde", 9); - test("abcdefghij", 9, 1, "abcdefghij", 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 9); - test("abcdefghij", 9, 2, "", 1); - test("abcdefghij", 9, 2, "abcde", 9); - test("abcdefghij", 9, 2, "abcdefghij", 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 9); - test("abcdefghij", 10, 0, "", 0); - test("abcdefghij", 10, 0, "abcde", -5); - test("abcdefghij", 10, 0, "abcdefghij", -10); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 10, 1, "", 0); - test("abcdefghij", 10, 1, "abcde", -5); - test("abcdefghij", 10, 1, "abcdefghij", -10); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", -20); - test("abcdefghij", 11, 0, "", 0); - test("abcdefghij", 11, 0, "abcde", 0); - test("abcdefghij", 11, 0, "abcdefghij", 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0); +void test1() { + test("abcde", 6, 0, "", 0); + test("abcde", 6, 0, "abcde", 0); + test("abcde", 6, 0, "abcdefghij", 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0); + test("abcdefghij", 0, 0, "", 0); + test("abcdefghij", 0, 0, "abcde", -5); + test("abcdefghij", 0, 0, "abcdefghij", -10); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 0, 1, "", 1); + test("abcdefghij", 0, 1, "abcde", -4); + test("abcdefghij", 0, 1, "abcdefghij", -9); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", -19); + test("abcdefghij", 0, 5, "", 5); + test("abcdefghij", 0, 5, "abcde", 0); + test("abcdefghij", 0, 5, "abcdefghij", -5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", -15); + test("abcdefghij", 0, 9, "", 9); + test("abcdefghij", 0, 9, "abcde", 4); + test("abcdefghij", 0, 9, "abcdefghij", -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", -11); + test("abcdefghij", 0, 10, "", 10); + test("abcdefghij", 0, 10, "abcde", 5); + test("abcdefghij", 0, 10, "abcdefghij", 0); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", -10); + test("abcdefghij", 0, 11, "", 10); + test("abcdefghij", 0, 11, "abcde", 5); + test("abcdefghij", 0, 11, "abcdefghij", 0); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", -10); + test("abcdefghij", 1, 0, "", 0); + test("abcdefghij", 1, 0, "abcde", -5); + test("abcdefghij", 1, 0, "abcdefghij", -10); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 1, 1, "", 1); + test("abcdefghij", 1, 1, "abcde", 1); + test("abcdefghij", 1, 1, "abcdefghij", 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 1, 4, "", 4); + test("abcdefghij", 1, 4, "abcde", 1); + test("abcdefghij", 1, 4, "abcdefghij", 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 1, 8, "", 8); + test("abcdefghij", 1, 8, "abcde", 1); + test("abcdefghij", 1, 8, "abcdefghij", 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 1, 9, "", 9); + test("abcdefghij", 1, 9, "abcde", 1); + test("abcdefghij", 1, 9, "abcdefghij", 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 1, 10, "", 9); + test("abcdefghij", 1, 10, "abcde", 1); + test("abcdefghij", 1, 10, "abcdefghij", 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1); + test("abcdefghij", 5, 0, "", 0); + test("abcdefghij", 5, 0, "abcde", -5); + test("abcdefghij", 5, 0, "abcdefghij", -10); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 5, 1, "", 1); + test("abcdefghij", 5, 1, "abcde", 5); + test("abcdefghij", 5, 1, "abcdefghij", 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 5, 2, "", 2); + test("abcdefghij", 5, 2, "abcde", 5); + test("abcdefghij", 5, 2, "abcdefghij", 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 5, 4, "", 4); + test("abcdefghij", 5, 4, "abcde", 5); + test("abcdefghij", 5, 4, "abcdefghij", 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 5, 5, "", 5); + test("abcdefghij", 5, 5, "abcde", 5); + test("abcdefghij", 5, 5, "abcdefghij", 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 5, 6, "", 5); + test("abcdefghij", 5, 6, "abcde", 5); + test("abcdefghij", 5, 6, "abcdefghij", 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 5); + test("abcdefghij", 9, 0, "", 0); + test("abcdefghij", 9, 0, "abcde", -5); + test("abcdefghij", 9, 0, "abcdefghij", -10); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 9, 1, "", 1); + test("abcdefghij", 9, 1, "abcde", 9); + test("abcdefghij", 9, 1, "abcdefghij", 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 9); + test("abcdefghij", 9, 2, "", 1); + test("abcdefghij", 9, 2, "abcde", 9); + test("abcdefghij", 9, 2, "abcdefghij", 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 9); + test("abcdefghij", 10, 0, "", 0); + test("abcdefghij", 10, 0, "abcde", -5); + test("abcdefghij", 10, 0, "abcdefghij", -10); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 10, 1, "", 0); + test("abcdefghij", 10, 1, "abcde", -5); + test("abcdefghij", 10, 1, "abcdefghij", -10); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", -20); + test("abcdefghij", 11, 0, "", 0); + test("abcdefghij", 11, 0, "abcde", 0); + test("abcdefghij", 11, 0, "abcdefghij", 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0); } -void test2() -{ - test("abcdefghijklmnopqrst", 0, 0, "", 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 0, 1, "", 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", -4); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", -19); - test("abcdefghijklmnopqrst", 0, 10, "", 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", -10); - test("abcdefghijklmnopqrst", 0, 19, "", 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 14); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", -1); - test("abcdefghijklmnopqrst", 0, 20, "", 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 15); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0); - test("abcdefghijklmnopqrst", 0, 21, "", 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 15); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0); - test("abcdefghijklmnopqrst", 1, 0, "", 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 1, 1, "", 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 1, 9, "", 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 1, 18, "", 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 1, 19, "", 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 1, 20, "", 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1); - test("abcdefghijklmnopqrst", 10, 0, "", 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 10, 1, "", 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 10, 5, "", 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 10, 9, "", 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 10, 10, "", 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 10, 11, "", 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10); - test("abcdefghijklmnopqrst", 19, 0, "", 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 19, 1, "", 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19); - test("abcdefghijklmnopqrst", 19, 2, "", 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19); - test("abcdefghijklmnopqrst", 20, 0, "", 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", -5); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 20, 1, "", 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", -5); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", -20); - test("abcdefghijklmnopqrst", 21, 0, "", 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0); +void test2() { + test("abcdefghijklmnopqrst", 0, 0, "", 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 0, 1, "", 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", -4); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", -19); + test("abcdefghijklmnopqrst", 0, 10, "", 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", -10); + test("abcdefghijklmnopqrst", 0, 19, "", 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 14); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", -1); + test("abcdefghijklmnopqrst", 0, 20, "", 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 15); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0); + test("abcdefghijklmnopqrst", 0, 21, "", 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 15); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0); + test("abcdefghijklmnopqrst", 1, 0, "", 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 1, 1, "", 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 1, 9, "", 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 1, 18, "", 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 1, 19, "", 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 1, 20, "", 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1); + test("abcdefghijklmnopqrst", 10, 0, "", 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 10, 1, "", 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 10, 5, "", 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 10, 9, "", 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 10, 10, "", 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 10, 11, "", 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10); + test("abcdefghijklmnopqrst", 19, 0, "", 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 19, 1, "", 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19); + test("abcdefghijklmnopqrst", 19, 2, "", 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19); + test("abcdefghijklmnopqrst", 20, 0, "", 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", -5); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 20, 1, "", 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", -5); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", -20); + test("abcdefghijklmnopqrst", 21, 0, "", 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0); } - int main(int, char**) { - test0(); - test1(); - test2(); + test0(); + test1(); + test2(); - { + { test("abcde", 5, 1, "", 0); test("abcde", 2, 4, "", 3); test("abcde", 2, 4, "abcde", 2); test("ABCde", 2, 4, "abcde", -1); - } + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { + { test(L"abcde", 5, 1, L"", 0); test(L"abcde", 2, 4, L"", 3); test(L"abcde", 2, 4, L"abcde", 2); test(L"ABCde", 2, 4, L"abcde", -1); - } + } #endif #if TEST_STD_VER >= 11 - { + { test(u"abcde", 5, 1, u"", 0); test(u"abcde", 2, 4, u"", 3); test(u"abcde", 2, 4, u"abcde", 2); test(u"ABCde", 2, 4, u"abcde", -1); - } + } - { + { test(U"abcde", 5, 1, U"", 0); test(U"abcde", 2, 4, U"", 3); test(U"abcde", 2, 4, U"abcde", 2); test(U"ABCde", 2, 4, U"abcde", -1); - } + } #endif #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1 { "abcde", 5 }; - constexpr SV sv2 { "abcde", 0 }; - static_assert ( sv1.compare(5, 1, sv2) == 0, "" ); - static_assert ( sv1.compare(2, 4, sv2) > 0, "" ); - } + constexpr SV sv1{"abcde", 5}; + constexpr SV sv2{"abcde", 0}; + static_assert(sv1.compare(5, 1, sv2) == 0, ""); + static_assert(sv1.compare(2, 4, sv2) > 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_pointer_size.pass.cpp @@ -20,1338 +20,1310 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } +int sign(int x) { return x > 0 ? 1 : (x < 0 ? -1 : 0); } -template -void test1 ( std::basic_string_view sv1, std::size_t pos1, size_t n1, - const CharT *s2, std::size_t n2, int expected ) { +template +void test1( + std::basic_string_view sv1, std::size_t pos1, size_t n1, const CharT* s2, std::size_t n2, int expected) { #ifdef TEST_HAS_NO_EXCEPTIONS - if (pos1 <= sv1.size()) - assert(sign(sv1.compare(pos1, n1, s2, n2)) == sign(expected)); + if (pos1 <= sv1.size()) + assert(sign(sv1.compare(pos1, n1, s2, n2)) == sign(expected)); #else - try { - assert(sign(sv1.compare(pos1, n1, s2, n2)) == sign(expected)); - assert(pos1 <= sv1.size()); - } - catch (const std::out_of_range&) { - assert(pos1 > sv1.size()); - } + try { + assert(sign(sv1.compare(pos1, n1, s2, n2)) == sign(expected)); + assert(pos1 <= sv1.size()); + } catch (const std::out_of_range&) { + assert(pos1 > sv1.size()); + } #endif } - -template -void test ( const CharT *s1, std::size_t pos1, size_t n1, - const CharT *s2, std::size_t n2, - int expected ) { - typedef std::basic_string_view string_view_t; - string_view_t sv1 ( s1 ); - test1 (sv1, pos1, n1, s2, n2, expected); +template +void test(const CharT* s1, std::size_t pos1, size_t n1, const CharT* s2, std::size_t n2, int expected) { + typedef std::basic_string_view string_view_t; + string_view_t sv1(s1); + test1(sv1, pos1, n1, s2, n2, expected); } - -void test0() -{ - test("", 0, 0, "", 0, 0); - test("", 0, 0, "abcde", 0, 0); - test("", 0, 0, "abcde", 1, -1); - test("", 0, 0, "abcde", 2, -2); - test("", 0, 0, "abcde", 4, -4); - test("", 0, 0, "abcde", 5, -5); - test("", 0, 0, "abcdefghij", 0, 0); - test("", 0, 0, "abcdefghij", 1, -1); - test("", 0, 0, "abcdefghij", 5, -5); - test("", 0, 0, "abcdefghij", 9, -9); - test("", 0, 0, "abcdefghij", 10, -10); - test("", 0, 0, "abcdefghijklmnopqrst", 0, 0); - test("", 0, 0, "abcdefghijklmnopqrst", 1, -1); - test("", 0, 0, "abcdefghijklmnopqrst", 10, -10); - test("", 0, 0, "abcdefghijklmnopqrst", 19, -19); - test("", 0, 0, "abcdefghijklmnopqrst", 20, -20); - test("", 0, 1, "", 0, 0); - test("", 0, 1, "abcde", 0, 0); - test("", 0, 1, "abcde", 1, -1); - test("", 0, 1, "abcde", 2, -2); - test("", 0, 1, "abcde", 4, -4); - test("", 0, 1, "abcde", 5, -5); - test("", 0, 1, "abcdefghij", 0, 0); - test("", 0, 1, "abcdefghij", 1, -1); - test("", 0, 1, "abcdefghij", 5, -5); - test("", 0, 1, "abcdefghij", 9, -9); - test("", 0, 1, "abcdefghij", 10, -10); - test("", 0, 1, "abcdefghijklmnopqrst", 0, 0); - test("", 0, 1, "abcdefghijklmnopqrst", 1, -1); - test("", 0, 1, "abcdefghijklmnopqrst", 10, -10); - test("", 0, 1, "abcdefghijklmnopqrst", 19, -19); - test("", 0, 1, "abcdefghijklmnopqrst", 20, -20); - test("", 1, 0, "", 0, 0); - test("", 1, 0, "abcde", 0, 0); - test("", 1, 0, "abcde", 1, 0); - test("", 1, 0, "abcde", 2, 0); - test("", 1, 0, "abcde", 4, 0); - test("", 1, 0, "abcde", 5, 0); - test("", 1, 0, "abcdefghij", 0, 0); - test("", 1, 0, "abcdefghij", 1, 0); - test("", 1, 0, "abcdefghij", 5, 0); - test("", 1, 0, "abcdefghij", 9, 0); - test("", 1, 0, "abcdefghij", 10, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 0, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 1, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 10, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 19, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 20, 0); - test("abcde", 0, 0, "", 0, 0); - test("abcde", 0, 0, "abcde", 0, 0); - test("abcde", 0, 0, "abcde", 1, -1); - test("abcde", 0, 0, "abcde", 2, -2); - test("abcde", 0, 0, "abcde", 4, -4); - test("abcde", 0, 0, "abcde", 5, -5); - test("abcde", 0, 0, "abcdefghij", 0, 0); - test("abcde", 0, 0, "abcdefghij", 1, -1); - test("abcde", 0, 0, "abcdefghij", 5, -5); - test("abcde", 0, 0, "abcdefghij", 9, -9); - test("abcde", 0, 0, "abcdefghij", 10, -10); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcde", 0, 1, "", 0, 1); - test("abcde", 0, 1, "abcde", 0, 1); - test("abcde", 0, 1, "abcde", 1, 0); - test("abcde", 0, 1, "abcde", 2, -1); - test("abcde", 0, 1, "abcde", 4, -3); - test("abcde", 0, 1, "abcde", 5, -4); - test("abcde", 0, 1, "abcdefghij", 0, 1); - test("abcde", 0, 1, "abcdefghij", 1, 0); - test("abcde", 0, 1, "abcdefghij", 5, -4); - test("abcde", 0, 1, "abcdefghij", 9, -8); - test("abcde", 0, 1, "abcdefghij", 10, -9); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 0); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, -9); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, -18); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 20, -19); - test("abcde", 0, 2, "", 0, 2); - test("abcde", 0, 2, "abcde", 0, 2); - test("abcde", 0, 2, "abcde", 1, 1); - test("abcde", 0, 2, "abcde", 2, 0); - test("abcde", 0, 2, "abcde", 4, -2); - test("abcde", 0, 2, "abcde", 5, -3); - test("abcde", 0, 2, "abcdefghij", 0, 2); - test("abcde", 0, 2, "abcdefghij", 1, 1); - test("abcde", 0, 2, "abcdefghij", 5, -3); - test("abcde", 0, 2, "abcdefghij", 9, -7); - test("abcde", 0, 2, "abcdefghij", 10, -8); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 2); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 1); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, -8); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, -17); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 20, -18); - test("abcde", 0, 4, "", 0, 4); - test("abcde", 0, 4, "abcde", 0, 4); - test("abcde", 0, 4, "abcde", 1, 3); - test("abcde", 0, 4, "abcde", 2, 2); +void test0() { + test("", 0, 0, "", 0, 0); + test("", 0, 0, "abcde", 0, 0); + test("", 0, 0, "abcde", 1, -1); + test("", 0, 0, "abcde", 2, -2); + test("", 0, 0, "abcde", 4, -4); + test("", 0, 0, "abcde", 5, -5); + test("", 0, 0, "abcdefghij", 0, 0); + test("", 0, 0, "abcdefghij", 1, -1); + test("", 0, 0, "abcdefghij", 5, -5); + test("", 0, 0, "abcdefghij", 9, -9); + test("", 0, 0, "abcdefghij", 10, -10); + test("", 0, 0, "abcdefghijklmnopqrst", 0, 0); + test("", 0, 0, "abcdefghijklmnopqrst", 1, -1); + test("", 0, 0, "abcdefghijklmnopqrst", 10, -10); + test("", 0, 0, "abcdefghijklmnopqrst", 19, -19); + test("", 0, 0, "abcdefghijklmnopqrst", 20, -20); + test("", 0, 1, "", 0, 0); + test("", 0, 1, "abcde", 0, 0); + test("", 0, 1, "abcde", 1, -1); + test("", 0, 1, "abcde", 2, -2); + test("", 0, 1, "abcde", 4, -4); + test("", 0, 1, "abcde", 5, -5); + test("", 0, 1, "abcdefghij", 0, 0); + test("", 0, 1, "abcdefghij", 1, -1); + test("", 0, 1, "abcdefghij", 5, -5); + test("", 0, 1, "abcdefghij", 9, -9); + test("", 0, 1, "abcdefghij", 10, -10); + test("", 0, 1, "abcdefghijklmnopqrst", 0, 0); + test("", 0, 1, "abcdefghijklmnopqrst", 1, -1); + test("", 0, 1, "abcdefghijklmnopqrst", 10, -10); + test("", 0, 1, "abcdefghijklmnopqrst", 19, -19); + test("", 0, 1, "abcdefghijklmnopqrst", 20, -20); + test("", 1, 0, "", 0, 0); + test("", 1, 0, "abcde", 0, 0); + test("", 1, 0, "abcde", 1, 0); + test("", 1, 0, "abcde", 2, 0); + test("", 1, 0, "abcde", 4, 0); + test("", 1, 0, "abcde", 5, 0); + test("", 1, 0, "abcdefghij", 0, 0); + test("", 1, 0, "abcdefghij", 1, 0); + test("", 1, 0, "abcdefghij", 5, 0); + test("", 1, 0, "abcdefghij", 9, 0); + test("", 1, 0, "abcdefghij", 10, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 0, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 1, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 10, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 19, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 20, 0); + test("abcde", 0, 0, "", 0, 0); + test("abcde", 0, 0, "abcde", 0, 0); + test("abcde", 0, 0, "abcde", 1, -1); + test("abcde", 0, 0, "abcde", 2, -2); + test("abcde", 0, 0, "abcde", 4, -4); + test("abcde", 0, 0, "abcde", 5, -5); + test("abcde", 0, 0, "abcdefghij", 0, 0); + test("abcde", 0, 0, "abcdefghij", 1, -1); + test("abcde", 0, 0, "abcdefghij", 5, -5); + test("abcde", 0, 0, "abcdefghij", 9, -9); + test("abcde", 0, 0, "abcdefghij", 10, -10); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcde", 0, 1, "", 0, 1); + test("abcde", 0, 1, "abcde", 0, 1); + test("abcde", 0, 1, "abcde", 1, 0); + test("abcde", 0, 1, "abcde", 2, -1); + test("abcde", 0, 1, "abcde", 4, -3); + test("abcde", 0, 1, "abcde", 5, -4); + test("abcde", 0, 1, "abcdefghij", 0, 1); + test("abcde", 0, 1, "abcdefghij", 1, 0); + test("abcde", 0, 1, "abcdefghij", 5, -4); + test("abcde", 0, 1, "abcdefghij", 9, -8); + test("abcde", 0, 1, "abcdefghij", 10, -9); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 0); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, -9); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, -18); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 20, -19); + test("abcde", 0, 2, "", 0, 2); + test("abcde", 0, 2, "abcde", 0, 2); + test("abcde", 0, 2, "abcde", 1, 1); + test("abcde", 0, 2, "abcde", 2, 0); + test("abcde", 0, 2, "abcde", 4, -2); + test("abcde", 0, 2, "abcde", 5, -3); + test("abcde", 0, 2, "abcdefghij", 0, 2); + test("abcde", 0, 2, "abcdefghij", 1, 1); + test("abcde", 0, 2, "abcdefghij", 5, -3); + test("abcde", 0, 2, "abcdefghij", 9, -7); + test("abcde", 0, 2, "abcdefghij", 10, -8); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 2); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 1); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, -8); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, -17); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 20, -18); + test("abcde", 0, 4, "", 0, 4); + test("abcde", 0, 4, "abcde", 0, 4); + test("abcde", 0, 4, "abcde", 1, 3); + test("abcde", 0, 4, "abcde", 2, 2); } - -void test1() -{ - test("abcde", 0, 4, "abcde", 4, 0); - test("abcde", 0, 4, "abcde", 5, -1); - test("abcde", 0, 4, "abcdefghij", 0, 4); - test("abcde", 0, 4, "abcdefghij", 1, 3); - test("abcde", 0, 4, "abcdefghij", 5, -1); - test("abcde", 0, 4, "abcdefghij", 9, -5); - test("abcde", 0, 4, "abcdefghij", 10, -6); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 4); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 3); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, -6); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, -15); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 20, -16); - test("abcde", 0, 5, "", 0, 5); - test("abcde", 0, 5, "abcde", 0, 5); - test("abcde", 0, 5, "abcde", 1, 4); - test("abcde", 0, 5, "abcde", 2, 3); - test("abcde", 0, 5, "abcde", 4, 1); - test("abcde", 0, 5, "abcde", 5, 0); - test("abcde", 0, 5, "abcdefghij", 0, 5); - test("abcde", 0, 5, "abcdefghij", 1, 4); - test("abcde", 0, 5, "abcdefghij", 5, 0); - test("abcde", 0, 5, "abcdefghij", 9, -4); - test("abcde", 0, 5, "abcdefghij", 10, -5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 4); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, -5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, -14); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 20, -15); - test("abcde", 0, 6, "", 0, 5); - test("abcde", 0, 6, "abcde", 0, 5); - test("abcde", 0, 6, "abcde", 1, 4); - test("abcde", 0, 6, "abcde", 2, 3); - test("abcde", 0, 6, "abcde", 4, 1); - test("abcde", 0, 6, "abcde", 5, 0); - test("abcde", 0, 6, "abcdefghij", 0, 5); - test("abcde", 0, 6, "abcdefghij", 1, 4); - test("abcde", 0, 6, "abcdefghij", 5, 0); - test("abcde", 0, 6, "abcdefghij", 9, -4); - test("abcde", 0, 6, "abcdefghij", 10, -5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 4); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, -5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, -14); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 20, -15); - test("abcde", 1, 0, "", 0, 0); - test("abcde", 1, 0, "abcde", 0, 0); - test("abcde", 1, 0, "abcde", 1, -1); - test("abcde", 1, 0, "abcde", 2, -2); - test("abcde", 1, 0, "abcde", 4, -4); - test("abcde", 1, 0, "abcde", 5, -5); - test("abcde", 1, 0, "abcdefghij", 0, 0); - test("abcde", 1, 0, "abcdefghij", 1, -1); - test("abcde", 1, 0, "abcdefghij", 5, -5); - test("abcde", 1, 0, "abcdefghij", 9, -9); - test("abcde", 1, 0, "abcdefghij", 10, -10); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcde", 1, 1, "", 0, 1); - test("abcde", 1, 1, "abcde", 0, 1); - test("abcde", 1, 1, "abcde", 1, 1); - test("abcde", 1, 1, "abcde", 2, 1); - test("abcde", 1, 1, "abcde", 4, 1); - test("abcde", 1, 1, "abcde", 5, 1); - test("abcde", 1, 1, "abcdefghij", 0, 1); - test("abcde", 1, 1, "abcdefghij", 1, 1); - test("abcde", 1, 1, "abcdefghij", 5, 1); - test("abcde", 1, 1, "abcdefghij", 9, 1); - test("abcde", 1, 1, "abcdefghij", 10, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 20, 1); - test("abcde", 1, 2, "", 0, 2); - test("abcde", 1, 2, "abcde", 0, 2); - test("abcde", 1, 2, "abcde", 1, 1); - test("abcde", 1, 2, "abcde", 2, 1); - test("abcde", 1, 2, "abcde", 4, 1); - test("abcde", 1, 2, "abcde", 5, 1); - test("abcde", 1, 2, "abcdefghij", 0, 2); - test("abcde", 1, 2, "abcdefghij", 1, 1); - test("abcde", 1, 2, "abcdefghij", 5, 1); - test("abcde", 1, 2, "abcdefghij", 9, 1); - test("abcde", 1, 2, "abcdefghij", 10, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 2); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 20, 1); - test("abcde", 1, 3, "", 0, 3); - test("abcde", 1, 3, "abcde", 0, 3); - test("abcde", 1, 3, "abcde", 1, 1); - test("abcde", 1, 3, "abcde", 2, 1); - test("abcde", 1, 3, "abcde", 4, 1); - test("abcde", 1, 3, "abcde", 5, 1); - test("abcde", 1, 3, "abcdefghij", 0, 3); - test("abcde", 1, 3, "abcdefghij", 1, 1); +void test1() { + test("abcde", 0, 4, "abcde", 4, 0); + test("abcde", 0, 4, "abcde", 5, -1); + test("abcde", 0, 4, "abcdefghij", 0, 4); + test("abcde", 0, 4, "abcdefghij", 1, 3); + test("abcde", 0, 4, "abcdefghij", 5, -1); + test("abcde", 0, 4, "abcdefghij", 9, -5); + test("abcde", 0, 4, "abcdefghij", 10, -6); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 4); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 3); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, -6); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, -15); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 20, -16); + test("abcde", 0, 5, "", 0, 5); + test("abcde", 0, 5, "abcde", 0, 5); + test("abcde", 0, 5, "abcde", 1, 4); + test("abcde", 0, 5, "abcde", 2, 3); + test("abcde", 0, 5, "abcde", 4, 1); + test("abcde", 0, 5, "abcde", 5, 0); + test("abcde", 0, 5, "abcdefghij", 0, 5); + test("abcde", 0, 5, "abcdefghij", 1, 4); + test("abcde", 0, 5, "abcdefghij", 5, 0); + test("abcde", 0, 5, "abcdefghij", 9, -4); + test("abcde", 0, 5, "abcdefghij", 10, -5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 4); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, -5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, -14); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 20, -15); + test("abcde", 0, 6, "", 0, 5); + test("abcde", 0, 6, "abcde", 0, 5); + test("abcde", 0, 6, "abcde", 1, 4); + test("abcde", 0, 6, "abcde", 2, 3); + test("abcde", 0, 6, "abcde", 4, 1); + test("abcde", 0, 6, "abcde", 5, 0); + test("abcde", 0, 6, "abcdefghij", 0, 5); + test("abcde", 0, 6, "abcdefghij", 1, 4); + test("abcde", 0, 6, "abcdefghij", 5, 0); + test("abcde", 0, 6, "abcdefghij", 9, -4); + test("abcde", 0, 6, "abcdefghij", 10, -5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 4); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, -5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, -14); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 20, -15); + test("abcde", 1, 0, "", 0, 0); + test("abcde", 1, 0, "abcde", 0, 0); + test("abcde", 1, 0, "abcde", 1, -1); + test("abcde", 1, 0, "abcde", 2, -2); + test("abcde", 1, 0, "abcde", 4, -4); + test("abcde", 1, 0, "abcde", 5, -5); + test("abcde", 1, 0, "abcdefghij", 0, 0); + test("abcde", 1, 0, "abcdefghij", 1, -1); + test("abcde", 1, 0, "abcdefghij", 5, -5); + test("abcde", 1, 0, "abcdefghij", 9, -9); + test("abcde", 1, 0, "abcdefghij", 10, -10); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcde", 1, 1, "", 0, 1); + test("abcde", 1, 1, "abcde", 0, 1); + test("abcde", 1, 1, "abcde", 1, 1); + test("abcde", 1, 1, "abcde", 2, 1); + test("abcde", 1, 1, "abcde", 4, 1); + test("abcde", 1, 1, "abcde", 5, 1); + test("abcde", 1, 1, "abcdefghij", 0, 1); + test("abcde", 1, 1, "abcdefghij", 1, 1); + test("abcde", 1, 1, "abcdefghij", 5, 1); + test("abcde", 1, 1, "abcdefghij", 9, 1); + test("abcde", 1, 1, "abcdefghij", 10, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 20, 1); + test("abcde", 1, 2, "", 0, 2); + test("abcde", 1, 2, "abcde", 0, 2); + test("abcde", 1, 2, "abcde", 1, 1); + test("abcde", 1, 2, "abcde", 2, 1); + test("abcde", 1, 2, "abcde", 4, 1); + test("abcde", 1, 2, "abcde", 5, 1); + test("abcde", 1, 2, "abcdefghij", 0, 2); + test("abcde", 1, 2, "abcdefghij", 1, 1); + test("abcde", 1, 2, "abcdefghij", 5, 1); + test("abcde", 1, 2, "abcdefghij", 9, 1); + test("abcde", 1, 2, "abcdefghij", 10, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 2); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 20, 1); + test("abcde", 1, 3, "", 0, 3); + test("abcde", 1, 3, "abcde", 0, 3); + test("abcde", 1, 3, "abcde", 1, 1); + test("abcde", 1, 3, "abcde", 2, 1); + test("abcde", 1, 3, "abcde", 4, 1); + test("abcde", 1, 3, "abcde", 5, 1); + test("abcde", 1, 3, "abcdefghij", 0, 3); + test("abcde", 1, 3, "abcdefghij", 1, 1); } - -void test2() -{ - test("abcde", 1, 3, "abcdefghij", 5, 1); - test("abcde", 1, 3, "abcdefghij", 9, 1); - test("abcde", 1, 3, "abcdefghij", 10, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 3); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 20, 1); - test("abcde", 1, 4, "", 0, 4); - test("abcde", 1, 4, "abcde", 0, 4); - test("abcde", 1, 4, "abcde", 1, 1); - test("abcde", 1, 4, "abcde", 2, 1); - test("abcde", 1, 4, "abcde", 4, 1); - test("abcde", 1, 4, "abcde", 5, 1); - test("abcde", 1, 4, "abcdefghij", 0, 4); - test("abcde", 1, 4, "abcdefghij", 1, 1); - test("abcde", 1, 4, "abcdefghij", 5, 1); - test("abcde", 1, 4, "abcdefghij", 9, 1); - test("abcde", 1, 4, "abcdefghij", 10, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 4); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 20, 1); - test("abcde", 1, 5, "", 0, 4); - test("abcde", 1, 5, "abcde", 0, 4); - test("abcde", 1, 5, "abcde", 1, 1); - test("abcde", 1, 5, "abcde", 2, 1); - test("abcde", 1, 5, "abcde", 4, 1); - test("abcde", 1, 5, "abcde", 5, 1); - test("abcde", 1, 5, "abcdefghij", 0, 4); - test("abcde", 1, 5, "abcdefghij", 1, 1); - test("abcde", 1, 5, "abcdefghij", 5, 1); - test("abcde", 1, 5, "abcdefghij", 9, 1); - test("abcde", 1, 5, "abcdefghij", 10, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 4); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 20, 1); - test("abcde", 2, 0, "", 0, 0); - test("abcde", 2, 0, "abcde", 0, 0); - test("abcde", 2, 0, "abcde", 1, -1); - test("abcde", 2, 0, "abcde", 2, -2); - test("abcde", 2, 0, "abcde", 4, -4); - test("abcde", 2, 0, "abcde", 5, -5); - test("abcde", 2, 0, "abcdefghij", 0, 0); - test("abcde", 2, 0, "abcdefghij", 1, -1); - test("abcde", 2, 0, "abcdefghij", 5, -5); - test("abcde", 2, 0, "abcdefghij", 9, -9); - test("abcde", 2, 0, "abcdefghij", 10, -10); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcde", 2, 1, "", 0, 1); - test("abcde", 2, 1, "abcde", 0, 1); - test("abcde", 2, 1, "abcde", 1, 2); - test("abcde", 2, 1, "abcde", 2, 2); - test("abcde", 2, 1, "abcde", 4, 2); - test("abcde", 2, 1, "abcde", 5, 2); - test("abcde", 2, 1, "abcdefghij", 0, 1); - test("abcde", 2, 1, "abcdefghij", 1, 2); - test("abcde", 2, 1, "abcdefghij", 5, 2); - test("abcde", 2, 1, "abcdefghij", 9, 2); - test("abcde", 2, 1, "abcdefghij", 10, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 20, 2); - test("abcde", 2, 2, "", 0, 2); - test("abcde", 2, 2, "abcde", 0, 2); - test("abcde", 2, 2, "abcde", 1, 2); - test("abcde", 2, 2, "abcde", 2, 2); - test("abcde", 2, 2, "abcde", 4, 2); - test("abcde", 2, 2, "abcde", 5, 2); - test("abcde", 2, 2, "abcdefghij", 0, 2); - test("abcde", 2, 2, "abcdefghij", 1, 2); - test("abcde", 2, 2, "abcdefghij", 5, 2); - test("abcde", 2, 2, "abcdefghij", 9, 2); - test("abcde", 2, 2, "abcdefghij", 10, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 20, 2); - test("abcde", 2, 3, "", 0, 3); - test("abcde", 2, 3, "abcde", 0, 3); - test("abcde", 2, 3, "abcde", 1, 2); - test("abcde", 2, 3, "abcde", 2, 2); - test("abcde", 2, 3, "abcde", 4, 2); - test("abcde", 2, 3, "abcde", 5, 2); - test("abcde", 2, 3, "abcdefghij", 0, 3); - test("abcde", 2, 3, "abcdefghij", 1, 2); - test("abcde", 2, 3, "abcdefghij", 5, 2); - test("abcde", 2, 3, "abcdefghij", 9, 2); - test("abcde", 2, 3, "abcdefghij", 10, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 3); +void test2() { + test("abcde", 1, 3, "abcdefghij", 5, 1); + test("abcde", 1, 3, "abcdefghij", 9, 1); + test("abcde", 1, 3, "abcdefghij", 10, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 3); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 20, 1); + test("abcde", 1, 4, "", 0, 4); + test("abcde", 1, 4, "abcde", 0, 4); + test("abcde", 1, 4, "abcde", 1, 1); + test("abcde", 1, 4, "abcde", 2, 1); + test("abcde", 1, 4, "abcde", 4, 1); + test("abcde", 1, 4, "abcde", 5, 1); + test("abcde", 1, 4, "abcdefghij", 0, 4); + test("abcde", 1, 4, "abcdefghij", 1, 1); + test("abcde", 1, 4, "abcdefghij", 5, 1); + test("abcde", 1, 4, "abcdefghij", 9, 1); + test("abcde", 1, 4, "abcdefghij", 10, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 4); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 20, 1); + test("abcde", 1, 5, "", 0, 4); + test("abcde", 1, 5, "abcde", 0, 4); + test("abcde", 1, 5, "abcde", 1, 1); + test("abcde", 1, 5, "abcde", 2, 1); + test("abcde", 1, 5, "abcde", 4, 1); + test("abcde", 1, 5, "abcde", 5, 1); + test("abcde", 1, 5, "abcdefghij", 0, 4); + test("abcde", 1, 5, "abcdefghij", 1, 1); + test("abcde", 1, 5, "abcdefghij", 5, 1); + test("abcde", 1, 5, "abcdefghij", 9, 1); + test("abcde", 1, 5, "abcdefghij", 10, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 4); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 20, 1); + test("abcde", 2, 0, "", 0, 0); + test("abcde", 2, 0, "abcde", 0, 0); + test("abcde", 2, 0, "abcde", 1, -1); + test("abcde", 2, 0, "abcde", 2, -2); + test("abcde", 2, 0, "abcde", 4, -4); + test("abcde", 2, 0, "abcde", 5, -5); + test("abcde", 2, 0, "abcdefghij", 0, 0); + test("abcde", 2, 0, "abcdefghij", 1, -1); + test("abcde", 2, 0, "abcdefghij", 5, -5); + test("abcde", 2, 0, "abcdefghij", 9, -9); + test("abcde", 2, 0, "abcdefghij", 10, -10); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcde", 2, 1, "", 0, 1); + test("abcde", 2, 1, "abcde", 0, 1); + test("abcde", 2, 1, "abcde", 1, 2); + test("abcde", 2, 1, "abcde", 2, 2); + test("abcde", 2, 1, "abcde", 4, 2); + test("abcde", 2, 1, "abcde", 5, 2); + test("abcde", 2, 1, "abcdefghij", 0, 1); + test("abcde", 2, 1, "abcdefghij", 1, 2); + test("abcde", 2, 1, "abcdefghij", 5, 2); + test("abcde", 2, 1, "abcdefghij", 9, 2); + test("abcde", 2, 1, "abcdefghij", 10, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 20, 2); + test("abcde", 2, 2, "", 0, 2); + test("abcde", 2, 2, "abcde", 0, 2); + test("abcde", 2, 2, "abcde", 1, 2); + test("abcde", 2, 2, "abcde", 2, 2); + test("abcde", 2, 2, "abcde", 4, 2); + test("abcde", 2, 2, "abcde", 5, 2); + test("abcde", 2, 2, "abcdefghij", 0, 2); + test("abcde", 2, 2, "abcdefghij", 1, 2); + test("abcde", 2, 2, "abcdefghij", 5, 2); + test("abcde", 2, 2, "abcdefghij", 9, 2); + test("abcde", 2, 2, "abcdefghij", 10, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 20, 2); + test("abcde", 2, 3, "", 0, 3); + test("abcde", 2, 3, "abcde", 0, 3); + test("abcde", 2, 3, "abcde", 1, 2); + test("abcde", 2, 3, "abcde", 2, 2); + test("abcde", 2, 3, "abcde", 4, 2); + test("abcde", 2, 3, "abcde", 5, 2); + test("abcde", 2, 3, "abcdefghij", 0, 3); + test("abcde", 2, 3, "abcdefghij", 1, 2); + test("abcde", 2, 3, "abcdefghij", 5, 2); + test("abcde", 2, 3, "abcdefghij", 9, 2); + test("abcde", 2, 3, "abcdefghij", 10, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 3); } - -void test3() -{ - test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 20, 2); - test("abcde", 2, 4, "", 0, 3); - test("abcde", 2, 4, "abcde", 0, 3); - test("abcde", 2, 4, "abcde", 1, 2); - test("abcde", 2, 4, "abcde", 2, 2); - test("abcde", 2, 4, "abcde", 4, 2); - test("abcde", 2, 4, "abcde", 5, 2); - test("abcde", 2, 4, "abcdefghij", 0, 3); - test("abcde", 2, 4, "abcdefghij", 1, 2); - test("abcde", 2, 4, "abcdefghij", 5, 2); - test("abcde", 2, 4, "abcdefghij", 9, 2); - test("abcde", 2, 4, "abcdefghij", 10, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 3); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 20, 2); - test("abcde", 4, 0, "", 0, 0); - test("abcde", 4, 0, "abcde", 0, 0); - test("abcde", 4, 0, "abcde", 1, -1); - test("abcde", 4, 0, "abcde", 2, -2); - test("abcde", 4, 0, "abcde", 4, -4); - test("abcde", 4, 0, "abcde", 5, -5); - test("abcde", 4, 0, "abcdefghij", 0, 0); - test("abcde", 4, 0, "abcdefghij", 1, -1); - test("abcde", 4, 0, "abcdefghij", 5, -5); - test("abcde", 4, 0, "abcdefghij", 9, -9); - test("abcde", 4, 0, "abcdefghij", 10, -10); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcde", 4, 1, "", 0, 1); - test("abcde", 4, 1, "abcde", 0, 1); - test("abcde", 4, 1, "abcde", 1, 4); - test("abcde", 4, 1, "abcde", 2, 4); - test("abcde", 4, 1, "abcde", 4, 4); - test("abcde", 4, 1, "abcde", 5, 4); - test("abcde", 4, 1, "abcdefghij", 0, 1); - test("abcde", 4, 1, "abcdefghij", 1, 4); - test("abcde", 4, 1, "abcdefghij", 5, 4); - test("abcde", 4, 1, "abcdefghij", 9, 4); - test("abcde", 4, 1, "abcdefghij", 10, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 20, 4); - test("abcde", 4, 2, "", 0, 1); - test("abcde", 4, 2, "abcde", 0, 1); - test("abcde", 4, 2, "abcde", 1, 4); - test("abcde", 4, 2, "abcde", 2, 4); - test("abcde", 4, 2, "abcde", 4, 4); - test("abcde", 4, 2, "abcde", 5, 4); - test("abcde", 4, 2, "abcdefghij", 0, 1); - test("abcde", 4, 2, "abcdefghij", 1, 4); - test("abcde", 4, 2, "abcdefghij", 5, 4); - test("abcde", 4, 2, "abcdefghij", 9, 4); - test("abcde", 4, 2, "abcdefghij", 10, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 1); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 20, 4); - test("abcde", 5, 0, "", 0, 0); - test("abcde", 5, 0, "abcde", 0, 0); - test("abcde", 5, 0, "abcde", 1, -1); - test("abcde", 5, 0, "abcde", 2, -2); - test("abcde", 5, 0, "abcde", 4, -4); - test("abcde", 5, 0, "abcde", 5, -5); - test("abcde", 5, 0, "abcdefghij", 0, 0); - test("abcde", 5, 0, "abcdefghij", 1, -1); - test("abcde", 5, 0, "abcdefghij", 5, -5); - test("abcde", 5, 0, "abcdefghij", 9, -9); - test("abcde", 5, 0, "abcdefghij", 10, -10); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcde", 5, 1, "", 0, 0); - test("abcde", 5, 1, "abcde", 0, 0); - test("abcde", 5, 1, "abcde", 1, -1); - test("abcde", 5, 1, "abcde", 2, -2); - test("abcde", 5, 1, "abcde", 4, -4); - test("abcde", 5, 1, "abcde", 5, -5); - test("abcde", 5, 1, "abcdefghij", 0, 0); - test("abcde", 5, 1, "abcdefghij", 1, -1); - test("abcde", 5, 1, "abcdefghij", 5, -5); - test("abcde", 5, 1, "abcdefghij", 9, -9); - test("abcde", 5, 1, "abcdefghij", 10, -10); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 0); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, -1); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, -10); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, -19); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 20, -20); +void test3() { + test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 20, 2); + test("abcde", 2, 4, "", 0, 3); + test("abcde", 2, 4, "abcde", 0, 3); + test("abcde", 2, 4, "abcde", 1, 2); + test("abcde", 2, 4, "abcde", 2, 2); + test("abcde", 2, 4, "abcde", 4, 2); + test("abcde", 2, 4, "abcde", 5, 2); + test("abcde", 2, 4, "abcdefghij", 0, 3); + test("abcde", 2, 4, "abcdefghij", 1, 2); + test("abcde", 2, 4, "abcdefghij", 5, 2); + test("abcde", 2, 4, "abcdefghij", 9, 2); + test("abcde", 2, 4, "abcdefghij", 10, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 3); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 20, 2); + test("abcde", 4, 0, "", 0, 0); + test("abcde", 4, 0, "abcde", 0, 0); + test("abcde", 4, 0, "abcde", 1, -1); + test("abcde", 4, 0, "abcde", 2, -2); + test("abcde", 4, 0, "abcde", 4, -4); + test("abcde", 4, 0, "abcde", 5, -5); + test("abcde", 4, 0, "abcdefghij", 0, 0); + test("abcde", 4, 0, "abcdefghij", 1, -1); + test("abcde", 4, 0, "abcdefghij", 5, -5); + test("abcde", 4, 0, "abcdefghij", 9, -9); + test("abcde", 4, 0, "abcdefghij", 10, -10); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcde", 4, 1, "", 0, 1); + test("abcde", 4, 1, "abcde", 0, 1); + test("abcde", 4, 1, "abcde", 1, 4); + test("abcde", 4, 1, "abcde", 2, 4); + test("abcde", 4, 1, "abcde", 4, 4); + test("abcde", 4, 1, "abcde", 5, 4); + test("abcde", 4, 1, "abcdefghij", 0, 1); + test("abcde", 4, 1, "abcdefghij", 1, 4); + test("abcde", 4, 1, "abcdefghij", 5, 4); + test("abcde", 4, 1, "abcdefghij", 9, 4); + test("abcde", 4, 1, "abcdefghij", 10, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 20, 4); + test("abcde", 4, 2, "", 0, 1); + test("abcde", 4, 2, "abcde", 0, 1); + test("abcde", 4, 2, "abcde", 1, 4); + test("abcde", 4, 2, "abcde", 2, 4); + test("abcde", 4, 2, "abcde", 4, 4); + test("abcde", 4, 2, "abcde", 5, 4); + test("abcde", 4, 2, "abcdefghij", 0, 1); + test("abcde", 4, 2, "abcdefghij", 1, 4); + test("abcde", 4, 2, "abcdefghij", 5, 4); + test("abcde", 4, 2, "abcdefghij", 9, 4); + test("abcde", 4, 2, "abcdefghij", 10, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 1); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 20, 4); + test("abcde", 5, 0, "", 0, 0); + test("abcde", 5, 0, "abcde", 0, 0); + test("abcde", 5, 0, "abcde", 1, -1); + test("abcde", 5, 0, "abcde", 2, -2); + test("abcde", 5, 0, "abcde", 4, -4); + test("abcde", 5, 0, "abcde", 5, -5); + test("abcde", 5, 0, "abcdefghij", 0, 0); + test("abcde", 5, 0, "abcdefghij", 1, -1); + test("abcde", 5, 0, "abcdefghij", 5, -5); + test("abcde", 5, 0, "abcdefghij", 9, -9); + test("abcde", 5, 0, "abcdefghij", 10, -10); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcde", 5, 1, "", 0, 0); + test("abcde", 5, 1, "abcde", 0, 0); + test("abcde", 5, 1, "abcde", 1, -1); + test("abcde", 5, 1, "abcde", 2, -2); + test("abcde", 5, 1, "abcde", 4, -4); + test("abcde", 5, 1, "abcde", 5, -5); + test("abcde", 5, 1, "abcdefghij", 0, 0); + test("abcde", 5, 1, "abcdefghij", 1, -1); + test("abcde", 5, 1, "abcdefghij", 5, -5); + test("abcde", 5, 1, "abcdefghij", 9, -9); + test("abcde", 5, 1, "abcdefghij", 10, -10); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 0); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, -1); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, -10); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, -19); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 20, -20); } - -void test4() -{ - test("abcde", 6, 0, "", 0, 0); - test("abcde", 6, 0, "abcde", 0, 0); - test("abcde", 6, 0, "abcde", 1, 0); - test("abcde", 6, 0, "abcde", 2, 0); - test("abcde", 6, 0, "abcde", 4, 0); - test("abcde", 6, 0, "abcde", 5, 0); - test("abcde", 6, 0, "abcdefghij", 0, 0); - test("abcde", 6, 0, "abcdefghij", 1, 0); - test("abcde", 6, 0, "abcdefghij", 5, 0); - test("abcde", 6, 0, "abcdefghij", 9, 0); - test("abcde", 6, 0, "abcdefghij", 10, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 20, 0); - test("abcdefghij", 0, 0, "", 0, 0); - test("abcdefghij", 0, 0, "abcde", 0, 0); - test("abcdefghij", 0, 0, "abcde", 1, -1); - test("abcdefghij", 0, 0, "abcde", 2, -2); - test("abcdefghij", 0, 0, "abcde", 4, -4); - test("abcdefghij", 0, 0, "abcde", 5, -5); - test("abcdefghij", 0, 0, "abcdefghij", 0, 0); - test("abcdefghij", 0, 0, "abcdefghij", 1, -1); - test("abcdefghij", 0, 0, "abcdefghij", 5, -5); - test("abcdefghij", 0, 0, "abcdefghij", 9, -9); - test("abcdefghij", 0, 0, "abcdefghij", 10, -10); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghij", 0, 1, "", 0, 1); - test("abcdefghij", 0, 1, "abcde", 0, 1); - test("abcdefghij", 0, 1, "abcde", 1, 0); - test("abcdefghij", 0, 1, "abcde", 2, -1); - test("abcdefghij", 0, 1, "abcde", 4, -3); - test("abcdefghij", 0, 1, "abcde", 5, -4); - test("abcdefghij", 0, 1, "abcdefghij", 0, 1); - test("abcdefghij", 0, 1, "abcdefghij", 1, 0); - test("abcdefghij", 0, 1, "abcdefghij", 5, -4); - test("abcdefghij", 0, 1, "abcdefghij", 9, -8); - test("abcdefghij", 0, 1, "abcdefghij", 10, -9); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 0); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, -9); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, -18); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 20, -19); - test("abcdefghij", 0, 5, "", 0, 5); - test("abcdefghij", 0, 5, "abcde", 0, 5); - test("abcdefghij", 0, 5, "abcde", 1, 4); - test("abcdefghij", 0, 5, "abcde", 2, 3); - test("abcdefghij", 0, 5, "abcde", 4, 1); - test("abcdefghij", 0, 5, "abcde", 5, 0); - test("abcdefghij", 0, 5, "abcdefghij", 0, 5); - test("abcdefghij", 0, 5, "abcdefghij", 1, 4); - test("abcdefghij", 0, 5, "abcdefghij", 5, 0); - test("abcdefghij", 0, 5, "abcdefghij", 9, -4); - test("abcdefghij", 0, 5, "abcdefghij", 10, -5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 4); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, -5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, -14); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 20, -15); - test("abcdefghij", 0, 9, "", 0, 9); - test("abcdefghij", 0, 9, "abcde", 0, 9); - test("abcdefghij", 0, 9, "abcde", 1, 8); - test("abcdefghij", 0, 9, "abcde", 2, 7); - test("abcdefghij", 0, 9, "abcde", 4, 5); - test("abcdefghij", 0, 9, "abcde", 5, 4); - test("abcdefghij", 0, 9, "abcdefghij", 0, 9); - test("abcdefghij", 0, 9, "abcdefghij", 1, 8); - test("abcdefghij", 0, 9, "abcdefghij", 5, 4); - test("abcdefghij", 0, 9, "abcdefghij", 9, 0); - test("abcdefghij", 0, 9, "abcdefghij", 10, -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 9); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 8); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, -10); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 20, -11); - test("abcdefghij", 0, 10, "", 0, 10); - test("abcdefghij", 0, 10, "abcde", 0, 10); - test("abcdefghij", 0, 10, "abcde", 1, 9); - test("abcdefghij", 0, 10, "abcde", 2, 8); - test("abcdefghij", 0, 10, "abcde", 4, 6); - test("abcdefghij", 0, 10, "abcde", 5, 5); - test("abcdefghij", 0, 10, "abcdefghij", 0, 10); - test("abcdefghij", 0, 10, "abcdefghij", 1, 9); - test("abcdefghij", 0, 10, "abcdefghij", 5, 5); - test("abcdefghij", 0, 10, "abcdefghij", 9, 1); - test("abcdefghij", 0, 10, "abcdefghij", 10, 0); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 9); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 0); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, -9); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 20, -10); - test("abcdefghij", 0, 11, "", 0, 10); - test("abcdefghij", 0, 11, "abcde", 0, 10); - test("abcdefghij", 0, 11, "abcde", 1, 9); - test("abcdefghij", 0, 11, "abcde", 2, 8); +void test4() { + test("abcde", 6, 0, "", 0, 0); + test("abcde", 6, 0, "abcde", 0, 0); + test("abcde", 6, 0, "abcde", 1, 0); + test("abcde", 6, 0, "abcde", 2, 0); + test("abcde", 6, 0, "abcde", 4, 0); + test("abcde", 6, 0, "abcde", 5, 0); + test("abcde", 6, 0, "abcdefghij", 0, 0); + test("abcde", 6, 0, "abcdefghij", 1, 0); + test("abcde", 6, 0, "abcdefghij", 5, 0); + test("abcde", 6, 0, "abcdefghij", 9, 0); + test("abcde", 6, 0, "abcdefghij", 10, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 20, 0); + test("abcdefghij", 0, 0, "", 0, 0); + test("abcdefghij", 0, 0, "abcde", 0, 0); + test("abcdefghij", 0, 0, "abcde", 1, -1); + test("abcdefghij", 0, 0, "abcde", 2, -2); + test("abcdefghij", 0, 0, "abcde", 4, -4); + test("abcdefghij", 0, 0, "abcde", 5, -5); + test("abcdefghij", 0, 0, "abcdefghij", 0, 0); + test("abcdefghij", 0, 0, "abcdefghij", 1, -1); + test("abcdefghij", 0, 0, "abcdefghij", 5, -5); + test("abcdefghij", 0, 0, "abcdefghij", 9, -9); + test("abcdefghij", 0, 0, "abcdefghij", 10, -10); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghij", 0, 1, "", 0, 1); + test("abcdefghij", 0, 1, "abcde", 0, 1); + test("abcdefghij", 0, 1, "abcde", 1, 0); + test("abcdefghij", 0, 1, "abcde", 2, -1); + test("abcdefghij", 0, 1, "abcde", 4, -3); + test("abcdefghij", 0, 1, "abcde", 5, -4); + test("abcdefghij", 0, 1, "abcdefghij", 0, 1); + test("abcdefghij", 0, 1, "abcdefghij", 1, 0); + test("abcdefghij", 0, 1, "abcdefghij", 5, -4); + test("abcdefghij", 0, 1, "abcdefghij", 9, -8); + test("abcdefghij", 0, 1, "abcdefghij", 10, -9); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 0); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, -9); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, -18); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 20, -19); + test("abcdefghij", 0, 5, "", 0, 5); + test("abcdefghij", 0, 5, "abcde", 0, 5); + test("abcdefghij", 0, 5, "abcde", 1, 4); + test("abcdefghij", 0, 5, "abcde", 2, 3); + test("abcdefghij", 0, 5, "abcde", 4, 1); + test("abcdefghij", 0, 5, "abcde", 5, 0); + test("abcdefghij", 0, 5, "abcdefghij", 0, 5); + test("abcdefghij", 0, 5, "abcdefghij", 1, 4); + test("abcdefghij", 0, 5, "abcdefghij", 5, 0); + test("abcdefghij", 0, 5, "abcdefghij", 9, -4); + test("abcdefghij", 0, 5, "abcdefghij", 10, -5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 4); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, -5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, -14); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 20, -15); + test("abcdefghij", 0, 9, "", 0, 9); + test("abcdefghij", 0, 9, "abcde", 0, 9); + test("abcdefghij", 0, 9, "abcde", 1, 8); + test("abcdefghij", 0, 9, "abcde", 2, 7); + test("abcdefghij", 0, 9, "abcde", 4, 5); + test("abcdefghij", 0, 9, "abcde", 5, 4); + test("abcdefghij", 0, 9, "abcdefghij", 0, 9); + test("abcdefghij", 0, 9, "abcdefghij", 1, 8); + test("abcdefghij", 0, 9, "abcdefghij", 5, 4); + test("abcdefghij", 0, 9, "abcdefghij", 9, 0); + test("abcdefghij", 0, 9, "abcdefghij", 10, -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 9); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 8); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, -10); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 20, -11); + test("abcdefghij", 0, 10, "", 0, 10); + test("abcdefghij", 0, 10, "abcde", 0, 10); + test("abcdefghij", 0, 10, "abcde", 1, 9); + test("abcdefghij", 0, 10, "abcde", 2, 8); + test("abcdefghij", 0, 10, "abcde", 4, 6); + test("abcdefghij", 0, 10, "abcde", 5, 5); + test("abcdefghij", 0, 10, "abcdefghij", 0, 10); + test("abcdefghij", 0, 10, "abcdefghij", 1, 9); + test("abcdefghij", 0, 10, "abcdefghij", 5, 5); + test("abcdefghij", 0, 10, "abcdefghij", 9, 1); + test("abcdefghij", 0, 10, "abcdefghij", 10, 0); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 9); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 0); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, -9); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 20, -10); + test("abcdefghij", 0, 11, "", 0, 10); + test("abcdefghij", 0, 11, "abcde", 0, 10); + test("abcdefghij", 0, 11, "abcde", 1, 9); + test("abcdefghij", 0, 11, "abcde", 2, 8); } - -void test5() -{ - test("abcdefghij", 0, 11, "abcde", 4, 6); - test("abcdefghij", 0, 11, "abcde", 5, 5); - test("abcdefghij", 0, 11, "abcdefghij", 0, 10); - test("abcdefghij", 0, 11, "abcdefghij", 1, 9); - test("abcdefghij", 0, 11, "abcdefghij", 5, 5); - test("abcdefghij", 0, 11, "abcdefghij", 9, 1); - test("abcdefghij", 0, 11, "abcdefghij", 10, 0); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 9); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 0); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, -9); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 20, -10); - test("abcdefghij", 1, 0, "", 0, 0); - test("abcdefghij", 1, 0, "abcde", 0, 0); - test("abcdefghij", 1, 0, "abcde", 1, -1); - test("abcdefghij", 1, 0, "abcde", 2, -2); - test("abcdefghij", 1, 0, "abcde", 4, -4); - test("abcdefghij", 1, 0, "abcde", 5, -5); - test("abcdefghij", 1, 0, "abcdefghij", 0, 0); - test("abcdefghij", 1, 0, "abcdefghij", 1, -1); - test("abcdefghij", 1, 0, "abcdefghij", 5, -5); - test("abcdefghij", 1, 0, "abcdefghij", 9, -9); - test("abcdefghij", 1, 0, "abcdefghij", 10, -10); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghij", 1, 1, "", 0, 1); - test("abcdefghij", 1, 1, "abcde", 0, 1); - test("abcdefghij", 1, 1, "abcde", 1, 1); - test("abcdefghij", 1, 1, "abcde", 2, 1); - test("abcdefghij", 1, 1, "abcde", 4, 1); - test("abcdefghij", 1, 1, "abcde", 5, 1); - test("abcdefghij", 1, 1, "abcdefghij", 0, 1); - test("abcdefghij", 1, 1, "abcdefghij", 1, 1); - test("abcdefghij", 1, 1, "abcdefghij", 5, 1); - test("abcdefghij", 1, 1, "abcdefghij", 9, 1); - test("abcdefghij", 1, 1, "abcdefghij", 10, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghij", 1, 4, "", 0, 4); - test("abcdefghij", 1, 4, "abcde", 0, 4); - test("abcdefghij", 1, 4, "abcde", 1, 1); - test("abcdefghij", 1, 4, "abcde", 2, 1); - test("abcdefghij", 1, 4, "abcde", 4, 1); - test("abcdefghij", 1, 4, "abcde", 5, 1); - test("abcdefghij", 1, 4, "abcdefghij", 0, 4); - test("abcdefghij", 1, 4, "abcdefghij", 1, 1); - test("abcdefghij", 1, 4, "abcdefghij", 5, 1); - test("abcdefghij", 1, 4, "abcdefghij", 9, 1); - test("abcdefghij", 1, 4, "abcdefghij", 10, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 4); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghij", 1, 8, "", 0, 8); - test("abcdefghij", 1, 8, "abcde", 0, 8); - test("abcdefghij", 1, 8, "abcde", 1, 1); - test("abcdefghij", 1, 8, "abcde", 2, 1); - test("abcdefghij", 1, 8, "abcde", 4, 1); - test("abcdefghij", 1, 8, "abcde", 5, 1); - test("abcdefghij", 1, 8, "abcdefghij", 0, 8); - test("abcdefghij", 1, 8, "abcdefghij", 1, 1); - test("abcdefghij", 1, 8, "abcdefghij", 5, 1); - test("abcdefghij", 1, 8, "abcdefghij", 9, 1); - test("abcdefghij", 1, 8, "abcdefghij", 10, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 8); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghij", 1, 9, "", 0, 9); - test("abcdefghij", 1, 9, "abcde", 0, 9); - test("abcdefghij", 1, 9, "abcde", 1, 1); - test("abcdefghij", 1, 9, "abcde", 2, 1); - test("abcdefghij", 1, 9, "abcde", 4, 1); - test("abcdefghij", 1, 9, "abcde", 5, 1); - test("abcdefghij", 1, 9, "abcdefghij", 0, 9); - test("abcdefghij", 1, 9, "abcdefghij", 1, 1); - test("abcdefghij", 1, 9, "abcdefghij", 5, 1); - test("abcdefghij", 1, 9, "abcdefghij", 9, 1); - test("abcdefghij", 1, 9, "abcdefghij", 10, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghij", 1, 10, "", 0, 9); - test("abcdefghij", 1, 10, "abcde", 0, 9); - test("abcdefghij", 1, 10, "abcde", 1, 1); - test("abcdefghij", 1, 10, "abcde", 2, 1); - test("abcdefghij", 1, 10, "abcde", 4, 1); - test("abcdefghij", 1, 10, "abcde", 5, 1); - test("abcdefghij", 1, 10, "abcdefghij", 0, 9); - test("abcdefghij", 1, 10, "abcdefghij", 1, 1); +void test5() { + test("abcdefghij", 0, 11, "abcde", 4, 6); + test("abcdefghij", 0, 11, "abcde", 5, 5); + test("abcdefghij", 0, 11, "abcdefghij", 0, 10); + test("abcdefghij", 0, 11, "abcdefghij", 1, 9); + test("abcdefghij", 0, 11, "abcdefghij", 5, 5); + test("abcdefghij", 0, 11, "abcdefghij", 9, 1); + test("abcdefghij", 0, 11, "abcdefghij", 10, 0); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 9); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 0); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, -9); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 20, -10); + test("abcdefghij", 1, 0, "", 0, 0); + test("abcdefghij", 1, 0, "abcde", 0, 0); + test("abcdefghij", 1, 0, "abcde", 1, -1); + test("abcdefghij", 1, 0, "abcde", 2, -2); + test("abcdefghij", 1, 0, "abcde", 4, -4); + test("abcdefghij", 1, 0, "abcde", 5, -5); + test("abcdefghij", 1, 0, "abcdefghij", 0, 0); + test("abcdefghij", 1, 0, "abcdefghij", 1, -1); + test("abcdefghij", 1, 0, "abcdefghij", 5, -5); + test("abcdefghij", 1, 0, "abcdefghij", 9, -9); + test("abcdefghij", 1, 0, "abcdefghij", 10, -10); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghij", 1, 1, "", 0, 1); + test("abcdefghij", 1, 1, "abcde", 0, 1); + test("abcdefghij", 1, 1, "abcde", 1, 1); + test("abcdefghij", 1, 1, "abcde", 2, 1); + test("abcdefghij", 1, 1, "abcde", 4, 1); + test("abcdefghij", 1, 1, "abcde", 5, 1); + test("abcdefghij", 1, 1, "abcdefghij", 0, 1); + test("abcdefghij", 1, 1, "abcdefghij", 1, 1); + test("abcdefghij", 1, 1, "abcdefghij", 5, 1); + test("abcdefghij", 1, 1, "abcdefghij", 9, 1); + test("abcdefghij", 1, 1, "abcdefghij", 10, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghij", 1, 4, "", 0, 4); + test("abcdefghij", 1, 4, "abcde", 0, 4); + test("abcdefghij", 1, 4, "abcde", 1, 1); + test("abcdefghij", 1, 4, "abcde", 2, 1); + test("abcdefghij", 1, 4, "abcde", 4, 1); + test("abcdefghij", 1, 4, "abcde", 5, 1); + test("abcdefghij", 1, 4, "abcdefghij", 0, 4); + test("abcdefghij", 1, 4, "abcdefghij", 1, 1); + test("abcdefghij", 1, 4, "abcdefghij", 5, 1); + test("abcdefghij", 1, 4, "abcdefghij", 9, 1); + test("abcdefghij", 1, 4, "abcdefghij", 10, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 4); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghij", 1, 8, "", 0, 8); + test("abcdefghij", 1, 8, "abcde", 0, 8); + test("abcdefghij", 1, 8, "abcde", 1, 1); + test("abcdefghij", 1, 8, "abcde", 2, 1); + test("abcdefghij", 1, 8, "abcde", 4, 1); + test("abcdefghij", 1, 8, "abcde", 5, 1); + test("abcdefghij", 1, 8, "abcdefghij", 0, 8); + test("abcdefghij", 1, 8, "abcdefghij", 1, 1); + test("abcdefghij", 1, 8, "abcdefghij", 5, 1); + test("abcdefghij", 1, 8, "abcdefghij", 9, 1); + test("abcdefghij", 1, 8, "abcdefghij", 10, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 8); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghij", 1, 9, "", 0, 9); + test("abcdefghij", 1, 9, "abcde", 0, 9); + test("abcdefghij", 1, 9, "abcde", 1, 1); + test("abcdefghij", 1, 9, "abcde", 2, 1); + test("abcdefghij", 1, 9, "abcde", 4, 1); + test("abcdefghij", 1, 9, "abcde", 5, 1); + test("abcdefghij", 1, 9, "abcdefghij", 0, 9); + test("abcdefghij", 1, 9, "abcdefghij", 1, 1); + test("abcdefghij", 1, 9, "abcdefghij", 5, 1); + test("abcdefghij", 1, 9, "abcdefghij", 9, 1); + test("abcdefghij", 1, 9, "abcdefghij", 10, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghij", 1, 10, "", 0, 9); + test("abcdefghij", 1, 10, "abcde", 0, 9); + test("abcdefghij", 1, 10, "abcde", 1, 1); + test("abcdefghij", 1, 10, "abcde", 2, 1); + test("abcdefghij", 1, 10, "abcde", 4, 1); + test("abcdefghij", 1, 10, "abcde", 5, 1); + test("abcdefghij", 1, 10, "abcdefghij", 0, 9); + test("abcdefghij", 1, 10, "abcdefghij", 1, 1); } - -void test6() -{ - test("abcdefghij", 1, 10, "abcdefghij", 5, 1); - test("abcdefghij", 1, 10, "abcdefghij", 9, 1); - test("abcdefghij", 1, 10, "abcdefghij", 10, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghij", 5, 0, "", 0, 0); - test("abcdefghij", 5, 0, "abcde", 0, 0); - test("abcdefghij", 5, 0, "abcde", 1, -1); - test("abcdefghij", 5, 0, "abcde", 2, -2); - test("abcdefghij", 5, 0, "abcde", 4, -4); - test("abcdefghij", 5, 0, "abcde", 5, -5); - test("abcdefghij", 5, 0, "abcdefghij", 0, 0); - test("abcdefghij", 5, 0, "abcdefghij", 1, -1); - test("abcdefghij", 5, 0, "abcdefghij", 5, -5); - test("abcdefghij", 5, 0, "abcdefghij", 9, -9); - test("abcdefghij", 5, 0, "abcdefghij", 10, -10); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghij", 5, 1, "", 0, 1); - test("abcdefghij", 5, 1, "abcde", 0, 1); - test("abcdefghij", 5, 1, "abcde", 1, 5); - test("abcdefghij", 5, 1, "abcde", 2, 5); - test("abcdefghij", 5, 1, "abcde", 4, 5); - test("abcdefghij", 5, 1, "abcde", 5, 5); - test("abcdefghij", 5, 1, "abcdefghij", 0, 1); - test("abcdefghij", 5, 1, "abcdefghij", 1, 5); - test("abcdefghij", 5, 1, "abcdefghij", 5, 5); - test("abcdefghij", 5, 1, "abcdefghij", 9, 5); - test("abcdefghij", 5, 1, "abcdefghij", 10, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 20, 5); - test("abcdefghij", 5, 2, "", 0, 2); - test("abcdefghij", 5, 2, "abcde", 0, 2); - test("abcdefghij", 5, 2, "abcde", 1, 5); - test("abcdefghij", 5, 2, "abcde", 2, 5); - test("abcdefghij", 5, 2, "abcde", 4, 5); - test("abcdefghij", 5, 2, "abcde", 5, 5); - test("abcdefghij", 5, 2, "abcdefghij", 0, 2); - test("abcdefghij", 5, 2, "abcdefghij", 1, 5); - test("abcdefghij", 5, 2, "abcdefghij", 5, 5); - test("abcdefghij", 5, 2, "abcdefghij", 9, 5); - test("abcdefghij", 5, 2, "abcdefghij", 10, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 2); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 20, 5); - test("abcdefghij", 5, 4, "", 0, 4); - test("abcdefghij", 5, 4, "abcde", 0, 4); - test("abcdefghij", 5, 4, "abcde", 1, 5); - test("abcdefghij", 5, 4, "abcde", 2, 5); - test("abcdefghij", 5, 4, "abcde", 4, 5); - test("abcdefghij", 5, 4, "abcde", 5, 5); - test("abcdefghij", 5, 4, "abcdefghij", 0, 4); - test("abcdefghij", 5, 4, "abcdefghij", 1, 5); - test("abcdefghij", 5, 4, "abcdefghij", 5, 5); - test("abcdefghij", 5, 4, "abcdefghij", 9, 5); - test("abcdefghij", 5, 4, "abcdefghij", 10, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 20, 5); - test("abcdefghij", 5, 5, "", 0, 5); - test("abcdefghij", 5, 5, "abcde", 0, 5); - test("abcdefghij", 5, 5, "abcde", 1, 5); - test("abcdefghij", 5, 5, "abcde", 2, 5); - test("abcdefghij", 5, 5, "abcde", 4, 5); - test("abcdefghij", 5, 5, "abcde", 5, 5); - test("abcdefghij", 5, 5, "abcdefghij", 0, 5); - test("abcdefghij", 5, 5, "abcdefghij", 1, 5); - test("abcdefghij", 5, 5, "abcdefghij", 5, 5); - test("abcdefghij", 5, 5, "abcdefghij", 9, 5); - test("abcdefghij", 5, 5, "abcdefghij", 10, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 20, 5); - test("abcdefghij", 5, 6, "", 0, 5); - test("abcdefghij", 5, 6, "abcde", 0, 5); - test("abcdefghij", 5, 6, "abcde", 1, 5); - test("abcdefghij", 5, 6, "abcde", 2, 5); - test("abcdefghij", 5, 6, "abcde", 4, 5); - test("abcdefghij", 5, 6, "abcde", 5, 5); - test("abcdefghij", 5, 6, "abcdefghij", 0, 5); - test("abcdefghij", 5, 6, "abcdefghij", 1, 5); - test("abcdefghij", 5, 6, "abcdefghij", 5, 5); - test("abcdefghij", 5, 6, "abcdefghij", 9, 5); - test("abcdefghij", 5, 6, "abcdefghij", 10, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 5); +void test6() { + test("abcdefghij", 1, 10, "abcdefghij", 5, 1); + test("abcdefghij", 1, 10, "abcdefghij", 9, 1); + test("abcdefghij", 1, 10, "abcdefghij", 10, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghij", 5, 0, "", 0, 0); + test("abcdefghij", 5, 0, "abcde", 0, 0); + test("abcdefghij", 5, 0, "abcde", 1, -1); + test("abcdefghij", 5, 0, "abcde", 2, -2); + test("abcdefghij", 5, 0, "abcde", 4, -4); + test("abcdefghij", 5, 0, "abcde", 5, -5); + test("abcdefghij", 5, 0, "abcdefghij", 0, 0); + test("abcdefghij", 5, 0, "abcdefghij", 1, -1); + test("abcdefghij", 5, 0, "abcdefghij", 5, -5); + test("abcdefghij", 5, 0, "abcdefghij", 9, -9); + test("abcdefghij", 5, 0, "abcdefghij", 10, -10); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghij", 5, 1, "", 0, 1); + test("abcdefghij", 5, 1, "abcde", 0, 1); + test("abcdefghij", 5, 1, "abcde", 1, 5); + test("abcdefghij", 5, 1, "abcde", 2, 5); + test("abcdefghij", 5, 1, "abcde", 4, 5); + test("abcdefghij", 5, 1, "abcde", 5, 5); + test("abcdefghij", 5, 1, "abcdefghij", 0, 1); + test("abcdefghij", 5, 1, "abcdefghij", 1, 5); + test("abcdefghij", 5, 1, "abcdefghij", 5, 5); + test("abcdefghij", 5, 1, "abcdefghij", 9, 5); + test("abcdefghij", 5, 1, "abcdefghij", 10, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 20, 5); + test("abcdefghij", 5, 2, "", 0, 2); + test("abcdefghij", 5, 2, "abcde", 0, 2); + test("abcdefghij", 5, 2, "abcde", 1, 5); + test("abcdefghij", 5, 2, "abcde", 2, 5); + test("abcdefghij", 5, 2, "abcde", 4, 5); + test("abcdefghij", 5, 2, "abcde", 5, 5); + test("abcdefghij", 5, 2, "abcdefghij", 0, 2); + test("abcdefghij", 5, 2, "abcdefghij", 1, 5); + test("abcdefghij", 5, 2, "abcdefghij", 5, 5); + test("abcdefghij", 5, 2, "abcdefghij", 9, 5); + test("abcdefghij", 5, 2, "abcdefghij", 10, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 2); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 20, 5); + test("abcdefghij", 5, 4, "", 0, 4); + test("abcdefghij", 5, 4, "abcde", 0, 4); + test("abcdefghij", 5, 4, "abcde", 1, 5); + test("abcdefghij", 5, 4, "abcde", 2, 5); + test("abcdefghij", 5, 4, "abcde", 4, 5); + test("abcdefghij", 5, 4, "abcde", 5, 5); + test("abcdefghij", 5, 4, "abcdefghij", 0, 4); + test("abcdefghij", 5, 4, "abcdefghij", 1, 5); + test("abcdefghij", 5, 4, "abcdefghij", 5, 5); + test("abcdefghij", 5, 4, "abcdefghij", 9, 5); + test("abcdefghij", 5, 4, "abcdefghij", 10, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 20, 5); + test("abcdefghij", 5, 5, "", 0, 5); + test("abcdefghij", 5, 5, "abcde", 0, 5); + test("abcdefghij", 5, 5, "abcde", 1, 5); + test("abcdefghij", 5, 5, "abcde", 2, 5); + test("abcdefghij", 5, 5, "abcde", 4, 5); + test("abcdefghij", 5, 5, "abcde", 5, 5); + test("abcdefghij", 5, 5, "abcdefghij", 0, 5); + test("abcdefghij", 5, 5, "abcdefghij", 1, 5); + test("abcdefghij", 5, 5, "abcdefghij", 5, 5); + test("abcdefghij", 5, 5, "abcdefghij", 9, 5); + test("abcdefghij", 5, 5, "abcdefghij", 10, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 20, 5); + test("abcdefghij", 5, 6, "", 0, 5); + test("abcdefghij", 5, 6, "abcde", 0, 5); + test("abcdefghij", 5, 6, "abcde", 1, 5); + test("abcdefghij", 5, 6, "abcde", 2, 5); + test("abcdefghij", 5, 6, "abcde", 4, 5); + test("abcdefghij", 5, 6, "abcde", 5, 5); + test("abcdefghij", 5, 6, "abcdefghij", 0, 5); + test("abcdefghij", 5, 6, "abcdefghij", 1, 5); + test("abcdefghij", 5, 6, "abcdefghij", 5, 5); + test("abcdefghij", 5, 6, "abcdefghij", 9, 5); + test("abcdefghij", 5, 6, "abcdefghij", 10, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 5); } - -void test7() -{ - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 20, 5); - test("abcdefghij", 9, 0, "", 0, 0); - test("abcdefghij", 9, 0, "abcde", 0, 0); - test("abcdefghij", 9, 0, "abcde", 1, -1); - test("abcdefghij", 9, 0, "abcde", 2, -2); - test("abcdefghij", 9, 0, "abcde", 4, -4); - test("abcdefghij", 9, 0, "abcde", 5, -5); - test("abcdefghij", 9, 0, "abcdefghij", 0, 0); - test("abcdefghij", 9, 0, "abcdefghij", 1, -1); - test("abcdefghij", 9, 0, "abcdefghij", 5, -5); - test("abcdefghij", 9, 0, "abcdefghij", 9, -9); - test("abcdefghij", 9, 0, "abcdefghij", 10, -10); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghij", 9, 1, "", 0, 1); - test("abcdefghij", 9, 1, "abcde", 0, 1); - test("abcdefghij", 9, 1, "abcde", 1, 9); - test("abcdefghij", 9, 1, "abcde", 2, 9); - test("abcdefghij", 9, 1, "abcde", 4, 9); - test("abcdefghij", 9, 1, "abcde", 5, 9); - test("abcdefghij", 9, 1, "abcdefghij", 0, 1); - test("abcdefghij", 9, 1, "abcdefghij", 1, 9); - test("abcdefghij", 9, 1, "abcdefghij", 5, 9); - test("abcdefghij", 9, 1, "abcdefghij", 9, 9); - test("abcdefghij", 9, 1, "abcdefghij", 10, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 20, 9); - test("abcdefghij", 9, 2, "", 0, 1); - test("abcdefghij", 9, 2, "abcde", 0, 1); - test("abcdefghij", 9, 2, "abcde", 1, 9); - test("abcdefghij", 9, 2, "abcde", 2, 9); - test("abcdefghij", 9, 2, "abcde", 4, 9); - test("abcdefghij", 9, 2, "abcde", 5, 9); - test("abcdefghij", 9, 2, "abcdefghij", 0, 1); - test("abcdefghij", 9, 2, "abcdefghij", 1, 9); - test("abcdefghij", 9, 2, "abcdefghij", 5, 9); - test("abcdefghij", 9, 2, "abcdefghij", 9, 9); - test("abcdefghij", 9, 2, "abcdefghij", 10, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 20, 9); - test("abcdefghij", 10, 0, "", 0, 0); - test("abcdefghij", 10, 0, "abcde", 0, 0); - test("abcdefghij", 10, 0, "abcde", 1, -1); - test("abcdefghij", 10, 0, "abcde", 2, -2); - test("abcdefghij", 10, 0, "abcde", 4, -4); - test("abcdefghij", 10, 0, "abcde", 5, -5); - test("abcdefghij", 10, 0, "abcdefghij", 0, 0); - test("abcdefghij", 10, 0, "abcdefghij", 1, -1); - test("abcdefghij", 10, 0, "abcdefghij", 5, -5); - test("abcdefghij", 10, 0, "abcdefghij", 9, -9); - test("abcdefghij", 10, 0, "abcdefghij", 10, -10); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghij", 10, 1, "", 0, 0); - test("abcdefghij", 10, 1, "abcde", 0, 0); - test("abcdefghij", 10, 1, "abcde", 1, -1); - test("abcdefghij", 10, 1, "abcde", 2, -2); - test("abcdefghij", 10, 1, "abcde", 4, -4); - test("abcdefghij", 10, 1, "abcde", 5, -5); - test("abcdefghij", 10, 1, "abcdefghij", 0, 0); - test("abcdefghij", 10, 1, "abcdefghij", 1, -1); - test("abcdefghij", 10, 1, "abcdefghij", 5, -5); - test("abcdefghij", 10, 1, "abcdefghij", 9, -9); - test("abcdefghij", 10, 1, "abcdefghij", 10, -10); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghij", 11, 0, "", 0, 0); - test("abcdefghij", 11, 0, "abcde", 0, 0); - test("abcdefghij", 11, 0, "abcde", 1, 0); - test("abcdefghij", 11, 0, "abcde", 2, 0); - test("abcdefghij", 11, 0, "abcde", 4, 0); - test("abcdefghij", 11, 0, "abcde", 5, 0); - test("abcdefghij", 11, 0, "abcdefghij", 0, 0); - test("abcdefghij", 11, 0, "abcdefghij", 1, 0); - test("abcdefghij", 11, 0, "abcdefghij", 5, 0); - test("abcdefghij", 11, 0, "abcdefghij", 9, 0); - test("abcdefghij", 11, 0, "abcdefghij", 10, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 20, 0); +void test7() { + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 20, 5); + test("abcdefghij", 9, 0, "", 0, 0); + test("abcdefghij", 9, 0, "abcde", 0, 0); + test("abcdefghij", 9, 0, "abcde", 1, -1); + test("abcdefghij", 9, 0, "abcde", 2, -2); + test("abcdefghij", 9, 0, "abcde", 4, -4); + test("abcdefghij", 9, 0, "abcde", 5, -5); + test("abcdefghij", 9, 0, "abcdefghij", 0, 0); + test("abcdefghij", 9, 0, "abcdefghij", 1, -1); + test("abcdefghij", 9, 0, "abcdefghij", 5, -5); + test("abcdefghij", 9, 0, "abcdefghij", 9, -9); + test("abcdefghij", 9, 0, "abcdefghij", 10, -10); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghij", 9, 1, "", 0, 1); + test("abcdefghij", 9, 1, "abcde", 0, 1); + test("abcdefghij", 9, 1, "abcde", 1, 9); + test("abcdefghij", 9, 1, "abcde", 2, 9); + test("abcdefghij", 9, 1, "abcde", 4, 9); + test("abcdefghij", 9, 1, "abcde", 5, 9); + test("abcdefghij", 9, 1, "abcdefghij", 0, 1); + test("abcdefghij", 9, 1, "abcdefghij", 1, 9); + test("abcdefghij", 9, 1, "abcdefghij", 5, 9); + test("abcdefghij", 9, 1, "abcdefghij", 9, 9); + test("abcdefghij", 9, 1, "abcdefghij", 10, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 20, 9); + test("abcdefghij", 9, 2, "", 0, 1); + test("abcdefghij", 9, 2, "abcde", 0, 1); + test("abcdefghij", 9, 2, "abcde", 1, 9); + test("abcdefghij", 9, 2, "abcde", 2, 9); + test("abcdefghij", 9, 2, "abcde", 4, 9); + test("abcdefghij", 9, 2, "abcde", 5, 9); + test("abcdefghij", 9, 2, "abcdefghij", 0, 1); + test("abcdefghij", 9, 2, "abcdefghij", 1, 9); + test("abcdefghij", 9, 2, "abcdefghij", 5, 9); + test("abcdefghij", 9, 2, "abcdefghij", 9, 9); + test("abcdefghij", 9, 2, "abcdefghij", 10, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 20, 9); + test("abcdefghij", 10, 0, "", 0, 0); + test("abcdefghij", 10, 0, "abcde", 0, 0); + test("abcdefghij", 10, 0, "abcde", 1, -1); + test("abcdefghij", 10, 0, "abcde", 2, -2); + test("abcdefghij", 10, 0, "abcde", 4, -4); + test("abcdefghij", 10, 0, "abcde", 5, -5); + test("abcdefghij", 10, 0, "abcdefghij", 0, 0); + test("abcdefghij", 10, 0, "abcdefghij", 1, -1); + test("abcdefghij", 10, 0, "abcdefghij", 5, -5); + test("abcdefghij", 10, 0, "abcdefghij", 9, -9); + test("abcdefghij", 10, 0, "abcdefghij", 10, -10); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghij", 10, 1, "", 0, 0); + test("abcdefghij", 10, 1, "abcde", 0, 0); + test("abcdefghij", 10, 1, "abcde", 1, -1); + test("abcdefghij", 10, 1, "abcde", 2, -2); + test("abcdefghij", 10, 1, "abcde", 4, -4); + test("abcdefghij", 10, 1, "abcde", 5, -5); + test("abcdefghij", 10, 1, "abcdefghij", 0, 0); + test("abcdefghij", 10, 1, "abcdefghij", 1, -1); + test("abcdefghij", 10, 1, "abcdefghij", 5, -5); + test("abcdefghij", 10, 1, "abcdefghij", 9, -9); + test("abcdefghij", 10, 1, "abcdefghij", 10, -10); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghij", 11, 0, "", 0, 0); + test("abcdefghij", 11, 0, "abcde", 0, 0); + test("abcdefghij", 11, 0, "abcde", 1, 0); + test("abcdefghij", 11, 0, "abcde", 2, 0); + test("abcdefghij", 11, 0, "abcde", 4, 0); + test("abcdefghij", 11, 0, "abcde", 5, 0); + test("abcdefghij", 11, 0, "abcdefghij", 0, 0); + test("abcdefghij", 11, 0, "abcdefghij", 1, 0); + test("abcdefghij", 11, 0, "abcdefghij", 5, 0); + test("abcdefghij", 11, 0, "abcdefghij", 9, 0); + test("abcdefghij", 11, 0, "abcdefghij", 10, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 20, 0); } -void test8() -{ - test("abcdefghijklmnopqrst", 0, 0, "", 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, -2); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, -4); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 5, -5); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, -5); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, -9); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 10, -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghijklmnopqrst", 0, 1, "", 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 0); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, -3); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 5, -4); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 0); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, -4); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, -8); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 10, -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 0); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, -18); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 20, -19); - test("abcdefghijklmnopqrst", 0, 10, "", 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 9); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 8); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 6); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 5, 5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 9); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 10, 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 9); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, -9); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 20, -10); - test("abcdefghijklmnopqrst", 0, 19, "", 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 18); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 17); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 15); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 5, 14); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 18); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 14); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 10); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 10, 9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 18); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 0); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 20, -1); - test("abcdefghijklmnopqrst", 0, 20, "", 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 19); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 18); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 16); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 5, 15); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 19); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 15); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 11); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10, 10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 19); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 20, 0); - test("abcdefghijklmnopqrst", 0, 21, "", 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 19); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 18); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 16); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 5, 15); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 19); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 15); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 11); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10, 10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 19); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 20, 0); - test("abcdefghijklmnopqrst", 1, 0, "", 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, -2); +void test8() { + test("abcdefghijklmnopqrst", 0, 0, "", 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, -2); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, -4); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 5, -5); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, -5); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, -9); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 10, -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghijklmnopqrst", 0, 1, "", 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 0); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, -3); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 5, -4); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 0); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, -4); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, -8); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 10, -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 0); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, -18); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 20, -19); + test("abcdefghijklmnopqrst", 0, 10, "", 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 9); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 8); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 6); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 5, 5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 9); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 10, 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 9); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, -9); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 20, -10); + test("abcdefghijklmnopqrst", 0, 19, "", 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 18); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 17); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 15); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 5, 14); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 18); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 14); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 10); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 10, 9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 18); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 0); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 20, -1); + test("abcdefghijklmnopqrst", 0, 20, "", 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 19); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 18); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 16); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 5, 15); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 19); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 15); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 11); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10, 10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 19); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 20, 0); + test("abcdefghijklmnopqrst", 0, 21, "", 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 19); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 18); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 16); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 5, 15); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 19); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 15); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 11); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10, 10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 19); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 20, 0); + test("abcdefghijklmnopqrst", 1, 0, "", 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, -2); } - -void test9() -{ - test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, -4); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 5, -5); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, -5); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, -9); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 10, -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghijklmnopqrst", 1, 1, "", 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 5, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 10, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghijklmnopqrst", 1, 9, "", 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 5, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 10, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghijklmnopqrst", 1, 18, "", 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 5, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 10, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghijklmnopqrst", 1, 19, "", 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 5, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 10, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghijklmnopqrst", 1, 20, "", 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 5, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 10, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 20, 1); - test("abcdefghijklmnopqrst", 10, 0, "", 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, -2); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, -4); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 5, -5); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, -1); +void test9() { + test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, -4); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 5, -5); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, -5); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, -9); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 10, -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghijklmnopqrst", 1, 1, "", 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 5, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 10, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghijklmnopqrst", 1, 9, "", 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 5, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 10, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghijklmnopqrst", 1, 18, "", 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 5, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 10, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghijklmnopqrst", 1, 19, "", 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 5, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 10, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghijklmnopqrst", 1, 20, "", 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 5, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 10, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 20, 1); + test("abcdefghijklmnopqrst", 10, 0, "", 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, -2); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, -4); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 5, -5); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, -1); } - -void test10() -{ - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, -5); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, -9); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghijklmnopqrst", 10, 1, "", 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 5, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 20, 10); - test("abcdefghijklmnopqrst", 10, 5, "", 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 5, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 20, 10); - test("abcdefghijklmnopqrst", 10, 9, "", 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 5, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 20, 10); - test("abcdefghijklmnopqrst", 10, 10, "", 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 5, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 20, 10); - test("abcdefghijklmnopqrst", 10, 11, "", 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 5, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 20, 10); - test("abcdefghijklmnopqrst", 19, 0, "", 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, -2); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, -4); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 5, -5); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, -5); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, -9); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 10, -10); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 0); +void test10() { + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, -5); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, -9); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghijklmnopqrst", 10, 1, "", 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 5, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 20, 10); + test("abcdefghijklmnopqrst", 10, 5, "", 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 5, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 20, 10); + test("abcdefghijklmnopqrst", 10, 9, "", 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 5, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 20, 10); + test("abcdefghijklmnopqrst", 10, 10, "", 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 5, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 20, 10); + test("abcdefghijklmnopqrst", 10, 11, "", 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 5, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 20, 10); + test("abcdefghijklmnopqrst", 19, 0, "", 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, -2); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, -4); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 5, -5); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, -5); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, -9); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 10, -10); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 0); } - -void test11() -{ - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghijklmnopqrst", 19, 1, "", 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 5, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 10, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 20, 19); - test("abcdefghijklmnopqrst", 19, 2, "", 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 5, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 10, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 20, 19); - test("abcdefghijklmnopqrst", 20, 0, "", 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, -2); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, -4); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 5, -5); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, -5); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, -9); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 10, -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghijklmnopqrst", 20, 1, "", 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, -2); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, -4); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 5, -5); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, -5); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, -9); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 10, -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, -19); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 20, -20); - test("abcdefghijklmnopqrst", 21, 0, "", 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 5, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 10, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 20, 0); - } - +void test11() { + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghijklmnopqrst", 19, 1, "", 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 5, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 10, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 20, 19); + test("abcdefghijklmnopqrst", 19, 2, "", 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 5, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 10, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 20, 19); + test("abcdefghijklmnopqrst", 20, 0, "", 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, -2); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, -4); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 5, -5); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, -5); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, -9); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 10, -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghijklmnopqrst", 20, 1, "", 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, -2); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, -4); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 5, -5); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, -5); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, -9); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 10, -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, -19); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 20, -20); + test("abcdefghijklmnopqrst", 21, 0, "", 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 5, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 10, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 20, 0); +} int main(int, char**) { - test0(); - test1(); - test2(); - test3(); - test4(); - test5(); - test6(); - test7(); - test8(); - test9(); - test10(); - test11(); + test0(); + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); + test7(); + test8(); + test9(); + test10(); + test11(); - { + { test("", 0, 0, "abcde", 0, 0); test("", 0, 0, "abcde", 1, -1); test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 0); test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 0); test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, -10); - } + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { + { test(L"", 0, 0, L"abcde", 0, 0); test(L"", 0, 0, L"abcde", 1, -1); test(L"abcdefghijklmnopqrst", 21, 0, L"abcde", 0, 0); test(L"abcdefghijklmnopqrst", 21, 0, L"abcde", 1, 0); test(L"abcdefghijklmnopqrst", 10, 0, L"abcdefghij", 10, -10); - } + } #endif #if TEST_STD_VER >= 11 - { + { test(U"", 0, 0, U"abcde", 0, 0); test(U"", 0, 0, U"abcde", 1, -1); test(U"abcdefghijklmnopqrst", 21, 0, U"abcde", 0, 0); test(U"abcdefghijklmnopqrst", 21, 0, U"abcde", 1, 0); test(U"abcdefghijklmnopqrst", 10, 0, U"abcdefghij", 10, -10); - } + } - { + { test(U"", 0, 0, U"abcde", 0, 0); test(U"", 0, 0, U"abcde", 1, -1); test(U"abcdefghijklmnopqrst", 21, 0, U"abcde", 0, 0); test(U"abcdefghijklmnopqrst", 21, 0, U"abcde", 1, 0); test(U"abcdefghijklmnopqrst", 10, 0, U"abcdefghij", 10, -10); - } + } #endif #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1; - constexpr SV sv2 { "abcdefghijklmnopqrst", 21 }; - static_assert ( sv1.compare(0, 0, "abcde", 0) == 0, "" ); - static_assert ( sv1.compare(0, 0, "abcde", 1) < 0, "" ); - static_assert ( sv2.compare(0, 0, "abcde", 1, 0) == 0, "" ); - } + constexpr SV sv1; + constexpr SV sv2{"abcdefghijklmnopqrst", 21}; + static_assert(sv1.compare(0, 0, "abcde", 0) == 0, ""); + static_assert(sv1.compare(0, 0, "abcde", 1) < 0, ""); + static_assert(sv2.compare(0, 0, "abcde", 1, 0) == 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.size_size_sv_size_size.pass.cpp @@ -20,5833 +20,5776 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } +int sign(int x) { return x > 0 ? 1 : (x < 0 ? -1 : 0); } -template -void test1 ( std::basic_string_view sv1, std::size_t pos1, size_t n1, - std::basic_string_view sv2, std::size_t pos2, size_t n2, - int expected ) { +template +void test1(std::basic_string_view sv1, + std::size_t pos1, + size_t n1, + std::basic_string_view sv2, + std::size_t pos2, + size_t n2, + int expected) { #ifdef TEST_HAS_NO_EXCEPTIONS - if (pos1 <= sv1.size() && pos2 <= sv2.size()) - assert (sign( sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected)); + if (pos1 <= sv1.size() && pos2 <= sv2.size()) + assert(sign(sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected)); #else - try { - assert (sign( sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected)); - assert(pos1 <= sv1.size() && pos2 <= sv2.size()); - } - catch (const std::out_of_range&) { - assert(pos1 > sv1.size() || pos2 > sv2.size()); - } + try { + assert(sign(sv1.compare(pos1, n1, sv2, pos2, n2)) == sign(expected)); + assert(pos1 <= sv1.size() && pos2 <= sv2.size()); + } catch (const std::out_of_range&) { + assert(pos1 > sv1.size() || pos2 > sv2.size()); + } #endif } +template +void test(const CharT* s1, std::size_t pos1, size_t n1, const CharT* s2, std::size_t pos2, size_t n2, int expected) { + typedef std::basic_string_view string_view_t; -template -void test ( const CharT *s1, std::size_t pos1, size_t n1, - const CharT *s2, std::size_t pos2, size_t n2, - int expected ) { - typedef std::basic_string_view string_view_t; - - string_view_t sv1 ( s1 ); - string_view_t sv2 ( s2 ); - test1(sv1, pos1, n1, sv2, pos2, n2, expected); + string_view_t sv1(s1); + string_view_t sv2(s2); + test1(sv1, pos1, n1, sv2, pos2, n2, expected); } -void test0() -{ - test("", 0, 0, "", 0, 0, 0); - test("", 0, 0, "", 0, 1, 0); - test("", 0, 0, "", 1, 0, 0); - test("", 0, 0, "abcde", 0, 0, 0); - test("", 0, 0, "abcde", 0, 1, -1); - test("", 0, 0, "abcde", 0, 2, -2); - test("", 0, 0, "abcde", 0, 4, -4); - test("", 0, 0, "abcde", 0, 5, -5); - test("", 0, 0, "abcde", 0, 6, -5); - test("", 0, 0, "abcde", 1, 0, 0); - test("", 0, 0, "abcde", 1, 1, -1); - test("", 0, 0, "abcde", 1, 2, -2); - test("", 0, 0, "abcde", 1, 3, -3); - test("", 0, 0, "abcde", 1, 4, -4); - test("", 0, 0, "abcde", 1, 5, -4); - test("", 0, 0, "abcde", 2, 0, 0); - test("", 0, 0, "abcde", 2, 1, -1); - test("", 0, 0, "abcde", 2, 2, -2); - test("", 0, 0, "abcde", 2, 3, -3); - test("", 0, 0, "abcde", 2, 4, -3); - test("", 0, 0, "abcde", 4, 0, 0); - test("", 0, 0, "abcde", 4, 1, -1); - test("", 0, 0, "abcde", 4, 2, -1); - test("", 0, 0, "abcde", 5, 0, 0); - test("", 0, 0, "abcde", 5, 1, 0); - test("", 0, 0, "abcde", 6, 0, 0); - test("", 0, 0, "abcdefghij", 0, 0, 0); - test("", 0, 0, "abcdefghij", 0, 1, -1); - test("", 0, 0, "abcdefghij", 0, 5, -5); - test("", 0, 0, "abcdefghij", 0, 9, -9); - test("", 0, 0, "abcdefghij", 0, 10, -10); - test("", 0, 0, "abcdefghij", 0, 11, -10); - test("", 0, 0, "abcdefghij", 1, 0, 0); - test("", 0, 0, "abcdefghij", 1, 1, -1); - test("", 0, 0, "abcdefghij", 1, 4, -4); - test("", 0, 0, "abcdefghij", 1, 8, -8); - test("", 0, 0, "abcdefghij", 1, 9, -9); - test("", 0, 0, "abcdefghij", 1, 10, -9); - test("", 0, 0, "abcdefghij", 5, 0, 0); - test("", 0, 0, "abcdefghij", 5, 1, -1); - test("", 0, 0, "abcdefghij", 5, 2, -2); - test("", 0, 0, "abcdefghij", 5, 4, -4); - test("", 0, 0, "abcdefghij", 5, 5, -5); - test("", 0, 0, "abcdefghij", 5, 6, -5); - test("", 0, 0, "abcdefghij", 9, 0, 0); - test("", 0, 0, "abcdefghij", 9, 1, -1); - test("", 0, 0, "abcdefghij", 9, 2, -1); - test("", 0, 0, "abcdefghij", 10, 0, 0); - test("", 0, 0, "abcdefghij", 10, 1, 0); - test("", 0, 0, "abcdefghij", 11, 0, 0); - test("", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("", 0, 1, "", 0, 0, 0); - test("", 0, 1, "", 0, 1, 0); - test("", 0, 1, "", 1, 0, 0); - test("", 0, 1, "abcde", 0, 0, 0); - test("", 0, 1, "abcde", 0, 1, -1); - test("", 0, 1, "abcde", 0, 2, -2); - test("", 0, 1, "abcde", 0, 4, -4); - test("", 0, 1, "abcde", 0, 5, -5); - test("", 0, 1, "abcde", 0, 6, -5); - test("", 0, 1, "abcde", 1, 0, 0); - test("", 0, 1, "abcde", 1, 1, -1); - test("", 0, 1, "abcde", 1, 2, -2); - test("", 0, 1, "abcde", 1, 3, -3); - test("", 0, 1, "abcde", 1, 4, -4); - test("", 0, 1, "abcde", 1, 5, -4); - test("", 0, 1, "abcde", 2, 0, 0); - test("", 0, 1, "abcde", 2, 1, -1); - test("", 0, 1, "abcde", 2, 2, -2); - test("", 0, 1, "abcde", 2, 3, -3); - test("", 0, 1, "abcde", 2, 4, -3); - test("", 0, 1, "abcde", 4, 0, 0); - test("", 0, 1, "abcde", 4, 1, -1); - test("", 0, 1, "abcde", 4, 2, -1); - test("", 0, 1, "abcde", 5, 0, 0); - test("", 0, 1, "abcde", 5, 1, 0); - test("", 0, 1, "abcde", 6, 0, 0); +void test0() { + test("", 0, 0, "", 0, 0, 0); + test("", 0, 0, "", 0, 1, 0); + test("", 0, 0, "", 1, 0, 0); + test("", 0, 0, "abcde", 0, 0, 0); + test("", 0, 0, "abcde", 0, 1, -1); + test("", 0, 0, "abcde", 0, 2, -2); + test("", 0, 0, "abcde", 0, 4, -4); + test("", 0, 0, "abcde", 0, 5, -5); + test("", 0, 0, "abcde", 0, 6, -5); + test("", 0, 0, "abcde", 1, 0, 0); + test("", 0, 0, "abcde", 1, 1, -1); + test("", 0, 0, "abcde", 1, 2, -2); + test("", 0, 0, "abcde", 1, 3, -3); + test("", 0, 0, "abcde", 1, 4, -4); + test("", 0, 0, "abcde", 1, 5, -4); + test("", 0, 0, "abcde", 2, 0, 0); + test("", 0, 0, "abcde", 2, 1, -1); + test("", 0, 0, "abcde", 2, 2, -2); + test("", 0, 0, "abcde", 2, 3, -3); + test("", 0, 0, "abcde", 2, 4, -3); + test("", 0, 0, "abcde", 4, 0, 0); + test("", 0, 0, "abcde", 4, 1, -1); + test("", 0, 0, "abcde", 4, 2, -1); + test("", 0, 0, "abcde", 5, 0, 0); + test("", 0, 0, "abcde", 5, 1, 0); + test("", 0, 0, "abcde", 6, 0, 0); + test("", 0, 0, "abcdefghij", 0, 0, 0); + test("", 0, 0, "abcdefghij", 0, 1, -1); + test("", 0, 0, "abcdefghij", 0, 5, -5); + test("", 0, 0, "abcdefghij", 0, 9, -9); + test("", 0, 0, "abcdefghij", 0, 10, -10); + test("", 0, 0, "abcdefghij", 0, 11, -10); + test("", 0, 0, "abcdefghij", 1, 0, 0); + test("", 0, 0, "abcdefghij", 1, 1, -1); + test("", 0, 0, "abcdefghij", 1, 4, -4); + test("", 0, 0, "abcdefghij", 1, 8, -8); + test("", 0, 0, "abcdefghij", 1, 9, -9); + test("", 0, 0, "abcdefghij", 1, 10, -9); + test("", 0, 0, "abcdefghij", 5, 0, 0); + test("", 0, 0, "abcdefghij", 5, 1, -1); + test("", 0, 0, "abcdefghij", 5, 2, -2); + test("", 0, 0, "abcdefghij", 5, 4, -4); + test("", 0, 0, "abcdefghij", 5, 5, -5); + test("", 0, 0, "abcdefghij", 5, 6, -5); + test("", 0, 0, "abcdefghij", 9, 0, 0); + test("", 0, 0, "abcdefghij", 9, 1, -1); + test("", 0, 0, "abcdefghij", 9, 2, -1); + test("", 0, 0, "abcdefghij", 10, 0, 0); + test("", 0, 0, "abcdefghij", 10, 1, 0); + test("", 0, 0, "abcdefghij", 11, 0, 0); + test("", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("", 0, 1, "", 0, 0, 0); + test("", 0, 1, "", 0, 1, 0); + test("", 0, 1, "", 1, 0, 0); + test("", 0, 1, "abcde", 0, 0, 0); + test("", 0, 1, "abcde", 0, 1, -1); + test("", 0, 1, "abcde", 0, 2, -2); + test("", 0, 1, "abcde", 0, 4, -4); + test("", 0, 1, "abcde", 0, 5, -5); + test("", 0, 1, "abcde", 0, 6, -5); + test("", 0, 1, "abcde", 1, 0, 0); + test("", 0, 1, "abcde", 1, 1, -1); + test("", 0, 1, "abcde", 1, 2, -2); + test("", 0, 1, "abcde", 1, 3, -3); + test("", 0, 1, "abcde", 1, 4, -4); + test("", 0, 1, "abcde", 1, 5, -4); + test("", 0, 1, "abcde", 2, 0, 0); + test("", 0, 1, "abcde", 2, 1, -1); + test("", 0, 1, "abcde", 2, 2, -2); + test("", 0, 1, "abcde", 2, 3, -3); + test("", 0, 1, "abcde", 2, 4, -3); + test("", 0, 1, "abcde", 4, 0, 0); + test("", 0, 1, "abcde", 4, 1, -1); + test("", 0, 1, "abcde", 4, 2, -1); + test("", 0, 1, "abcde", 5, 0, 0); + test("", 0, 1, "abcde", 5, 1, 0); + test("", 0, 1, "abcde", 6, 0, 0); } -void test1() -{ - test("", 0, 1, "abcdefghij", 0, 0, 0); - test("", 0, 1, "abcdefghij", 0, 1, -1); - test("", 0, 1, "abcdefghij", 0, 5, -5); - test("", 0, 1, "abcdefghij", 0, 9, -9); - test("", 0, 1, "abcdefghij", 0, 10, -10); - test("", 0, 1, "abcdefghij", 0, 11, -10); - test("", 0, 1, "abcdefghij", 1, 0, 0); - test("", 0, 1, "abcdefghij", 1, 1, -1); - test("", 0, 1, "abcdefghij", 1, 4, -4); - test("", 0, 1, "abcdefghij", 1, 8, -8); - test("", 0, 1, "abcdefghij", 1, 9, -9); - test("", 0, 1, "abcdefghij", 1, 10, -9); - test("", 0, 1, "abcdefghij", 5, 0, 0); - test("", 0, 1, "abcdefghij", 5, 1, -1); - test("", 0, 1, "abcdefghij", 5, 2, -2); - test("", 0, 1, "abcdefghij", 5, 4, -4); - test("", 0, 1, "abcdefghij", 5, 5, -5); - test("", 0, 1, "abcdefghij", 5, 6, -5); - test("", 0, 1, "abcdefghij", 9, 0, 0); - test("", 0, 1, "abcdefghij", 9, 1, -1); - test("", 0, 1, "abcdefghij", 9, 2, -1); - test("", 0, 1, "abcdefghij", 10, 0, 0); - test("", 0, 1, "abcdefghij", 10, 1, 0); - test("", 0, 1, "abcdefghij", 11, 0, 0); - test("", 0, 1, "abcdefghijklmnopqrst", 0, 0, 0); - test("", 0, 1, "abcdefghijklmnopqrst", 0, 1, -1); - test("", 0, 1, "abcdefghijklmnopqrst", 0, 10, -10); - test("", 0, 1, "abcdefghijklmnopqrst", 0, 19, -19); - test("", 0, 1, "abcdefghijklmnopqrst", 0, 20, -20); - test("", 0, 1, "abcdefghijklmnopqrst", 0, 21, -20); - test("", 0, 1, "abcdefghijklmnopqrst", 1, 0, 0); - test("", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1); - test("", 0, 1, "abcdefghijklmnopqrst", 1, 9, -9); - test("", 0, 1, "abcdefghijklmnopqrst", 1, 18, -18); - test("", 0, 1, "abcdefghijklmnopqrst", 1, 19, -19); - test("", 0, 1, "abcdefghijklmnopqrst", 1, 20, -19); - test("", 0, 1, "abcdefghijklmnopqrst", 10, 0, 0); - test("", 0, 1, "abcdefghijklmnopqrst", 10, 1, -1); - test("", 0, 1, "abcdefghijklmnopqrst", 10, 5, -5); - test("", 0, 1, "abcdefghijklmnopqrst", 10, 9, -9); - test("", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10); - test("", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10); - test("", 0, 1, "abcdefghijklmnopqrst", 19, 0, 0); - test("", 0, 1, "abcdefghijklmnopqrst", 19, 1, -1); - test("", 0, 1, "abcdefghijklmnopqrst", 19, 2, -1); - test("", 0, 1, "abcdefghijklmnopqrst", 20, 0, 0); - test("", 0, 1, "abcdefghijklmnopqrst", 20, 1, 0); - test("", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("", 1, 0, "", 0, 0, 0); - test("", 1, 0, "", 0, 1, 0); - test("", 1, 0, "", 1, 0, 0); - test("", 1, 0, "abcde", 0, 0, 0); - test("", 1, 0, "abcde", 0, 1, 0); - test("", 1, 0, "abcde", 0, 2, 0); - test("", 1, 0, "abcde", 0, 4, 0); - test("", 1, 0, "abcde", 0, 5, 0); - test("", 1, 0, "abcde", 0, 6, 0); - test("", 1, 0, "abcde", 1, 0, 0); - test("", 1, 0, "abcde", 1, 1, 0); - test("", 1, 0, "abcde", 1, 2, 0); - test("", 1, 0, "abcde", 1, 3, 0); - test("", 1, 0, "abcde", 1, 4, 0); - test("", 1, 0, "abcde", 1, 5, 0); - test("", 1, 0, "abcde", 2, 0, 0); - test("", 1, 0, "abcde", 2, 1, 0); - test("", 1, 0, "abcde", 2, 2, 0); - test("", 1, 0, "abcde", 2, 3, 0); - test("", 1, 0, "abcde", 2, 4, 0); - test("", 1, 0, "abcde", 4, 0, 0); - test("", 1, 0, "abcde", 4, 1, 0); - test("", 1, 0, "abcde", 4, 2, 0); - test("", 1, 0, "abcde", 5, 0, 0); - test("", 1, 0, "abcde", 5, 1, 0); - test("", 1, 0, "abcde", 6, 0, 0); - test("", 1, 0, "abcdefghij", 0, 0, 0); - test("", 1, 0, "abcdefghij", 0, 1, 0); - test("", 1, 0, "abcdefghij", 0, 5, 0); - test("", 1, 0, "abcdefghij", 0, 9, 0); - test("", 1, 0, "abcdefghij", 0, 10, 0); - test("", 1, 0, "abcdefghij", 0, 11, 0); - test("", 1, 0, "abcdefghij", 1, 0, 0); - test("", 1, 0, "abcdefghij", 1, 1, 0); - test("", 1, 0, "abcdefghij", 1, 4, 0); - test("", 1, 0, "abcdefghij", 1, 8, 0); - test("", 1, 0, "abcdefghij", 1, 9, 0); - test("", 1, 0, "abcdefghij", 1, 10, 0); - test("", 1, 0, "abcdefghij", 5, 0, 0); - test("", 1, 0, "abcdefghij", 5, 1, 0); - test("", 1, 0, "abcdefghij", 5, 2, 0); - test("", 1, 0, "abcdefghij", 5, 4, 0); - test("", 1, 0, "abcdefghij", 5, 5, 0); - test("", 1, 0, "abcdefghij", 5, 6, 0); - test("", 1, 0, "abcdefghij", 9, 0, 0); - test("", 1, 0, "abcdefghij", 9, 1, 0); - test("", 1, 0, "abcdefghij", 9, 2, 0); - test("", 1, 0, "abcdefghij", 10, 0, 0); - test("", 1, 0, "abcdefghij", 10, 1, 0); - test("", 1, 0, "abcdefghij", 11, 0, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 0, 1, 0); +void test1() { + test("", 0, 1, "abcdefghij", 0, 0, 0); + test("", 0, 1, "abcdefghij", 0, 1, -1); + test("", 0, 1, "abcdefghij", 0, 5, -5); + test("", 0, 1, "abcdefghij", 0, 9, -9); + test("", 0, 1, "abcdefghij", 0, 10, -10); + test("", 0, 1, "abcdefghij", 0, 11, -10); + test("", 0, 1, "abcdefghij", 1, 0, 0); + test("", 0, 1, "abcdefghij", 1, 1, -1); + test("", 0, 1, "abcdefghij", 1, 4, -4); + test("", 0, 1, "abcdefghij", 1, 8, -8); + test("", 0, 1, "abcdefghij", 1, 9, -9); + test("", 0, 1, "abcdefghij", 1, 10, -9); + test("", 0, 1, "abcdefghij", 5, 0, 0); + test("", 0, 1, "abcdefghij", 5, 1, -1); + test("", 0, 1, "abcdefghij", 5, 2, -2); + test("", 0, 1, "abcdefghij", 5, 4, -4); + test("", 0, 1, "abcdefghij", 5, 5, -5); + test("", 0, 1, "abcdefghij", 5, 6, -5); + test("", 0, 1, "abcdefghij", 9, 0, 0); + test("", 0, 1, "abcdefghij", 9, 1, -1); + test("", 0, 1, "abcdefghij", 9, 2, -1); + test("", 0, 1, "abcdefghij", 10, 0, 0); + test("", 0, 1, "abcdefghij", 10, 1, 0); + test("", 0, 1, "abcdefghij", 11, 0, 0); + test("", 0, 1, "abcdefghijklmnopqrst", 0, 0, 0); + test("", 0, 1, "abcdefghijklmnopqrst", 0, 1, -1); + test("", 0, 1, "abcdefghijklmnopqrst", 0, 10, -10); + test("", 0, 1, "abcdefghijklmnopqrst", 0, 19, -19); + test("", 0, 1, "abcdefghijklmnopqrst", 0, 20, -20); + test("", 0, 1, "abcdefghijklmnopqrst", 0, 21, -20); + test("", 0, 1, "abcdefghijklmnopqrst", 1, 0, 0); + test("", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1); + test("", 0, 1, "abcdefghijklmnopqrst", 1, 9, -9); + test("", 0, 1, "abcdefghijklmnopqrst", 1, 18, -18); + test("", 0, 1, "abcdefghijklmnopqrst", 1, 19, -19); + test("", 0, 1, "abcdefghijklmnopqrst", 1, 20, -19); + test("", 0, 1, "abcdefghijklmnopqrst", 10, 0, 0); + test("", 0, 1, "abcdefghijklmnopqrst", 10, 1, -1); + test("", 0, 1, "abcdefghijklmnopqrst", 10, 5, -5); + test("", 0, 1, "abcdefghijklmnopqrst", 10, 9, -9); + test("", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10); + test("", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10); + test("", 0, 1, "abcdefghijklmnopqrst", 19, 0, 0); + test("", 0, 1, "abcdefghijklmnopqrst", 19, 1, -1); + test("", 0, 1, "abcdefghijklmnopqrst", 19, 2, -1); + test("", 0, 1, "abcdefghijklmnopqrst", 20, 0, 0); + test("", 0, 1, "abcdefghijklmnopqrst", 20, 1, 0); + test("", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("", 1, 0, "", 0, 0, 0); + test("", 1, 0, "", 0, 1, 0); + test("", 1, 0, "", 1, 0, 0); + test("", 1, 0, "abcde", 0, 0, 0); + test("", 1, 0, "abcde", 0, 1, 0); + test("", 1, 0, "abcde", 0, 2, 0); + test("", 1, 0, "abcde", 0, 4, 0); + test("", 1, 0, "abcde", 0, 5, 0); + test("", 1, 0, "abcde", 0, 6, 0); + test("", 1, 0, "abcde", 1, 0, 0); + test("", 1, 0, "abcde", 1, 1, 0); + test("", 1, 0, "abcde", 1, 2, 0); + test("", 1, 0, "abcde", 1, 3, 0); + test("", 1, 0, "abcde", 1, 4, 0); + test("", 1, 0, "abcde", 1, 5, 0); + test("", 1, 0, "abcde", 2, 0, 0); + test("", 1, 0, "abcde", 2, 1, 0); + test("", 1, 0, "abcde", 2, 2, 0); + test("", 1, 0, "abcde", 2, 3, 0); + test("", 1, 0, "abcde", 2, 4, 0); + test("", 1, 0, "abcde", 4, 0, 0); + test("", 1, 0, "abcde", 4, 1, 0); + test("", 1, 0, "abcde", 4, 2, 0); + test("", 1, 0, "abcde", 5, 0, 0); + test("", 1, 0, "abcde", 5, 1, 0); + test("", 1, 0, "abcde", 6, 0, 0); + test("", 1, 0, "abcdefghij", 0, 0, 0); + test("", 1, 0, "abcdefghij", 0, 1, 0); + test("", 1, 0, "abcdefghij", 0, 5, 0); + test("", 1, 0, "abcdefghij", 0, 9, 0); + test("", 1, 0, "abcdefghij", 0, 10, 0); + test("", 1, 0, "abcdefghij", 0, 11, 0); + test("", 1, 0, "abcdefghij", 1, 0, 0); + test("", 1, 0, "abcdefghij", 1, 1, 0); + test("", 1, 0, "abcdefghij", 1, 4, 0); + test("", 1, 0, "abcdefghij", 1, 8, 0); + test("", 1, 0, "abcdefghij", 1, 9, 0); + test("", 1, 0, "abcdefghij", 1, 10, 0); + test("", 1, 0, "abcdefghij", 5, 0, 0); + test("", 1, 0, "abcdefghij", 5, 1, 0); + test("", 1, 0, "abcdefghij", 5, 2, 0); + test("", 1, 0, "abcdefghij", 5, 4, 0); + test("", 1, 0, "abcdefghij", 5, 5, 0); + test("", 1, 0, "abcdefghij", 5, 6, 0); + test("", 1, 0, "abcdefghij", 9, 0, 0); + test("", 1, 0, "abcdefghij", 9, 1, 0); + test("", 1, 0, "abcdefghij", 9, 2, 0); + test("", 1, 0, "abcdefghij", 10, 0, 0); + test("", 1, 0, "abcdefghij", 10, 1, 0); + test("", 1, 0, "abcdefghij", 11, 0, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 0, 1, 0); } -void test2() -{ - test("", 1, 0, "abcdefghijklmnopqrst", 0, 10, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 0, 19, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 0, 20, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 0, 21, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 1, 1, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 1, 9, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 1, 18, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 1, 19, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 1, 20, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 10, 1, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 10, 5, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 10, 9, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 10, 10, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 10, 11, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 19, 1, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 19, 2, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 0, 0, "", 0, 0, 0); - test("abcde", 0, 0, "", 0, 1, 0); - test("abcde", 0, 0, "", 1, 0, 0); - test("abcde", 0, 0, "abcde", 0, 0, 0); - test("abcde", 0, 0, "abcde", 0, 1, -1); - test("abcde", 0, 0, "abcde", 0, 2, -2); - test("abcde", 0, 0, "abcde", 0, 4, -4); - test("abcde", 0, 0, "abcde", 0, 5, -5); - test("abcde", 0, 0, "abcde", 0, 6, -5); - test("abcde", 0, 0, "abcde", 1, 0, 0); - test("abcde", 0, 0, "abcde", 1, 1, -1); - test("abcde", 0, 0, "abcde", 1, 2, -2); - test("abcde", 0, 0, "abcde", 1, 3, -3); - test("abcde", 0, 0, "abcde", 1, 4, -4); - test("abcde", 0, 0, "abcde", 1, 5, -4); - test("abcde", 0, 0, "abcde", 2, 0, 0); - test("abcde", 0, 0, "abcde", 2, 1, -1); - test("abcde", 0, 0, "abcde", 2, 2, -2); - test("abcde", 0, 0, "abcde", 2, 3, -3); - test("abcde", 0, 0, "abcde", 2, 4, -3); - test("abcde", 0, 0, "abcde", 4, 0, 0); - test("abcde", 0, 0, "abcde", 4, 1, -1); - test("abcde", 0, 0, "abcde", 4, 2, -1); - test("abcde", 0, 0, "abcde", 5, 0, 0); - test("abcde", 0, 0, "abcde", 5, 1, 0); - test("abcde", 0, 0, "abcde", 6, 0, 0); - test("abcde", 0, 0, "abcdefghij", 0, 0, 0); - test("abcde", 0, 0, "abcdefghij", 0, 1, -1); - test("abcde", 0, 0, "abcdefghij", 0, 5, -5); - test("abcde", 0, 0, "abcdefghij", 0, 9, -9); - test("abcde", 0, 0, "abcdefghij", 0, 10, -10); - test("abcde", 0, 0, "abcdefghij", 0, 11, -10); - test("abcde", 0, 0, "abcdefghij", 1, 0, 0); - test("abcde", 0, 0, "abcdefghij", 1, 1, -1); - test("abcde", 0, 0, "abcdefghij", 1, 4, -4); - test("abcde", 0, 0, "abcdefghij", 1, 8, -8); - test("abcde", 0, 0, "abcdefghij", 1, 9, -9); - test("abcde", 0, 0, "abcdefghij", 1, 10, -9); - test("abcde", 0, 0, "abcdefghij", 5, 0, 0); - test("abcde", 0, 0, "abcdefghij", 5, 1, -1); - test("abcde", 0, 0, "abcdefghij", 5, 2, -2); - test("abcde", 0, 0, "abcdefghij", 5, 4, -4); - test("abcde", 0, 0, "abcdefghij", 5, 5, -5); - test("abcde", 0, 0, "abcdefghij", 5, 6, -5); - test("abcde", 0, 0, "abcdefghij", 9, 0, 0); - test("abcde", 0, 0, "abcdefghij", 9, 1, -1); - test("abcde", 0, 0, "abcdefghij", 9, 2, -1); - test("abcde", 0, 0, "abcdefghij", 10, 0, 0); - test("abcde", 0, 0, "abcdefghij", 10, 1, 0); - test("abcde", 0, 0, "abcdefghij", 11, 0, 0); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcde", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 0, 1, "", 0, 0, 1); - test("abcde", 0, 1, "", 0, 1, 1); - test("abcde", 0, 1, "", 1, 0, 0); - test("abcde", 0, 1, "abcde", 0, 0, 1); +void test2() { + test("", 1, 0, "abcdefghijklmnopqrst", 0, 10, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 0, 19, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 0, 20, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 0, 21, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 1, 1, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 1, 9, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 1, 18, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 1, 19, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 1, 20, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 10, 1, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 10, 5, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 10, 9, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 10, 10, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 10, 11, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 19, 1, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 19, 2, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 0, 0, "", 0, 0, 0); + test("abcde", 0, 0, "", 0, 1, 0); + test("abcde", 0, 0, "", 1, 0, 0); + test("abcde", 0, 0, "abcde", 0, 0, 0); + test("abcde", 0, 0, "abcde", 0, 1, -1); + test("abcde", 0, 0, "abcde", 0, 2, -2); + test("abcde", 0, 0, "abcde", 0, 4, -4); + test("abcde", 0, 0, "abcde", 0, 5, -5); + test("abcde", 0, 0, "abcde", 0, 6, -5); + test("abcde", 0, 0, "abcde", 1, 0, 0); + test("abcde", 0, 0, "abcde", 1, 1, -1); + test("abcde", 0, 0, "abcde", 1, 2, -2); + test("abcde", 0, 0, "abcde", 1, 3, -3); + test("abcde", 0, 0, "abcde", 1, 4, -4); + test("abcde", 0, 0, "abcde", 1, 5, -4); + test("abcde", 0, 0, "abcde", 2, 0, 0); + test("abcde", 0, 0, "abcde", 2, 1, -1); + test("abcde", 0, 0, "abcde", 2, 2, -2); + test("abcde", 0, 0, "abcde", 2, 3, -3); + test("abcde", 0, 0, "abcde", 2, 4, -3); + test("abcde", 0, 0, "abcde", 4, 0, 0); + test("abcde", 0, 0, "abcde", 4, 1, -1); + test("abcde", 0, 0, "abcde", 4, 2, -1); + test("abcde", 0, 0, "abcde", 5, 0, 0); + test("abcde", 0, 0, "abcde", 5, 1, 0); + test("abcde", 0, 0, "abcde", 6, 0, 0); + test("abcde", 0, 0, "abcdefghij", 0, 0, 0); + test("abcde", 0, 0, "abcdefghij", 0, 1, -1); + test("abcde", 0, 0, "abcdefghij", 0, 5, -5); + test("abcde", 0, 0, "abcdefghij", 0, 9, -9); + test("abcde", 0, 0, "abcdefghij", 0, 10, -10); + test("abcde", 0, 0, "abcdefghij", 0, 11, -10); + test("abcde", 0, 0, "abcdefghij", 1, 0, 0); + test("abcde", 0, 0, "abcdefghij", 1, 1, -1); + test("abcde", 0, 0, "abcdefghij", 1, 4, -4); + test("abcde", 0, 0, "abcdefghij", 1, 8, -8); + test("abcde", 0, 0, "abcdefghij", 1, 9, -9); + test("abcde", 0, 0, "abcdefghij", 1, 10, -9); + test("abcde", 0, 0, "abcdefghij", 5, 0, 0); + test("abcde", 0, 0, "abcdefghij", 5, 1, -1); + test("abcde", 0, 0, "abcdefghij", 5, 2, -2); + test("abcde", 0, 0, "abcdefghij", 5, 4, -4); + test("abcde", 0, 0, "abcdefghij", 5, 5, -5); + test("abcde", 0, 0, "abcdefghij", 5, 6, -5); + test("abcde", 0, 0, "abcdefghij", 9, 0, 0); + test("abcde", 0, 0, "abcdefghij", 9, 1, -1); + test("abcde", 0, 0, "abcdefghij", 9, 2, -1); + test("abcde", 0, 0, "abcdefghij", 10, 0, 0); + test("abcde", 0, 0, "abcdefghij", 10, 1, 0); + test("abcde", 0, 0, "abcdefghij", 11, 0, 0); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcde", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 0, 1, "", 0, 0, 1); + test("abcde", 0, 1, "", 0, 1, 1); + test("abcde", 0, 1, "", 1, 0, 0); + test("abcde", 0, 1, "abcde", 0, 0, 1); } -void test3() -{ - test("abcde", 0, 1, "abcde", 0, 1, 0); - test("abcde", 0, 1, "abcde", 0, 2, -1); - test("abcde", 0, 1, "abcde", 0, 4, -3); - test("abcde", 0, 1, "abcde", 0, 5, -4); - test("abcde", 0, 1, "abcde", 0, 6, -4); - test("abcde", 0, 1, "abcde", 1, 0, 1); - test("abcde", 0, 1, "abcde", 1, 1, -1); - test("abcde", 0, 1, "abcde", 1, 2, -1); - test("abcde", 0, 1, "abcde", 1, 3, -1); - test("abcde", 0, 1, "abcde", 1, 4, -1); - test("abcde", 0, 1, "abcde", 1, 5, -1); - test("abcde", 0, 1, "abcde", 2, 0, 1); - test("abcde", 0, 1, "abcde", 2, 1, -2); - test("abcde", 0, 1, "abcde", 2, 2, -2); - test("abcde", 0, 1, "abcde", 2, 3, -2); - test("abcde", 0, 1, "abcde", 2, 4, -2); - test("abcde", 0, 1, "abcde", 4, 0, 1); - test("abcde", 0, 1, "abcde", 4, 1, -4); - test("abcde", 0, 1, "abcde", 4, 2, -4); - test("abcde", 0, 1, "abcde", 5, 0, 1); - test("abcde", 0, 1, "abcde", 5, 1, 1); - test("abcde", 0, 1, "abcde", 6, 0, 0); - test("abcde", 0, 1, "abcdefghij", 0, 0, 1); - test("abcde", 0, 1, "abcdefghij", 0, 1, 0); - test("abcde", 0, 1, "abcdefghij", 0, 5, -4); - test("abcde", 0, 1, "abcdefghij", 0, 9, -8); - test("abcde", 0, 1, "abcdefghij", 0, 10, -9); - test("abcde", 0, 1, "abcdefghij", 0, 11, -9); - test("abcde", 0, 1, "abcdefghij", 1, 0, 1); - test("abcde", 0, 1, "abcdefghij", 1, 1, -1); - test("abcde", 0, 1, "abcdefghij", 1, 4, -1); - test("abcde", 0, 1, "abcdefghij", 1, 8, -1); - test("abcde", 0, 1, "abcdefghij", 1, 9, -1); - test("abcde", 0, 1, "abcdefghij", 1, 10, -1); - test("abcde", 0, 1, "abcdefghij", 5, 0, 1); - test("abcde", 0, 1, "abcdefghij", 5, 1, -5); - test("abcde", 0, 1, "abcdefghij", 5, 2, -5); - test("abcde", 0, 1, "abcdefghij", 5, 4, -5); - test("abcde", 0, 1, "abcdefghij", 5, 5, -5); - test("abcde", 0, 1, "abcdefghij", 5, 6, -5); - test("abcde", 0, 1, "abcdefghij", 9, 0, 1); - test("abcde", 0, 1, "abcdefghij", 9, 1, -9); - test("abcde", 0, 1, "abcdefghij", 9, 2, -9); - test("abcde", 0, 1, "abcdefghij", 10, 0, 1); - test("abcde", 0, 1, "abcdefghij", 10, 1, 1); - test("abcde", 0, 1, "abcdefghij", 11, 0, 0); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcde", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 0, 2, "", 0, 0, 2); - test("abcde", 0, 2, "", 0, 1, 2); - test("abcde", 0, 2, "", 1, 0, 0); - test("abcde", 0, 2, "abcde", 0, 0, 2); - test("abcde", 0, 2, "abcde", 0, 1, 1); - test("abcde", 0, 2, "abcde", 0, 2, 0); - test("abcde", 0, 2, "abcde", 0, 4, -2); - test("abcde", 0, 2, "abcde", 0, 5, -3); - test("abcde", 0, 2, "abcde", 0, 6, -3); - test("abcde", 0, 2, "abcde", 1, 0, 2); - test("abcde", 0, 2, "abcde", 1, 1, -1); - test("abcde", 0, 2, "abcde", 1, 2, -1); - test("abcde", 0, 2, "abcde", 1, 3, -1); - test("abcde", 0, 2, "abcde", 1, 4, -1); - test("abcde", 0, 2, "abcde", 1, 5, -1); - test("abcde", 0, 2, "abcde", 2, 0, 2); - test("abcde", 0, 2, "abcde", 2, 1, -2); - test("abcde", 0, 2, "abcde", 2, 2, -2); - test("abcde", 0, 2, "abcde", 2, 3, -2); - test("abcde", 0, 2, "abcde", 2, 4, -2); - test("abcde", 0, 2, "abcde", 4, 0, 2); - test("abcde", 0, 2, "abcde", 4, 1, -4); - test("abcde", 0, 2, "abcde", 4, 2, -4); - test("abcde", 0, 2, "abcde", 5, 0, 2); - test("abcde", 0, 2, "abcde", 5, 1, 2); - test("abcde", 0, 2, "abcde", 6, 0, 0); - test("abcde", 0, 2, "abcdefghij", 0, 0, 2); - test("abcde", 0, 2, "abcdefghij", 0, 1, 1); - test("abcde", 0, 2, "abcdefghij", 0, 5, -3); - test("abcde", 0, 2, "abcdefghij", 0, 9, -7); +void test3() { + test("abcde", 0, 1, "abcde", 0, 1, 0); + test("abcde", 0, 1, "abcde", 0, 2, -1); + test("abcde", 0, 1, "abcde", 0, 4, -3); + test("abcde", 0, 1, "abcde", 0, 5, -4); + test("abcde", 0, 1, "abcde", 0, 6, -4); + test("abcde", 0, 1, "abcde", 1, 0, 1); + test("abcde", 0, 1, "abcde", 1, 1, -1); + test("abcde", 0, 1, "abcde", 1, 2, -1); + test("abcde", 0, 1, "abcde", 1, 3, -1); + test("abcde", 0, 1, "abcde", 1, 4, -1); + test("abcde", 0, 1, "abcde", 1, 5, -1); + test("abcde", 0, 1, "abcde", 2, 0, 1); + test("abcde", 0, 1, "abcde", 2, 1, -2); + test("abcde", 0, 1, "abcde", 2, 2, -2); + test("abcde", 0, 1, "abcde", 2, 3, -2); + test("abcde", 0, 1, "abcde", 2, 4, -2); + test("abcde", 0, 1, "abcde", 4, 0, 1); + test("abcde", 0, 1, "abcde", 4, 1, -4); + test("abcde", 0, 1, "abcde", 4, 2, -4); + test("abcde", 0, 1, "abcde", 5, 0, 1); + test("abcde", 0, 1, "abcde", 5, 1, 1); + test("abcde", 0, 1, "abcde", 6, 0, 0); + test("abcde", 0, 1, "abcdefghij", 0, 0, 1); + test("abcde", 0, 1, "abcdefghij", 0, 1, 0); + test("abcde", 0, 1, "abcdefghij", 0, 5, -4); + test("abcde", 0, 1, "abcdefghij", 0, 9, -8); + test("abcde", 0, 1, "abcdefghij", 0, 10, -9); + test("abcde", 0, 1, "abcdefghij", 0, 11, -9); + test("abcde", 0, 1, "abcdefghij", 1, 0, 1); + test("abcde", 0, 1, "abcdefghij", 1, 1, -1); + test("abcde", 0, 1, "abcdefghij", 1, 4, -1); + test("abcde", 0, 1, "abcdefghij", 1, 8, -1); + test("abcde", 0, 1, "abcdefghij", 1, 9, -1); + test("abcde", 0, 1, "abcdefghij", 1, 10, -1); + test("abcde", 0, 1, "abcdefghij", 5, 0, 1); + test("abcde", 0, 1, "abcdefghij", 5, 1, -5); + test("abcde", 0, 1, "abcdefghij", 5, 2, -5); + test("abcde", 0, 1, "abcdefghij", 5, 4, -5); + test("abcde", 0, 1, "abcdefghij", 5, 5, -5); + test("abcde", 0, 1, "abcdefghij", 5, 6, -5); + test("abcde", 0, 1, "abcdefghij", 9, 0, 1); + test("abcde", 0, 1, "abcdefghij", 9, 1, -9); + test("abcde", 0, 1, "abcdefghij", 9, 2, -9); + test("abcde", 0, 1, "abcdefghij", 10, 0, 1); + test("abcde", 0, 1, "abcdefghij", 10, 1, 1); + test("abcde", 0, 1, "abcdefghij", 11, 0, 0); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcde", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 0, 2, "", 0, 0, 2); + test("abcde", 0, 2, "", 0, 1, 2); + test("abcde", 0, 2, "", 1, 0, 0); + test("abcde", 0, 2, "abcde", 0, 0, 2); + test("abcde", 0, 2, "abcde", 0, 1, 1); + test("abcde", 0, 2, "abcde", 0, 2, 0); + test("abcde", 0, 2, "abcde", 0, 4, -2); + test("abcde", 0, 2, "abcde", 0, 5, -3); + test("abcde", 0, 2, "abcde", 0, 6, -3); + test("abcde", 0, 2, "abcde", 1, 0, 2); + test("abcde", 0, 2, "abcde", 1, 1, -1); + test("abcde", 0, 2, "abcde", 1, 2, -1); + test("abcde", 0, 2, "abcde", 1, 3, -1); + test("abcde", 0, 2, "abcde", 1, 4, -1); + test("abcde", 0, 2, "abcde", 1, 5, -1); + test("abcde", 0, 2, "abcde", 2, 0, 2); + test("abcde", 0, 2, "abcde", 2, 1, -2); + test("abcde", 0, 2, "abcde", 2, 2, -2); + test("abcde", 0, 2, "abcde", 2, 3, -2); + test("abcde", 0, 2, "abcde", 2, 4, -2); + test("abcde", 0, 2, "abcde", 4, 0, 2); + test("abcde", 0, 2, "abcde", 4, 1, -4); + test("abcde", 0, 2, "abcde", 4, 2, -4); + test("abcde", 0, 2, "abcde", 5, 0, 2); + test("abcde", 0, 2, "abcde", 5, 1, 2); + test("abcde", 0, 2, "abcde", 6, 0, 0); + test("abcde", 0, 2, "abcdefghij", 0, 0, 2); + test("abcde", 0, 2, "abcdefghij", 0, 1, 1); + test("abcde", 0, 2, "abcdefghij", 0, 5, -3); + test("abcde", 0, 2, "abcdefghij", 0, 9, -7); } -void test4() -{ - test("abcde", 0, 2, "abcdefghij", 0, 10, -8); - test("abcde", 0, 2, "abcdefghij", 0, 11, -8); - test("abcde", 0, 2, "abcdefghij", 1, 0, 2); - test("abcde", 0, 2, "abcdefghij", 1, 1, -1); - test("abcde", 0, 2, "abcdefghij", 1, 4, -1); - test("abcde", 0, 2, "abcdefghij", 1, 8, -1); - test("abcde", 0, 2, "abcdefghij", 1, 9, -1); - test("abcde", 0, 2, "abcdefghij", 1, 10, -1); - test("abcde", 0, 2, "abcdefghij", 5, 0, 2); - test("abcde", 0, 2, "abcdefghij", 5, 1, -5); - test("abcde", 0, 2, "abcdefghij", 5, 2, -5); - test("abcde", 0, 2, "abcdefghij", 5, 4, -5); - test("abcde", 0, 2, "abcdefghij", 5, 5, -5); - test("abcde", 0, 2, "abcdefghij", 5, 6, -5); - test("abcde", 0, 2, "abcdefghij", 9, 0, 2); - test("abcde", 0, 2, "abcdefghij", 9, 1, -9); - test("abcde", 0, 2, "abcdefghij", 9, 2, -9); - test("abcde", 0, 2, "abcdefghij", 10, 0, 2); - test("abcde", 0, 2, "abcdefghij", 10, 1, 2); - test("abcde", 0, 2, "abcdefghij", 11, 0, 0); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 0, 2); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 10, -8); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 19, -17); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 20, -18); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 21, -18); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 0, 2); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 0, 2); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 0, 2); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 20, 0, 2); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 20, 1, 2); - test("abcde", 0, 2, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 0, 4, "", 0, 0, 4); - test("abcde", 0, 4, "", 0, 1, 4); - test("abcde", 0, 4, "", 1, 0, 0); - test("abcde", 0, 4, "abcde", 0, 0, 4); - test("abcde", 0, 4, "abcde", 0, 1, 3); - test("abcde", 0, 4, "abcde", 0, 2, 2); - test("abcde", 0, 4, "abcde", 0, 4, 0); - test("abcde", 0, 4, "abcde", 0, 5, -1); - test("abcde", 0, 4, "abcde", 0, 6, -1); - test("abcde", 0, 4, "abcde", 1, 0, 4); - test("abcde", 0, 4, "abcde", 1, 1, -1); - test("abcde", 0, 4, "abcde", 1, 2, -1); - test("abcde", 0, 4, "abcde", 1, 3, -1); - test("abcde", 0, 4, "abcde", 1, 4, -1); - test("abcde", 0, 4, "abcde", 1, 5, -1); - test("abcde", 0, 4, "abcde", 2, 0, 4); - test("abcde", 0, 4, "abcde", 2, 1, -2); - test("abcde", 0, 4, "abcde", 2, 2, -2); - test("abcde", 0, 4, "abcde", 2, 3, -2); - test("abcde", 0, 4, "abcde", 2, 4, -2); - test("abcde", 0, 4, "abcde", 4, 0, 4); - test("abcde", 0, 4, "abcde", 4, 1, -4); - test("abcde", 0, 4, "abcde", 4, 2, -4); - test("abcde", 0, 4, "abcde", 5, 0, 4); - test("abcde", 0, 4, "abcde", 5, 1, 4); - test("abcde", 0, 4, "abcde", 6, 0, 0); - test("abcde", 0, 4, "abcdefghij", 0, 0, 4); - test("abcde", 0, 4, "abcdefghij", 0, 1, 3); - test("abcde", 0, 4, "abcdefghij", 0, 5, -1); - test("abcde", 0, 4, "abcdefghij", 0, 9, -5); - test("abcde", 0, 4, "abcdefghij", 0, 10, -6); - test("abcde", 0, 4, "abcdefghij", 0, 11, -6); - test("abcde", 0, 4, "abcdefghij", 1, 0, 4); - test("abcde", 0, 4, "abcdefghij", 1, 1, -1); - test("abcde", 0, 4, "abcdefghij", 1, 4, -1); - test("abcde", 0, 4, "abcdefghij", 1, 8, -1); - test("abcde", 0, 4, "abcdefghij", 1, 9, -1); - test("abcde", 0, 4, "abcdefghij", 1, 10, -1); - test("abcde", 0, 4, "abcdefghij", 5, 0, 4); - test("abcde", 0, 4, "abcdefghij", 5, 1, -5); - test("abcde", 0, 4, "abcdefghij", 5, 2, -5); - test("abcde", 0, 4, "abcdefghij", 5, 4, -5); - test("abcde", 0, 4, "abcdefghij", 5, 5, -5); - test("abcde", 0, 4, "abcdefghij", 5, 6, -5); - test("abcde", 0, 4, "abcdefghij", 9, 0, 4); - test("abcde", 0, 4, "abcdefghij", 9, 1, -9); - test("abcde", 0, 4, "abcdefghij", 9, 2, -9); - test("abcde", 0, 4, "abcdefghij", 10, 0, 4); - test("abcde", 0, 4, "abcdefghij", 10, 1, 4); - test("abcde", 0, 4, "abcdefghij", 11, 0, 0); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 0, 4); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 1, 3); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 10, -6); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 19, -15); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 20, -16); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 21, -16); +void test4() { + test("abcde", 0, 2, "abcdefghij", 0, 10, -8); + test("abcde", 0, 2, "abcdefghij", 0, 11, -8); + test("abcde", 0, 2, "abcdefghij", 1, 0, 2); + test("abcde", 0, 2, "abcdefghij", 1, 1, -1); + test("abcde", 0, 2, "abcdefghij", 1, 4, -1); + test("abcde", 0, 2, "abcdefghij", 1, 8, -1); + test("abcde", 0, 2, "abcdefghij", 1, 9, -1); + test("abcde", 0, 2, "abcdefghij", 1, 10, -1); + test("abcde", 0, 2, "abcdefghij", 5, 0, 2); + test("abcde", 0, 2, "abcdefghij", 5, 1, -5); + test("abcde", 0, 2, "abcdefghij", 5, 2, -5); + test("abcde", 0, 2, "abcdefghij", 5, 4, -5); + test("abcde", 0, 2, "abcdefghij", 5, 5, -5); + test("abcde", 0, 2, "abcdefghij", 5, 6, -5); + test("abcde", 0, 2, "abcdefghij", 9, 0, 2); + test("abcde", 0, 2, "abcdefghij", 9, 1, -9); + test("abcde", 0, 2, "abcdefghij", 9, 2, -9); + test("abcde", 0, 2, "abcdefghij", 10, 0, 2); + test("abcde", 0, 2, "abcdefghij", 10, 1, 2); + test("abcde", 0, 2, "abcdefghij", 11, 0, 0); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 0, 2); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 10, -8); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 19, -17); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 20, -18); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 0, 21, -18); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 0, 2); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 0, 2); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 0, 2); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 20, 0, 2); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 20, 1, 2); + test("abcde", 0, 2, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 0, 4, "", 0, 0, 4); + test("abcde", 0, 4, "", 0, 1, 4); + test("abcde", 0, 4, "", 1, 0, 0); + test("abcde", 0, 4, "abcde", 0, 0, 4); + test("abcde", 0, 4, "abcde", 0, 1, 3); + test("abcde", 0, 4, "abcde", 0, 2, 2); + test("abcde", 0, 4, "abcde", 0, 4, 0); + test("abcde", 0, 4, "abcde", 0, 5, -1); + test("abcde", 0, 4, "abcde", 0, 6, -1); + test("abcde", 0, 4, "abcde", 1, 0, 4); + test("abcde", 0, 4, "abcde", 1, 1, -1); + test("abcde", 0, 4, "abcde", 1, 2, -1); + test("abcde", 0, 4, "abcde", 1, 3, -1); + test("abcde", 0, 4, "abcde", 1, 4, -1); + test("abcde", 0, 4, "abcde", 1, 5, -1); + test("abcde", 0, 4, "abcde", 2, 0, 4); + test("abcde", 0, 4, "abcde", 2, 1, -2); + test("abcde", 0, 4, "abcde", 2, 2, -2); + test("abcde", 0, 4, "abcde", 2, 3, -2); + test("abcde", 0, 4, "abcde", 2, 4, -2); + test("abcde", 0, 4, "abcde", 4, 0, 4); + test("abcde", 0, 4, "abcde", 4, 1, -4); + test("abcde", 0, 4, "abcde", 4, 2, -4); + test("abcde", 0, 4, "abcde", 5, 0, 4); + test("abcde", 0, 4, "abcde", 5, 1, 4); + test("abcde", 0, 4, "abcde", 6, 0, 0); + test("abcde", 0, 4, "abcdefghij", 0, 0, 4); + test("abcde", 0, 4, "abcdefghij", 0, 1, 3); + test("abcde", 0, 4, "abcdefghij", 0, 5, -1); + test("abcde", 0, 4, "abcdefghij", 0, 9, -5); + test("abcde", 0, 4, "abcdefghij", 0, 10, -6); + test("abcde", 0, 4, "abcdefghij", 0, 11, -6); + test("abcde", 0, 4, "abcdefghij", 1, 0, 4); + test("abcde", 0, 4, "abcdefghij", 1, 1, -1); + test("abcde", 0, 4, "abcdefghij", 1, 4, -1); + test("abcde", 0, 4, "abcdefghij", 1, 8, -1); + test("abcde", 0, 4, "abcdefghij", 1, 9, -1); + test("abcde", 0, 4, "abcdefghij", 1, 10, -1); + test("abcde", 0, 4, "abcdefghij", 5, 0, 4); + test("abcde", 0, 4, "abcdefghij", 5, 1, -5); + test("abcde", 0, 4, "abcdefghij", 5, 2, -5); + test("abcde", 0, 4, "abcdefghij", 5, 4, -5); + test("abcde", 0, 4, "abcdefghij", 5, 5, -5); + test("abcde", 0, 4, "abcdefghij", 5, 6, -5); + test("abcde", 0, 4, "abcdefghij", 9, 0, 4); + test("abcde", 0, 4, "abcdefghij", 9, 1, -9); + test("abcde", 0, 4, "abcdefghij", 9, 2, -9); + test("abcde", 0, 4, "abcdefghij", 10, 0, 4); + test("abcde", 0, 4, "abcdefghij", 10, 1, 4); + test("abcde", 0, 4, "abcdefghij", 11, 0, 0); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 0, 4); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 1, 3); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 10, -6); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 19, -15); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 20, -16); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 0, 21, -16); } -void test5() -{ - test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 0, 4); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 0, 4); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 0, 4); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 20, 0, 4); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 20, 1, 4); - test("abcde", 0, 4, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 0, 5, "", 0, 0, 5); - test("abcde", 0, 5, "", 0, 1, 5); - test("abcde", 0, 5, "", 1, 0, 0); - test("abcde", 0, 5, "abcde", 0, 0, 5); - test("abcde", 0, 5, "abcde", 0, 1, 4); - test("abcde", 0, 5, "abcde", 0, 2, 3); - test("abcde", 0, 5, "abcde", 0, 4, 1); - test("abcde", 0, 5, "abcde", 0, 5, 0); - test("abcde", 0, 5, "abcde", 0, 6, 0); - test("abcde", 0, 5, "abcde", 1, 0, 5); - test("abcde", 0, 5, "abcde", 1, 1, -1); - test("abcde", 0, 5, "abcde", 1, 2, -1); - test("abcde", 0, 5, "abcde", 1, 3, -1); - test("abcde", 0, 5, "abcde", 1, 4, -1); - test("abcde", 0, 5, "abcde", 1, 5, -1); - test("abcde", 0, 5, "abcde", 2, 0, 5); - test("abcde", 0, 5, "abcde", 2, 1, -2); - test("abcde", 0, 5, "abcde", 2, 2, -2); - test("abcde", 0, 5, "abcde", 2, 3, -2); - test("abcde", 0, 5, "abcde", 2, 4, -2); - test("abcde", 0, 5, "abcde", 4, 0, 5); - test("abcde", 0, 5, "abcde", 4, 1, -4); - test("abcde", 0, 5, "abcde", 4, 2, -4); - test("abcde", 0, 5, "abcde", 5, 0, 5); - test("abcde", 0, 5, "abcde", 5, 1, 5); - test("abcde", 0, 5, "abcde", 6, 0, 0); - test("abcde", 0, 5, "abcdefghij", 0, 0, 5); - test("abcde", 0, 5, "abcdefghij", 0, 1, 4); - test("abcde", 0, 5, "abcdefghij", 0, 5, 0); - test("abcde", 0, 5, "abcdefghij", 0, 9, -4); - test("abcde", 0, 5, "abcdefghij", 0, 10, -5); - test("abcde", 0, 5, "abcdefghij", 0, 11, -5); - test("abcde", 0, 5, "abcdefghij", 1, 0, 5); - test("abcde", 0, 5, "abcdefghij", 1, 1, -1); - test("abcde", 0, 5, "abcdefghij", 1, 4, -1); - test("abcde", 0, 5, "abcdefghij", 1, 8, -1); - test("abcde", 0, 5, "abcdefghij", 1, 9, -1); - test("abcde", 0, 5, "abcdefghij", 1, 10, -1); - test("abcde", 0, 5, "abcdefghij", 5, 0, 5); - test("abcde", 0, 5, "abcdefghij", 5, 1, -5); - test("abcde", 0, 5, "abcdefghij", 5, 2, -5); - test("abcde", 0, 5, "abcdefghij", 5, 4, -5); - test("abcde", 0, 5, "abcdefghij", 5, 5, -5); - test("abcde", 0, 5, "abcdefghij", 5, 6, -5); - test("abcde", 0, 5, "abcdefghij", 9, 0, 5); - test("abcde", 0, 5, "abcdefghij", 9, 1, -9); - test("abcde", 0, 5, "abcdefghij", 9, 2, -9); - test("abcde", 0, 5, "abcdefghij", 10, 0, 5); - test("abcde", 0, 5, "abcdefghij", 10, 1, 5); - test("abcde", 0, 5, "abcdefghij", 11, 0, 0); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 0, 5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 1, 4); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 10, -5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 19, -14); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 20, -15); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 21, -15); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 0, 5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 0, 5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 0, 5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 20, 0, 5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 20, 1, 5); - test("abcde", 0, 5, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 0, 6, "", 0, 0, 5); - test("abcde", 0, 6, "", 0, 1, 5); - test("abcde", 0, 6, "", 1, 0, 0); - test("abcde", 0, 6, "abcde", 0, 0, 5); - test("abcde", 0, 6, "abcde", 0, 1, 4); - test("abcde", 0, 6, "abcde", 0, 2, 3); - test("abcde", 0, 6, "abcde", 0, 4, 1); - test("abcde", 0, 6, "abcde", 0, 5, 0); +void test5() { + test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 0, 4); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 0, 4); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 0, 4); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 20, 0, 4); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 20, 1, 4); + test("abcde", 0, 4, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 0, 5, "", 0, 0, 5); + test("abcde", 0, 5, "", 0, 1, 5); + test("abcde", 0, 5, "", 1, 0, 0); + test("abcde", 0, 5, "abcde", 0, 0, 5); + test("abcde", 0, 5, "abcde", 0, 1, 4); + test("abcde", 0, 5, "abcde", 0, 2, 3); + test("abcde", 0, 5, "abcde", 0, 4, 1); + test("abcde", 0, 5, "abcde", 0, 5, 0); + test("abcde", 0, 5, "abcde", 0, 6, 0); + test("abcde", 0, 5, "abcde", 1, 0, 5); + test("abcde", 0, 5, "abcde", 1, 1, -1); + test("abcde", 0, 5, "abcde", 1, 2, -1); + test("abcde", 0, 5, "abcde", 1, 3, -1); + test("abcde", 0, 5, "abcde", 1, 4, -1); + test("abcde", 0, 5, "abcde", 1, 5, -1); + test("abcde", 0, 5, "abcde", 2, 0, 5); + test("abcde", 0, 5, "abcde", 2, 1, -2); + test("abcde", 0, 5, "abcde", 2, 2, -2); + test("abcde", 0, 5, "abcde", 2, 3, -2); + test("abcde", 0, 5, "abcde", 2, 4, -2); + test("abcde", 0, 5, "abcde", 4, 0, 5); + test("abcde", 0, 5, "abcde", 4, 1, -4); + test("abcde", 0, 5, "abcde", 4, 2, -4); + test("abcde", 0, 5, "abcde", 5, 0, 5); + test("abcde", 0, 5, "abcde", 5, 1, 5); + test("abcde", 0, 5, "abcde", 6, 0, 0); + test("abcde", 0, 5, "abcdefghij", 0, 0, 5); + test("abcde", 0, 5, "abcdefghij", 0, 1, 4); + test("abcde", 0, 5, "abcdefghij", 0, 5, 0); + test("abcde", 0, 5, "abcdefghij", 0, 9, -4); + test("abcde", 0, 5, "abcdefghij", 0, 10, -5); + test("abcde", 0, 5, "abcdefghij", 0, 11, -5); + test("abcde", 0, 5, "abcdefghij", 1, 0, 5); + test("abcde", 0, 5, "abcdefghij", 1, 1, -1); + test("abcde", 0, 5, "abcdefghij", 1, 4, -1); + test("abcde", 0, 5, "abcdefghij", 1, 8, -1); + test("abcde", 0, 5, "abcdefghij", 1, 9, -1); + test("abcde", 0, 5, "abcdefghij", 1, 10, -1); + test("abcde", 0, 5, "abcdefghij", 5, 0, 5); + test("abcde", 0, 5, "abcdefghij", 5, 1, -5); + test("abcde", 0, 5, "abcdefghij", 5, 2, -5); + test("abcde", 0, 5, "abcdefghij", 5, 4, -5); + test("abcde", 0, 5, "abcdefghij", 5, 5, -5); + test("abcde", 0, 5, "abcdefghij", 5, 6, -5); + test("abcde", 0, 5, "abcdefghij", 9, 0, 5); + test("abcde", 0, 5, "abcdefghij", 9, 1, -9); + test("abcde", 0, 5, "abcdefghij", 9, 2, -9); + test("abcde", 0, 5, "abcdefghij", 10, 0, 5); + test("abcde", 0, 5, "abcdefghij", 10, 1, 5); + test("abcde", 0, 5, "abcdefghij", 11, 0, 0); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 0, 5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 1, 4); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 10, -5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 19, -14); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 20, -15); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 0, 21, -15); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 0, 5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 0, 5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 0, 5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 20, 0, 5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 20, 1, 5); + test("abcde", 0, 5, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 0, 6, "", 0, 0, 5); + test("abcde", 0, 6, "", 0, 1, 5); + test("abcde", 0, 6, "", 1, 0, 0); + test("abcde", 0, 6, "abcde", 0, 0, 5); + test("abcde", 0, 6, "abcde", 0, 1, 4); + test("abcde", 0, 6, "abcde", 0, 2, 3); + test("abcde", 0, 6, "abcde", 0, 4, 1); + test("abcde", 0, 6, "abcde", 0, 5, 0); } -void test6() -{ - test("abcde", 0, 6, "abcde", 0, 6, 0); - test("abcde", 0, 6, "abcde", 1, 0, 5); - test("abcde", 0, 6, "abcde", 1, 1, -1); - test("abcde", 0, 6, "abcde", 1, 2, -1); - test("abcde", 0, 6, "abcde", 1, 3, -1); - test("abcde", 0, 6, "abcde", 1, 4, -1); - test("abcde", 0, 6, "abcde", 1, 5, -1); - test("abcde", 0, 6, "abcde", 2, 0, 5); - test("abcde", 0, 6, "abcde", 2, 1, -2); - test("abcde", 0, 6, "abcde", 2, 2, -2); - test("abcde", 0, 6, "abcde", 2, 3, -2); - test("abcde", 0, 6, "abcde", 2, 4, -2); - test("abcde", 0, 6, "abcde", 4, 0, 5); - test("abcde", 0, 6, "abcde", 4, 1, -4); - test("abcde", 0, 6, "abcde", 4, 2, -4); - test("abcde", 0, 6, "abcde", 5, 0, 5); - test("abcde", 0, 6, "abcde", 5, 1, 5); - test("abcde", 0, 6, "abcde", 6, 0, 0); - test("abcde", 0, 6, "abcdefghij", 0, 0, 5); - test("abcde", 0, 6, "abcdefghij", 0, 1, 4); - test("abcde", 0, 6, "abcdefghij", 0, 5, 0); - test("abcde", 0, 6, "abcdefghij", 0, 9, -4); - test("abcde", 0, 6, "abcdefghij", 0, 10, -5); - test("abcde", 0, 6, "abcdefghij", 0, 11, -5); - test("abcde", 0, 6, "abcdefghij", 1, 0, 5); - test("abcde", 0, 6, "abcdefghij", 1, 1, -1); - test("abcde", 0, 6, "abcdefghij", 1, 4, -1); - test("abcde", 0, 6, "abcdefghij", 1, 8, -1); - test("abcde", 0, 6, "abcdefghij", 1, 9, -1); - test("abcde", 0, 6, "abcdefghij", 1, 10, -1); - test("abcde", 0, 6, "abcdefghij", 5, 0, 5); - test("abcde", 0, 6, "abcdefghij", 5, 1, -5); - test("abcde", 0, 6, "abcdefghij", 5, 2, -5); - test("abcde", 0, 6, "abcdefghij", 5, 4, -5); - test("abcde", 0, 6, "abcdefghij", 5, 5, -5); - test("abcde", 0, 6, "abcdefghij", 5, 6, -5); - test("abcde", 0, 6, "abcdefghij", 9, 0, 5); - test("abcde", 0, 6, "abcdefghij", 9, 1, -9); - test("abcde", 0, 6, "abcdefghij", 9, 2, -9); - test("abcde", 0, 6, "abcdefghij", 10, 0, 5); - test("abcde", 0, 6, "abcdefghij", 10, 1, 5); - test("abcde", 0, 6, "abcdefghij", 11, 0, 0); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 0, 5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 1, 4); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 10, -5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 19, -14); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 20, -15); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 21, -15); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 0, 5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 0, 5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 0, 5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 20, 0, 5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 20, 1, 5); - test("abcde", 0, 6, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 1, 0, "", 0, 0, 0); - test("abcde", 1, 0, "", 0, 1, 0); - test("abcde", 1, 0, "", 1, 0, 0); - test("abcde", 1, 0, "abcde", 0, 0, 0); - test("abcde", 1, 0, "abcde", 0, 1, -1); - test("abcde", 1, 0, "abcde", 0, 2, -2); - test("abcde", 1, 0, "abcde", 0, 4, -4); - test("abcde", 1, 0, "abcde", 0, 5, -5); - test("abcde", 1, 0, "abcde", 0, 6, -5); - test("abcde", 1, 0, "abcde", 1, 0, 0); - test("abcde", 1, 0, "abcde", 1, 1, -1); - test("abcde", 1, 0, "abcde", 1, 2, -2); - test("abcde", 1, 0, "abcde", 1, 3, -3); - test("abcde", 1, 0, "abcde", 1, 4, -4); - test("abcde", 1, 0, "abcde", 1, 5, -4); - test("abcde", 1, 0, "abcde", 2, 0, 0); - test("abcde", 1, 0, "abcde", 2, 1, -1); - test("abcde", 1, 0, "abcde", 2, 2, -2); - test("abcde", 1, 0, "abcde", 2, 3, -3); - test("abcde", 1, 0, "abcde", 2, 4, -3); - test("abcde", 1, 0, "abcde", 4, 0, 0); - test("abcde", 1, 0, "abcde", 4, 1, -1); - test("abcde", 1, 0, "abcde", 4, 2, -1); - test("abcde", 1, 0, "abcde", 5, 0, 0); - test("abcde", 1, 0, "abcde", 5, 1, 0); - test("abcde", 1, 0, "abcde", 6, 0, 0); - test("abcde", 1, 0, "abcdefghij", 0, 0, 0); - test("abcde", 1, 0, "abcdefghij", 0, 1, -1); - test("abcde", 1, 0, "abcdefghij", 0, 5, -5); - test("abcde", 1, 0, "abcdefghij", 0, 9, -9); - test("abcde", 1, 0, "abcdefghij", 0, 10, -10); - test("abcde", 1, 0, "abcdefghij", 0, 11, -10); - test("abcde", 1, 0, "abcdefghij", 1, 0, 0); - test("abcde", 1, 0, "abcdefghij", 1, 1, -1); +void test6() { + test("abcde", 0, 6, "abcde", 0, 6, 0); + test("abcde", 0, 6, "abcde", 1, 0, 5); + test("abcde", 0, 6, "abcde", 1, 1, -1); + test("abcde", 0, 6, "abcde", 1, 2, -1); + test("abcde", 0, 6, "abcde", 1, 3, -1); + test("abcde", 0, 6, "abcde", 1, 4, -1); + test("abcde", 0, 6, "abcde", 1, 5, -1); + test("abcde", 0, 6, "abcde", 2, 0, 5); + test("abcde", 0, 6, "abcde", 2, 1, -2); + test("abcde", 0, 6, "abcde", 2, 2, -2); + test("abcde", 0, 6, "abcde", 2, 3, -2); + test("abcde", 0, 6, "abcde", 2, 4, -2); + test("abcde", 0, 6, "abcde", 4, 0, 5); + test("abcde", 0, 6, "abcde", 4, 1, -4); + test("abcde", 0, 6, "abcde", 4, 2, -4); + test("abcde", 0, 6, "abcde", 5, 0, 5); + test("abcde", 0, 6, "abcde", 5, 1, 5); + test("abcde", 0, 6, "abcde", 6, 0, 0); + test("abcde", 0, 6, "abcdefghij", 0, 0, 5); + test("abcde", 0, 6, "abcdefghij", 0, 1, 4); + test("abcde", 0, 6, "abcdefghij", 0, 5, 0); + test("abcde", 0, 6, "abcdefghij", 0, 9, -4); + test("abcde", 0, 6, "abcdefghij", 0, 10, -5); + test("abcde", 0, 6, "abcdefghij", 0, 11, -5); + test("abcde", 0, 6, "abcdefghij", 1, 0, 5); + test("abcde", 0, 6, "abcdefghij", 1, 1, -1); + test("abcde", 0, 6, "abcdefghij", 1, 4, -1); + test("abcde", 0, 6, "abcdefghij", 1, 8, -1); + test("abcde", 0, 6, "abcdefghij", 1, 9, -1); + test("abcde", 0, 6, "abcdefghij", 1, 10, -1); + test("abcde", 0, 6, "abcdefghij", 5, 0, 5); + test("abcde", 0, 6, "abcdefghij", 5, 1, -5); + test("abcde", 0, 6, "abcdefghij", 5, 2, -5); + test("abcde", 0, 6, "abcdefghij", 5, 4, -5); + test("abcde", 0, 6, "abcdefghij", 5, 5, -5); + test("abcde", 0, 6, "abcdefghij", 5, 6, -5); + test("abcde", 0, 6, "abcdefghij", 9, 0, 5); + test("abcde", 0, 6, "abcdefghij", 9, 1, -9); + test("abcde", 0, 6, "abcdefghij", 9, 2, -9); + test("abcde", 0, 6, "abcdefghij", 10, 0, 5); + test("abcde", 0, 6, "abcdefghij", 10, 1, 5); + test("abcde", 0, 6, "abcdefghij", 11, 0, 0); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 0, 5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 1, 4); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 10, -5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 19, -14); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 20, -15); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 0, 21, -15); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 0, 5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 0, 5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 0, 5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 20, 0, 5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 20, 1, 5); + test("abcde", 0, 6, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 1, 0, "", 0, 0, 0); + test("abcde", 1, 0, "", 0, 1, 0); + test("abcde", 1, 0, "", 1, 0, 0); + test("abcde", 1, 0, "abcde", 0, 0, 0); + test("abcde", 1, 0, "abcde", 0, 1, -1); + test("abcde", 1, 0, "abcde", 0, 2, -2); + test("abcde", 1, 0, "abcde", 0, 4, -4); + test("abcde", 1, 0, "abcde", 0, 5, -5); + test("abcde", 1, 0, "abcde", 0, 6, -5); + test("abcde", 1, 0, "abcde", 1, 0, 0); + test("abcde", 1, 0, "abcde", 1, 1, -1); + test("abcde", 1, 0, "abcde", 1, 2, -2); + test("abcde", 1, 0, "abcde", 1, 3, -3); + test("abcde", 1, 0, "abcde", 1, 4, -4); + test("abcde", 1, 0, "abcde", 1, 5, -4); + test("abcde", 1, 0, "abcde", 2, 0, 0); + test("abcde", 1, 0, "abcde", 2, 1, -1); + test("abcde", 1, 0, "abcde", 2, 2, -2); + test("abcde", 1, 0, "abcde", 2, 3, -3); + test("abcde", 1, 0, "abcde", 2, 4, -3); + test("abcde", 1, 0, "abcde", 4, 0, 0); + test("abcde", 1, 0, "abcde", 4, 1, -1); + test("abcde", 1, 0, "abcde", 4, 2, -1); + test("abcde", 1, 0, "abcde", 5, 0, 0); + test("abcde", 1, 0, "abcde", 5, 1, 0); + test("abcde", 1, 0, "abcde", 6, 0, 0); + test("abcde", 1, 0, "abcdefghij", 0, 0, 0); + test("abcde", 1, 0, "abcdefghij", 0, 1, -1); + test("abcde", 1, 0, "abcdefghij", 0, 5, -5); + test("abcde", 1, 0, "abcdefghij", 0, 9, -9); + test("abcde", 1, 0, "abcdefghij", 0, 10, -10); + test("abcde", 1, 0, "abcdefghij", 0, 11, -10); + test("abcde", 1, 0, "abcdefghij", 1, 0, 0); + test("abcde", 1, 0, "abcdefghij", 1, 1, -1); } -void test7() -{ - test("abcde", 1, 0, "abcdefghij", 1, 4, -4); - test("abcde", 1, 0, "abcdefghij", 1, 8, -8); - test("abcde", 1, 0, "abcdefghij", 1, 9, -9); - test("abcde", 1, 0, "abcdefghij", 1, 10, -9); - test("abcde", 1, 0, "abcdefghij", 5, 0, 0); - test("abcde", 1, 0, "abcdefghij", 5, 1, -1); - test("abcde", 1, 0, "abcdefghij", 5, 2, -2); - test("abcde", 1, 0, "abcdefghij", 5, 4, -4); - test("abcde", 1, 0, "abcdefghij", 5, 5, -5); - test("abcde", 1, 0, "abcdefghij", 5, 6, -5); - test("abcde", 1, 0, "abcdefghij", 9, 0, 0); - test("abcde", 1, 0, "abcdefghij", 9, 1, -1); - test("abcde", 1, 0, "abcdefghij", 9, 2, -1); - test("abcde", 1, 0, "abcdefghij", 10, 0, 0); - test("abcde", 1, 0, "abcdefghij", 10, 1, 0); - test("abcde", 1, 0, "abcdefghij", 11, 0, 0); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcde", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 1, 1, "", 0, 0, 1); - test("abcde", 1, 1, "", 0, 1, 1); - test("abcde", 1, 1, "", 1, 0, 0); - test("abcde", 1, 1, "abcde", 0, 0, 1); - test("abcde", 1, 1, "abcde", 0, 1, 1); - test("abcde", 1, 1, "abcde", 0, 2, 1); - test("abcde", 1, 1, "abcde", 0, 4, 1); - test("abcde", 1, 1, "abcde", 0, 5, 1); - test("abcde", 1, 1, "abcde", 0, 6, 1); - test("abcde", 1, 1, "abcde", 1, 0, 1); - test("abcde", 1, 1, "abcde", 1, 1, 0); - test("abcde", 1, 1, "abcde", 1, 2, -1); - test("abcde", 1, 1, "abcde", 1, 3, -2); - test("abcde", 1, 1, "abcde", 1, 4, -3); - test("abcde", 1, 1, "abcde", 1, 5, -3); - test("abcde", 1, 1, "abcde", 2, 0, 1); - test("abcde", 1, 1, "abcde", 2, 1, -1); - test("abcde", 1, 1, "abcde", 2, 2, -1); - test("abcde", 1, 1, "abcde", 2, 3, -1); - test("abcde", 1, 1, "abcde", 2, 4, -1); - test("abcde", 1, 1, "abcde", 4, 0, 1); - test("abcde", 1, 1, "abcde", 4, 1, -3); - test("abcde", 1, 1, "abcde", 4, 2, -3); - test("abcde", 1, 1, "abcde", 5, 0, 1); - test("abcde", 1, 1, "abcde", 5, 1, 1); - test("abcde", 1, 1, "abcde", 6, 0, 0); - test("abcde", 1, 1, "abcdefghij", 0, 0, 1); - test("abcde", 1, 1, "abcdefghij", 0, 1, 1); - test("abcde", 1, 1, "abcdefghij", 0, 5, 1); - test("abcde", 1, 1, "abcdefghij", 0, 9, 1); - test("abcde", 1, 1, "abcdefghij", 0, 10, 1); - test("abcde", 1, 1, "abcdefghij", 0, 11, 1); - test("abcde", 1, 1, "abcdefghij", 1, 0, 1); - test("abcde", 1, 1, "abcdefghij", 1, 1, 0); - test("abcde", 1, 1, "abcdefghij", 1, 4, -3); - test("abcde", 1, 1, "abcdefghij", 1, 8, -7); - test("abcde", 1, 1, "abcdefghij", 1, 9, -8); - test("abcde", 1, 1, "abcdefghij", 1, 10, -8); - test("abcde", 1, 1, "abcdefghij", 5, 0, 1); - test("abcde", 1, 1, "abcdefghij", 5, 1, -4); - test("abcde", 1, 1, "abcdefghij", 5, 2, -4); - test("abcde", 1, 1, "abcdefghij", 5, 4, -4); - test("abcde", 1, 1, "abcdefghij", 5, 5, -4); - test("abcde", 1, 1, "abcdefghij", 5, 6, -4); - test("abcde", 1, 1, "abcdefghij", 9, 0, 1); - test("abcde", 1, 1, "abcdefghij", 9, 1, -8); - test("abcde", 1, 1, "abcdefghij", 9, 2, -8); - test("abcde", 1, 1, "abcdefghij", 10, 0, 1); - test("abcde", 1, 1, "abcdefghij", 10, 1, 1); - test("abcde", 1, 1, "abcdefghij", 11, 0, 0); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17); +void test7() { + test("abcde", 1, 0, "abcdefghij", 1, 4, -4); + test("abcde", 1, 0, "abcdefghij", 1, 8, -8); + test("abcde", 1, 0, "abcdefghij", 1, 9, -9); + test("abcde", 1, 0, "abcdefghij", 1, 10, -9); + test("abcde", 1, 0, "abcdefghij", 5, 0, 0); + test("abcde", 1, 0, "abcdefghij", 5, 1, -1); + test("abcde", 1, 0, "abcdefghij", 5, 2, -2); + test("abcde", 1, 0, "abcdefghij", 5, 4, -4); + test("abcde", 1, 0, "abcdefghij", 5, 5, -5); + test("abcde", 1, 0, "abcdefghij", 5, 6, -5); + test("abcde", 1, 0, "abcdefghij", 9, 0, 0); + test("abcde", 1, 0, "abcdefghij", 9, 1, -1); + test("abcde", 1, 0, "abcdefghij", 9, 2, -1); + test("abcde", 1, 0, "abcdefghij", 10, 0, 0); + test("abcde", 1, 0, "abcdefghij", 10, 1, 0); + test("abcde", 1, 0, "abcdefghij", 11, 0, 0); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcde", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 1, 1, "", 0, 0, 1); + test("abcde", 1, 1, "", 0, 1, 1); + test("abcde", 1, 1, "", 1, 0, 0); + test("abcde", 1, 1, "abcde", 0, 0, 1); + test("abcde", 1, 1, "abcde", 0, 1, 1); + test("abcde", 1, 1, "abcde", 0, 2, 1); + test("abcde", 1, 1, "abcde", 0, 4, 1); + test("abcde", 1, 1, "abcde", 0, 5, 1); + test("abcde", 1, 1, "abcde", 0, 6, 1); + test("abcde", 1, 1, "abcde", 1, 0, 1); + test("abcde", 1, 1, "abcde", 1, 1, 0); + test("abcde", 1, 1, "abcde", 1, 2, -1); + test("abcde", 1, 1, "abcde", 1, 3, -2); + test("abcde", 1, 1, "abcde", 1, 4, -3); + test("abcde", 1, 1, "abcde", 1, 5, -3); + test("abcde", 1, 1, "abcde", 2, 0, 1); + test("abcde", 1, 1, "abcde", 2, 1, -1); + test("abcde", 1, 1, "abcde", 2, 2, -1); + test("abcde", 1, 1, "abcde", 2, 3, -1); + test("abcde", 1, 1, "abcde", 2, 4, -1); + test("abcde", 1, 1, "abcde", 4, 0, 1); + test("abcde", 1, 1, "abcde", 4, 1, -3); + test("abcde", 1, 1, "abcde", 4, 2, -3); + test("abcde", 1, 1, "abcde", 5, 0, 1); + test("abcde", 1, 1, "abcde", 5, 1, 1); + test("abcde", 1, 1, "abcde", 6, 0, 0); + test("abcde", 1, 1, "abcdefghij", 0, 0, 1); + test("abcde", 1, 1, "abcdefghij", 0, 1, 1); + test("abcde", 1, 1, "abcdefghij", 0, 5, 1); + test("abcde", 1, 1, "abcdefghij", 0, 9, 1); + test("abcde", 1, 1, "abcdefghij", 0, 10, 1); + test("abcde", 1, 1, "abcdefghij", 0, 11, 1); + test("abcde", 1, 1, "abcdefghij", 1, 0, 1); + test("abcde", 1, 1, "abcdefghij", 1, 1, 0); + test("abcde", 1, 1, "abcdefghij", 1, 4, -3); + test("abcde", 1, 1, "abcdefghij", 1, 8, -7); + test("abcde", 1, 1, "abcdefghij", 1, 9, -8); + test("abcde", 1, 1, "abcdefghij", 1, 10, -8); + test("abcde", 1, 1, "abcdefghij", 5, 0, 1); + test("abcde", 1, 1, "abcdefghij", 5, 1, -4); + test("abcde", 1, 1, "abcdefghij", 5, 2, -4); + test("abcde", 1, 1, "abcdefghij", 5, 4, -4); + test("abcde", 1, 1, "abcdefghij", 5, 5, -4); + test("abcde", 1, 1, "abcdefghij", 5, 6, -4); + test("abcde", 1, 1, "abcdefghij", 9, 0, 1); + test("abcde", 1, 1, "abcdefghij", 9, 1, -8); + test("abcde", 1, 1, "abcdefghij", 9, 2, -8); + test("abcde", 1, 1, "abcdefghij", 10, 0, 1); + test("abcde", 1, 1, "abcdefghij", 10, 1, 1); + test("abcde", 1, 1, "abcdefghij", 11, 0, 0); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17); } -void test8() -{ - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcde", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 1, 2, "", 0, 0, 2); - test("abcde", 1, 2, "", 0, 1, 2); - test("abcde", 1, 2, "", 1, 0, 0); - test("abcde", 1, 2, "abcde", 0, 0, 2); - test("abcde", 1, 2, "abcde", 0, 1, 1); - test("abcde", 1, 2, "abcde", 0, 2, 1); - test("abcde", 1, 2, "abcde", 0, 4, 1); - test("abcde", 1, 2, "abcde", 0, 5, 1); - test("abcde", 1, 2, "abcde", 0, 6, 1); - test("abcde", 1, 2, "abcde", 1, 0, 2); - test("abcde", 1, 2, "abcde", 1, 1, 1); - test("abcde", 1, 2, "abcde", 1, 2, 0); - test("abcde", 1, 2, "abcde", 1, 3, -1); - test("abcde", 1, 2, "abcde", 1, 4, -2); - test("abcde", 1, 2, "abcde", 1, 5, -2); - test("abcde", 1, 2, "abcde", 2, 0, 2); - test("abcde", 1, 2, "abcde", 2, 1, -1); - test("abcde", 1, 2, "abcde", 2, 2, -1); - test("abcde", 1, 2, "abcde", 2, 3, -1); - test("abcde", 1, 2, "abcde", 2, 4, -1); - test("abcde", 1, 2, "abcde", 4, 0, 2); - test("abcde", 1, 2, "abcde", 4, 1, -3); - test("abcde", 1, 2, "abcde", 4, 2, -3); - test("abcde", 1, 2, "abcde", 5, 0, 2); - test("abcde", 1, 2, "abcde", 5, 1, 2); - test("abcde", 1, 2, "abcde", 6, 0, 0); - test("abcde", 1, 2, "abcdefghij", 0, 0, 2); - test("abcde", 1, 2, "abcdefghij", 0, 1, 1); - test("abcde", 1, 2, "abcdefghij", 0, 5, 1); - test("abcde", 1, 2, "abcdefghij", 0, 9, 1); - test("abcde", 1, 2, "abcdefghij", 0, 10, 1); - test("abcde", 1, 2, "abcdefghij", 0, 11, 1); - test("abcde", 1, 2, "abcdefghij", 1, 0, 2); - test("abcde", 1, 2, "abcdefghij", 1, 1, 1); - test("abcde", 1, 2, "abcdefghij", 1, 4, -2); - test("abcde", 1, 2, "abcdefghij", 1, 8, -6); - test("abcde", 1, 2, "abcdefghij", 1, 9, -7); - test("abcde", 1, 2, "abcdefghij", 1, 10, -7); - test("abcde", 1, 2, "abcdefghij", 5, 0, 2); - test("abcde", 1, 2, "abcdefghij", 5, 1, -4); - test("abcde", 1, 2, "abcdefghij", 5, 2, -4); - test("abcde", 1, 2, "abcdefghij", 5, 4, -4); - test("abcde", 1, 2, "abcdefghij", 5, 5, -4); - test("abcde", 1, 2, "abcdefghij", 5, 6, -4); - test("abcde", 1, 2, "abcdefghij", 9, 0, 2); - test("abcde", 1, 2, "abcdefghij", 9, 1, -8); - test("abcde", 1, 2, "abcdefghij", 9, 2, -8); - test("abcde", 1, 2, "abcdefghij", 10, 0, 2); - test("abcde", 1, 2, "abcdefghij", 10, 1, 2); - test("abcde", 1, 2, "abcdefghij", 11, 0, 0); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 0, 2); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 0, 2); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 1, 1); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 9, -7); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 18, -16); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 19, -17); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 20, -17); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 0, 2); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 0, 2); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 20, 0, 2); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 20, 1, 2); - test("abcde", 1, 2, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 1, 3, "", 0, 0, 3); - test("abcde", 1, 3, "", 0, 1, 3); - test("abcde", 1, 3, "", 1, 0, 0); - test("abcde", 1, 3, "abcde", 0, 0, 3); - test("abcde", 1, 3, "abcde", 0, 1, 1); - test("abcde", 1, 3, "abcde", 0, 2, 1); - test("abcde", 1, 3, "abcde", 0, 4, 1); - test("abcde", 1, 3, "abcde", 0, 5, 1); - test("abcde", 1, 3, "abcde", 0, 6, 1); - test("abcde", 1, 3, "abcde", 1, 0, 3); - test("abcde", 1, 3, "abcde", 1, 1, 2); - test("abcde", 1, 3, "abcde", 1, 2, 1); +void test8() { + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcde", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 1, 2, "", 0, 0, 2); + test("abcde", 1, 2, "", 0, 1, 2); + test("abcde", 1, 2, "", 1, 0, 0); + test("abcde", 1, 2, "abcde", 0, 0, 2); + test("abcde", 1, 2, "abcde", 0, 1, 1); + test("abcde", 1, 2, "abcde", 0, 2, 1); + test("abcde", 1, 2, "abcde", 0, 4, 1); + test("abcde", 1, 2, "abcde", 0, 5, 1); + test("abcde", 1, 2, "abcde", 0, 6, 1); + test("abcde", 1, 2, "abcde", 1, 0, 2); + test("abcde", 1, 2, "abcde", 1, 1, 1); + test("abcde", 1, 2, "abcde", 1, 2, 0); + test("abcde", 1, 2, "abcde", 1, 3, -1); + test("abcde", 1, 2, "abcde", 1, 4, -2); + test("abcde", 1, 2, "abcde", 1, 5, -2); + test("abcde", 1, 2, "abcde", 2, 0, 2); + test("abcde", 1, 2, "abcde", 2, 1, -1); + test("abcde", 1, 2, "abcde", 2, 2, -1); + test("abcde", 1, 2, "abcde", 2, 3, -1); + test("abcde", 1, 2, "abcde", 2, 4, -1); + test("abcde", 1, 2, "abcde", 4, 0, 2); + test("abcde", 1, 2, "abcde", 4, 1, -3); + test("abcde", 1, 2, "abcde", 4, 2, -3); + test("abcde", 1, 2, "abcde", 5, 0, 2); + test("abcde", 1, 2, "abcde", 5, 1, 2); + test("abcde", 1, 2, "abcde", 6, 0, 0); + test("abcde", 1, 2, "abcdefghij", 0, 0, 2); + test("abcde", 1, 2, "abcdefghij", 0, 1, 1); + test("abcde", 1, 2, "abcdefghij", 0, 5, 1); + test("abcde", 1, 2, "abcdefghij", 0, 9, 1); + test("abcde", 1, 2, "abcdefghij", 0, 10, 1); + test("abcde", 1, 2, "abcdefghij", 0, 11, 1); + test("abcde", 1, 2, "abcdefghij", 1, 0, 2); + test("abcde", 1, 2, "abcdefghij", 1, 1, 1); + test("abcde", 1, 2, "abcdefghij", 1, 4, -2); + test("abcde", 1, 2, "abcdefghij", 1, 8, -6); + test("abcde", 1, 2, "abcdefghij", 1, 9, -7); + test("abcde", 1, 2, "abcdefghij", 1, 10, -7); + test("abcde", 1, 2, "abcdefghij", 5, 0, 2); + test("abcde", 1, 2, "abcdefghij", 5, 1, -4); + test("abcde", 1, 2, "abcdefghij", 5, 2, -4); + test("abcde", 1, 2, "abcdefghij", 5, 4, -4); + test("abcde", 1, 2, "abcdefghij", 5, 5, -4); + test("abcde", 1, 2, "abcdefghij", 5, 6, -4); + test("abcde", 1, 2, "abcdefghij", 9, 0, 2); + test("abcde", 1, 2, "abcdefghij", 9, 1, -8); + test("abcde", 1, 2, "abcdefghij", 9, 2, -8); + test("abcde", 1, 2, "abcdefghij", 10, 0, 2); + test("abcde", 1, 2, "abcdefghij", 10, 1, 2); + test("abcde", 1, 2, "abcdefghij", 11, 0, 0); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 0, 2); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 0, 2); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 1, 1); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 9, -7); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 18, -16); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 19, -17); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 1, 20, -17); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 0, 2); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 0, 2); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 20, 0, 2); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 20, 1, 2); + test("abcde", 1, 2, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 1, 3, "", 0, 0, 3); + test("abcde", 1, 3, "", 0, 1, 3); + test("abcde", 1, 3, "", 1, 0, 0); + test("abcde", 1, 3, "abcde", 0, 0, 3); + test("abcde", 1, 3, "abcde", 0, 1, 1); + test("abcde", 1, 3, "abcde", 0, 2, 1); + test("abcde", 1, 3, "abcde", 0, 4, 1); + test("abcde", 1, 3, "abcde", 0, 5, 1); + test("abcde", 1, 3, "abcde", 0, 6, 1); + test("abcde", 1, 3, "abcde", 1, 0, 3); + test("abcde", 1, 3, "abcde", 1, 1, 2); + test("abcde", 1, 3, "abcde", 1, 2, 1); } -void test9() -{ - test("abcde", 1, 3, "abcde", 1, 3, 0); - test("abcde", 1, 3, "abcde", 1, 4, -1); - test("abcde", 1, 3, "abcde", 1, 5, -1); - test("abcde", 1, 3, "abcde", 2, 0, 3); - test("abcde", 1, 3, "abcde", 2, 1, -1); - test("abcde", 1, 3, "abcde", 2, 2, -1); - test("abcde", 1, 3, "abcde", 2, 3, -1); - test("abcde", 1, 3, "abcde", 2, 4, -1); - test("abcde", 1, 3, "abcde", 4, 0, 3); - test("abcde", 1, 3, "abcde", 4, 1, -3); - test("abcde", 1, 3, "abcde", 4, 2, -3); - test("abcde", 1, 3, "abcde", 5, 0, 3); - test("abcde", 1, 3, "abcde", 5, 1, 3); - test("abcde", 1, 3, "abcde", 6, 0, 0); - test("abcde", 1, 3, "abcdefghij", 0, 0, 3); - test("abcde", 1, 3, "abcdefghij", 0, 1, 1); - test("abcde", 1, 3, "abcdefghij", 0, 5, 1); - test("abcde", 1, 3, "abcdefghij", 0, 9, 1); - test("abcde", 1, 3, "abcdefghij", 0, 10, 1); - test("abcde", 1, 3, "abcdefghij", 0, 11, 1); - test("abcde", 1, 3, "abcdefghij", 1, 0, 3); - test("abcde", 1, 3, "abcdefghij", 1, 1, 2); - test("abcde", 1, 3, "abcdefghij", 1, 4, -1); - test("abcde", 1, 3, "abcdefghij", 1, 8, -5); - test("abcde", 1, 3, "abcdefghij", 1, 9, -6); - test("abcde", 1, 3, "abcdefghij", 1, 10, -6); - test("abcde", 1, 3, "abcdefghij", 5, 0, 3); - test("abcde", 1, 3, "abcdefghij", 5, 1, -4); - test("abcde", 1, 3, "abcdefghij", 5, 2, -4); - test("abcde", 1, 3, "abcdefghij", 5, 4, -4); - test("abcde", 1, 3, "abcdefghij", 5, 5, -4); - test("abcde", 1, 3, "abcdefghij", 5, 6, -4); - test("abcde", 1, 3, "abcdefghij", 9, 0, 3); - test("abcde", 1, 3, "abcdefghij", 9, 1, -8); - test("abcde", 1, 3, "abcdefghij", 9, 2, -8); - test("abcde", 1, 3, "abcdefghij", 10, 0, 3); - test("abcde", 1, 3, "abcdefghij", 10, 1, 3); - test("abcde", 1, 3, "abcdefghij", 11, 0, 0); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 0, 3); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 0, 3); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 1, 2); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 9, -6); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 18, -15); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 19, -16); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 20, -16); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 0, 3); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 0, 3); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 20, 0, 3); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 20, 1, 3); - test("abcde", 1, 3, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 1, 4, "", 0, 0, 4); - test("abcde", 1, 4, "", 0, 1, 4); - test("abcde", 1, 4, "", 1, 0, 0); - test("abcde", 1, 4, "abcde", 0, 0, 4); - test("abcde", 1, 4, "abcde", 0, 1, 1); - test("abcde", 1, 4, "abcde", 0, 2, 1); - test("abcde", 1, 4, "abcde", 0, 4, 1); - test("abcde", 1, 4, "abcde", 0, 5, 1); - test("abcde", 1, 4, "abcde", 0, 6, 1); - test("abcde", 1, 4, "abcde", 1, 0, 4); - test("abcde", 1, 4, "abcde", 1, 1, 3); - test("abcde", 1, 4, "abcde", 1, 2, 2); - test("abcde", 1, 4, "abcde", 1, 3, 1); - test("abcde", 1, 4, "abcde", 1, 4, 0); - test("abcde", 1, 4, "abcde", 1, 5, 0); - test("abcde", 1, 4, "abcde", 2, 0, 4); - test("abcde", 1, 4, "abcde", 2, 1, -1); - test("abcde", 1, 4, "abcde", 2, 2, -1); - test("abcde", 1, 4, "abcde", 2, 3, -1); - test("abcde", 1, 4, "abcde", 2, 4, -1); - test("abcde", 1, 4, "abcde", 4, 0, 4); - test("abcde", 1, 4, "abcde", 4, 1, -3); - test("abcde", 1, 4, "abcde", 4, 2, -3); - test("abcde", 1, 4, "abcde", 5, 0, 4); - test("abcde", 1, 4, "abcde", 5, 1, 4); - test("abcde", 1, 4, "abcde", 6, 0, 0); - test("abcde", 1, 4, "abcdefghij", 0, 0, 4); - test("abcde", 1, 4, "abcdefghij", 0, 1, 1); - test("abcde", 1, 4, "abcdefghij", 0, 5, 1); - test("abcde", 1, 4, "abcdefghij", 0, 9, 1); - test("abcde", 1, 4, "abcdefghij", 0, 10, 1); - test("abcde", 1, 4, "abcdefghij", 0, 11, 1); - test("abcde", 1, 4, "abcdefghij", 1, 0, 4); - test("abcde", 1, 4, "abcdefghij", 1, 1, 3); - test("abcde", 1, 4, "abcdefghij", 1, 4, 0); - test("abcde", 1, 4, "abcdefghij", 1, 8, -4); - test("abcde", 1, 4, "abcdefghij", 1, 9, -5); - test("abcde", 1, 4, "abcdefghij", 1, 10, -5); +void test9() { + test("abcde", 1, 3, "abcde", 1, 3, 0); + test("abcde", 1, 3, "abcde", 1, 4, -1); + test("abcde", 1, 3, "abcde", 1, 5, -1); + test("abcde", 1, 3, "abcde", 2, 0, 3); + test("abcde", 1, 3, "abcde", 2, 1, -1); + test("abcde", 1, 3, "abcde", 2, 2, -1); + test("abcde", 1, 3, "abcde", 2, 3, -1); + test("abcde", 1, 3, "abcde", 2, 4, -1); + test("abcde", 1, 3, "abcde", 4, 0, 3); + test("abcde", 1, 3, "abcde", 4, 1, -3); + test("abcde", 1, 3, "abcde", 4, 2, -3); + test("abcde", 1, 3, "abcde", 5, 0, 3); + test("abcde", 1, 3, "abcde", 5, 1, 3); + test("abcde", 1, 3, "abcde", 6, 0, 0); + test("abcde", 1, 3, "abcdefghij", 0, 0, 3); + test("abcde", 1, 3, "abcdefghij", 0, 1, 1); + test("abcde", 1, 3, "abcdefghij", 0, 5, 1); + test("abcde", 1, 3, "abcdefghij", 0, 9, 1); + test("abcde", 1, 3, "abcdefghij", 0, 10, 1); + test("abcde", 1, 3, "abcdefghij", 0, 11, 1); + test("abcde", 1, 3, "abcdefghij", 1, 0, 3); + test("abcde", 1, 3, "abcdefghij", 1, 1, 2); + test("abcde", 1, 3, "abcdefghij", 1, 4, -1); + test("abcde", 1, 3, "abcdefghij", 1, 8, -5); + test("abcde", 1, 3, "abcdefghij", 1, 9, -6); + test("abcde", 1, 3, "abcdefghij", 1, 10, -6); + test("abcde", 1, 3, "abcdefghij", 5, 0, 3); + test("abcde", 1, 3, "abcdefghij", 5, 1, -4); + test("abcde", 1, 3, "abcdefghij", 5, 2, -4); + test("abcde", 1, 3, "abcdefghij", 5, 4, -4); + test("abcde", 1, 3, "abcdefghij", 5, 5, -4); + test("abcde", 1, 3, "abcdefghij", 5, 6, -4); + test("abcde", 1, 3, "abcdefghij", 9, 0, 3); + test("abcde", 1, 3, "abcdefghij", 9, 1, -8); + test("abcde", 1, 3, "abcdefghij", 9, 2, -8); + test("abcde", 1, 3, "abcdefghij", 10, 0, 3); + test("abcde", 1, 3, "abcdefghij", 10, 1, 3); + test("abcde", 1, 3, "abcdefghij", 11, 0, 0); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 0, 3); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 0, 3); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 1, 2); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 9, -6); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 18, -15); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 19, -16); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 1, 20, -16); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 0, 3); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 0, 3); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 20, 0, 3); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 20, 1, 3); + test("abcde", 1, 3, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 1, 4, "", 0, 0, 4); + test("abcde", 1, 4, "", 0, 1, 4); + test("abcde", 1, 4, "", 1, 0, 0); + test("abcde", 1, 4, "abcde", 0, 0, 4); + test("abcde", 1, 4, "abcde", 0, 1, 1); + test("abcde", 1, 4, "abcde", 0, 2, 1); + test("abcde", 1, 4, "abcde", 0, 4, 1); + test("abcde", 1, 4, "abcde", 0, 5, 1); + test("abcde", 1, 4, "abcde", 0, 6, 1); + test("abcde", 1, 4, "abcde", 1, 0, 4); + test("abcde", 1, 4, "abcde", 1, 1, 3); + test("abcde", 1, 4, "abcde", 1, 2, 2); + test("abcde", 1, 4, "abcde", 1, 3, 1); + test("abcde", 1, 4, "abcde", 1, 4, 0); + test("abcde", 1, 4, "abcde", 1, 5, 0); + test("abcde", 1, 4, "abcde", 2, 0, 4); + test("abcde", 1, 4, "abcde", 2, 1, -1); + test("abcde", 1, 4, "abcde", 2, 2, -1); + test("abcde", 1, 4, "abcde", 2, 3, -1); + test("abcde", 1, 4, "abcde", 2, 4, -1); + test("abcde", 1, 4, "abcde", 4, 0, 4); + test("abcde", 1, 4, "abcde", 4, 1, -3); + test("abcde", 1, 4, "abcde", 4, 2, -3); + test("abcde", 1, 4, "abcde", 5, 0, 4); + test("abcde", 1, 4, "abcde", 5, 1, 4); + test("abcde", 1, 4, "abcde", 6, 0, 0); + test("abcde", 1, 4, "abcdefghij", 0, 0, 4); + test("abcde", 1, 4, "abcdefghij", 0, 1, 1); + test("abcde", 1, 4, "abcdefghij", 0, 5, 1); + test("abcde", 1, 4, "abcdefghij", 0, 9, 1); + test("abcde", 1, 4, "abcdefghij", 0, 10, 1); + test("abcde", 1, 4, "abcdefghij", 0, 11, 1); + test("abcde", 1, 4, "abcdefghij", 1, 0, 4); + test("abcde", 1, 4, "abcdefghij", 1, 1, 3); + test("abcde", 1, 4, "abcdefghij", 1, 4, 0); + test("abcde", 1, 4, "abcdefghij", 1, 8, -4); + test("abcde", 1, 4, "abcdefghij", 1, 9, -5); + test("abcde", 1, 4, "abcdefghij", 1, 10, -5); } -void test10() -{ - test("abcde", 1, 4, "abcdefghij", 5, 0, 4); - test("abcde", 1, 4, "abcdefghij", 5, 1, -4); - test("abcde", 1, 4, "abcdefghij", 5, 2, -4); - test("abcde", 1, 4, "abcdefghij", 5, 4, -4); - test("abcde", 1, 4, "abcdefghij", 5, 5, -4); - test("abcde", 1, 4, "abcdefghij", 5, 6, -4); - test("abcde", 1, 4, "abcdefghij", 9, 0, 4); - test("abcde", 1, 4, "abcdefghij", 9, 1, -8); - test("abcde", 1, 4, "abcdefghij", 9, 2, -8); - test("abcde", 1, 4, "abcdefghij", 10, 0, 4); - test("abcde", 1, 4, "abcdefghij", 10, 1, 4); - test("abcde", 1, 4, "abcdefghij", 11, 0, 0); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 0, 4); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 0, 4); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 1, 3); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 9, -5); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 18, -14); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 19, -15); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 20, -15); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 0, 4); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 0, 4); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 20, 0, 4); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 20, 1, 4); - test("abcde", 1, 4, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 1, 5, "", 0, 0, 4); - test("abcde", 1, 5, "", 0, 1, 4); - test("abcde", 1, 5, "", 1, 0, 0); - test("abcde", 1, 5, "abcde", 0, 0, 4); - test("abcde", 1, 5, "abcde", 0, 1, 1); - test("abcde", 1, 5, "abcde", 0, 2, 1); - test("abcde", 1, 5, "abcde", 0, 4, 1); - test("abcde", 1, 5, "abcde", 0, 5, 1); - test("abcde", 1, 5, "abcde", 0, 6, 1); - test("abcde", 1, 5, "abcde", 1, 0, 4); - test("abcde", 1, 5, "abcde", 1, 1, 3); - test("abcde", 1, 5, "abcde", 1, 2, 2); - test("abcde", 1, 5, "abcde", 1, 3, 1); - test("abcde", 1, 5, "abcde", 1, 4, 0); - test("abcde", 1, 5, "abcde", 1, 5, 0); - test("abcde", 1, 5, "abcde", 2, 0, 4); - test("abcde", 1, 5, "abcde", 2, 1, -1); - test("abcde", 1, 5, "abcde", 2, 2, -1); - test("abcde", 1, 5, "abcde", 2, 3, -1); - test("abcde", 1, 5, "abcde", 2, 4, -1); - test("abcde", 1, 5, "abcde", 4, 0, 4); - test("abcde", 1, 5, "abcde", 4, 1, -3); - test("abcde", 1, 5, "abcde", 4, 2, -3); - test("abcde", 1, 5, "abcde", 5, 0, 4); - test("abcde", 1, 5, "abcde", 5, 1, 4); - test("abcde", 1, 5, "abcde", 6, 0, 0); - test("abcde", 1, 5, "abcdefghij", 0, 0, 4); - test("abcde", 1, 5, "abcdefghij", 0, 1, 1); - test("abcde", 1, 5, "abcdefghij", 0, 5, 1); - test("abcde", 1, 5, "abcdefghij", 0, 9, 1); - test("abcde", 1, 5, "abcdefghij", 0, 10, 1); - test("abcde", 1, 5, "abcdefghij", 0, 11, 1); - test("abcde", 1, 5, "abcdefghij", 1, 0, 4); - test("abcde", 1, 5, "abcdefghij", 1, 1, 3); - test("abcde", 1, 5, "abcdefghij", 1, 4, 0); - test("abcde", 1, 5, "abcdefghij", 1, 8, -4); - test("abcde", 1, 5, "abcdefghij", 1, 9, -5); - test("abcde", 1, 5, "abcdefghij", 1, 10, -5); - test("abcde", 1, 5, "abcdefghij", 5, 0, 4); - test("abcde", 1, 5, "abcdefghij", 5, 1, -4); - test("abcde", 1, 5, "abcdefghij", 5, 2, -4); - test("abcde", 1, 5, "abcdefghij", 5, 4, -4); - test("abcde", 1, 5, "abcdefghij", 5, 5, -4); - test("abcde", 1, 5, "abcdefghij", 5, 6, -4); - test("abcde", 1, 5, "abcdefghij", 9, 0, 4); - test("abcde", 1, 5, "abcdefghij", 9, 1, -8); - test("abcde", 1, 5, "abcdefghij", 9, 2, -8); - test("abcde", 1, 5, "abcdefghij", 10, 0, 4); - test("abcde", 1, 5, "abcdefghij", 10, 1, 4); - test("abcde", 1, 5, "abcdefghij", 11, 0, 0); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 0, 4); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 0, 4); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 1, 3); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 9, -5); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 18, -14); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 19, -15); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 20, -15); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 0, 4); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 1, -9); +void test10() { + test("abcde", 1, 4, "abcdefghij", 5, 0, 4); + test("abcde", 1, 4, "abcdefghij", 5, 1, -4); + test("abcde", 1, 4, "abcdefghij", 5, 2, -4); + test("abcde", 1, 4, "abcdefghij", 5, 4, -4); + test("abcde", 1, 4, "abcdefghij", 5, 5, -4); + test("abcde", 1, 4, "abcdefghij", 5, 6, -4); + test("abcde", 1, 4, "abcdefghij", 9, 0, 4); + test("abcde", 1, 4, "abcdefghij", 9, 1, -8); + test("abcde", 1, 4, "abcdefghij", 9, 2, -8); + test("abcde", 1, 4, "abcdefghij", 10, 0, 4); + test("abcde", 1, 4, "abcdefghij", 10, 1, 4); + test("abcde", 1, 4, "abcdefghij", 11, 0, 0); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 0, 4); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 0, 4); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 1, 3); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 9, -5); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 18, -14); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 19, -15); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 1, 20, -15); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 0, 4); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 0, 4); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 20, 0, 4); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 20, 1, 4); + test("abcde", 1, 4, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 1, 5, "", 0, 0, 4); + test("abcde", 1, 5, "", 0, 1, 4); + test("abcde", 1, 5, "", 1, 0, 0); + test("abcde", 1, 5, "abcde", 0, 0, 4); + test("abcde", 1, 5, "abcde", 0, 1, 1); + test("abcde", 1, 5, "abcde", 0, 2, 1); + test("abcde", 1, 5, "abcde", 0, 4, 1); + test("abcde", 1, 5, "abcde", 0, 5, 1); + test("abcde", 1, 5, "abcde", 0, 6, 1); + test("abcde", 1, 5, "abcde", 1, 0, 4); + test("abcde", 1, 5, "abcde", 1, 1, 3); + test("abcde", 1, 5, "abcde", 1, 2, 2); + test("abcde", 1, 5, "abcde", 1, 3, 1); + test("abcde", 1, 5, "abcde", 1, 4, 0); + test("abcde", 1, 5, "abcde", 1, 5, 0); + test("abcde", 1, 5, "abcde", 2, 0, 4); + test("abcde", 1, 5, "abcde", 2, 1, -1); + test("abcde", 1, 5, "abcde", 2, 2, -1); + test("abcde", 1, 5, "abcde", 2, 3, -1); + test("abcde", 1, 5, "abcde", 2, 4, -1); + test("abcde", 1, 5, "abcde", 4, 0, 4); + test("abcde", 1, 5, "abcde", 4, 1, -3); + test("abcde", 1, 5, "abcde", 4, 2, -3); + test("abcde", 1, 5, "abcde", 5, 0, 4); + test("abcde", 1, 5, "abcde", 5, 1, 4); + test("abcde", 1, 5, "abcde", 6, 0, 0); + test("abcde", 1, 5, "abcdefghij", 0, 0, 4); + test("abcde", 1, 5, "abcdefghij", 0, 1, 1); + test("abcde", 1, 5, "abcdefghij", 0, 5, 1); + test("abcde", 1, 5, "abcdefghij", 0, 9, 1); + test("abcde", 1, 5, "abcdefghij", 0, 10, 1); + test("abcde", 1, 5, "abcdefghij", 0, 11, 1); + test("abcde", 1, 5, "abcdefghij", 1, 0, 4); + test("abcde", 1, 5, "abcdefghij", 1, 1, 3); + test("abcde", 1, 5, "abcdefghij", 1, 4, 0); + test("abcde", 1, 5, "abcdefghij", 1, 8, -4); + test("abcde", 1, 5, "abcdefghij", 1, 9, -5); + test("abcde", 1, 5, "abcdefghij", 1, 10, -5); + test("abcde", 1, 5, "abcdefghij", 5, 0, 4); + test("abcde", 1, 5, "abcdefghij", 5, 1, -4); + test("abcde", 1, 5, "abcdefghij", 5, 2, -4); + test("abcde", 1, 5, "abcdefghij", 5, 4, -4); + test("abcde", 1, 5, "abcdefghij", 5, 5, -4); + test("abcde", 1, 5, "abcdefghij", 5, 6, -4); + test("abcde", 1, 5, "abcdefghij", 9, 0, 4); + test("abcde", 1, 5, "abcdefghij", 9, 1, -8); + test("abcde", 1, 5, "abcdefghij", 9, 2, -8); + test("abcde", 1, 5, "abcdefghij", 10, 0, 4); + test("abcde", 1, 5, "abcdefghij", 10, 1, 4); + test("abcde", 1, 5, "abcdefghij", 11, 0, 0); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 0, 4); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 0, 4); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 1, 3); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 9, -5); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 18, -14); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 19, -15); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 1, 20, -15); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 0, 4); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 1, -9); } -void test11() -{ - test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 0, 4); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 20, 0, 4); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 20, 1, 4); - test("abcde", 1, 5, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 2, 0, "", 0, 0, 0); - test("abcde", 2, 0, "", 0, 1, 0); - test("abcde", 2, 0, "", 1, 0, 0); - test("abcde", 2, 0, "abcde", 0, 0, 0); - test("abcde", 2, 0, "abcde", 0, 1, -1); - test("abcde", 2, 0, "abcde", 0, 2, -2); - test("abcde", 2, 0, "abcde", 0, 4, -4); - test("abcde", 2, 0, "abcde", 0, 5, -5); - test("abcde", 2, 0, "abcde", 0, 6, -5); - test("abcde", 2, 0, "abcde", 1, 0, 0); - test("abcde", 2, 0, "abcde", 1, 1, -1); - test("abcde", 2, 0, "abcde", 1, 2, -2); - test("abcde", 2, 0, "abcde", 1, 3, -3); - test("abcde", 2, 0, "abcde", 1, 4, -4); - test("abcde", 2, 0, "abcde", 1, 5, -4); - test("abcde", 2, 0, "abcde", 2, 0, 0); - test("abcde", 2, 0, "abcde", 2, 1, -1); - test("abcde", 2, 0, "abcde", 2, 2, -2); - test("abcde", 2, 0, "abcde", 2, 3, -3); - test("abcde", 2, 0, "abcde", 2, 4, -3); - test("abcde", 2, 0, "abcde", 4, 0, 0); - test("abcde", 2, 0, "abcde", 4, 1, -1); - test("abcde", 2, 0, "abcde", 4, 2, -1); - test("abcde", 2, 0, "abcde", 5, 0, 0); - test("abcde", 2, 0, "abcde", 5, 1, 0); - test("abcde", 2, 0, "abcde", 6, 0, 0); - test("abcde", 2, 0, "abcdefghij", 0, 0, 0); - test("abcde", 2, 0, "abcdefghij", 0, 1, -1); - test("abcde", 2, 0, "abcdefghij", 0, 5, -5); - test("abcde", 2, 0, "abcdefghij", 0, 9, -9); - test("abcde", 2, 0, "abcdefghij", 0, 10, -10); - test("abcde", 2, 0, "abcdefghij", 0, 11, -10); - test("abcde", 2, 0, "abcdefghij", 1, 0, 0); - test("abcde", 2, 0, "abcdefghij", 1, 1, -1); - test("abcde", 2, 0, "abcdefghij", 1, 4, -4); - test("abcde", 2, 0, "abcdefghij", 1, 8, -8); - test("abcde", 2, 0, "abcdefghij", 1, 9, -9); - test("abcde", 2, 0, "abcdefghij", 1, 10, -9); - test("abcde", 2, 0, "abcdefghij", 5, 0, 0); - test("abcde", 2, 0, "abcdefghij", 5, 1, -1); - test("abcde", 2, 0, "abcdefghij", 5, 2, -2); - test("abcde", 2, 0, "abcdefghij", 5, 4, -4); - test("abcde", 2, 0, "abcdefghij", 5, 5, -5); - test("abcde", 2, 0, "abcdefghij", 5, 6, -5); - test("abcde", 2, 0, "abcdefghij", 9, 0, 0); - test("abcde", 2, 0, "abcdefghij", 9, 1, -1); - test("abcde", 2, 0, "abcdefghij", 9, 2, -1); - test("abcde", 2, 0, "abcdefghij", 10, 0, 0); - test("abcde", 2, 0, "abcdefghij", 10, 1, 0); - test("abcde", 2, 0, "abcdefghij", 11, 0, 0); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcde", 2, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 2, 1, "", 0, 0, 1); - test("abcde", 2, 1, "", 0, 1, 1); - test("abcde", 2, 1, "", 1, 0, 0); - test("abcde", 2, 1, "abcde", 0, 0, 1); - test("abcde", 2, 1, "abcde", 0, 1, 2); - test("abcde", 2, 1, "abcde", 0, 2, 2); - test("abcde", 2, 1, "abcde", 0, 4, 2); - test("abcde", 2, 1, "abcde", 0, 5, 2); - test("abcde", 2, 1, "abcde", 0, 6, 2); - test("abcde", 2, 1, "abcde", 1, 0, 1); - test("abcde", 2, 1, "abcde", 1, 1, 1); - test("abcde", 2, 1, "abcde", 1, 2, 1); - test("abcde", 2, 1, "abcde", 1, 3, 1); - test("abcde", 2, 1, "abcde", 1, 4, 1); - test("abcde", 2, 1, "abcde", 1, 5, 1); - test("abcde", 2, 1, "abcde", 2, 0, 1); +void test11() { + test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 0, 4); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 20, 0, 4); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 20, 1, 4); + test("abcde", 1, 5, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 2, 0, "", 0, 0, 0); + test("abcde", 2, 0, "", 0, 1, 0); + test("abcde", 2, 0, "", 1, 0, 0); + test("abcde", 2, 0, "abcde", 0, 0, 0); + test("abcde", 2, 0, "abcde", 0, 1, -1); + test("abcde", 2, 0, "abcde", 0, 2, -2); + test("abcde", 2, 0, "abcde", 0, 4, -4); + test("abcde", 2, 0, "abcde", 0, 5, -5); + test("abcde", 2, 0, "abcde", 0, 6, -5); + test("abcde", 2, 0, "abcde", 1, 0, 0); + test("abcde", 2, 0, "abcde", 1, 1, -1); + test("abcde", 2, 0, "abcde", 1, 2, -2); + test("abcde", 2, 0, "abcde", 1, 3, -3); + test("abcde", 2, 0, "abcde", 1, 4, -4); + test("abcde", 2, 0, "abcde", 1, 5, -4); + test("abcde", 2, 0, "abcde", 2, 0, 0); + test("abcde", 2, 0, "abcde", 2, 1, -1); + test("abcde", 2, 0, "abcde", 2, 2, -2); + test("abcde", 2, 0, "abcde", 2, 3, -3); + test("abcde", 2, 0, "abcde", 2, 4, -3); + test("abcde", 2, 0, "abcde", 4, 0, 0); + test("abcde", 2, 0, "abcde", 4, 1, -1); + test("abcde", 2, 0, "abcde", 4, 2, -1); + test("abcde", 2, 0, "abcde", 5, 0, 0); + test("abcde", 2, 0, "abcde", 5, 1, 0); + test("abcde", 2, 0, "abcde", 6, 0, 0); + test("abcde", 2, 0, "abcdefghij", 0, 0, 0); + test("abcde", 2, 0, "abcdefghij", 0, 1, -1); + test("abcde", 2, 0, "abcdefghij", 0, 5, -5); + test("abcde", 2, 0, "abcdefghij", 0, 9, -9); + test("abcde", 2, 0, "abcdefghij", 0, 10, -10); + test("abcde", 2, 0, "abcdefghij", 0, 11, -10); + test("abcde", 2, 0, "abcdefghij", 1, 0, 0); + test("abcde", 2, 0, "abcdefghij", 1, 1, -1); + test("abcde", 2, 0, "abcdefghij", 1, 4, -4); + test("abcde", 2, 0, "abcdefghij", 1, 8, -8); + test("abcde", 2, 0, "abcdefghij", 1, 9, -9); + test("abcde", 2, 0, "abcdefghij", 1, 10, -9); + test("abcde", 2, 0, "abcdefghij", 5, 0, 0); + test("abcde", 2, 0, "abcdefghij", 5, 1, -1); + test("abcde", 2, 0, "abcdefghij", 5, 2, -2); + test("abcde", 2, 0, "abcdefghij", 5, 4, -4); + test("abcde", 2, 0, "abcdefghij", 5, 5, -5); + test("abcde", 2, 0, "abcdefghij", 5, 6, -5); + test("abcde", 2, 0, "abcdefghij", 9, 0, 0); + test("abcde", 2, 0, "abcdefghij", 9, 1, -1); + test("abcde", 2, 0, "abcdefghij", 9, 2, -1); + test("abcde", 2, 0, "abcdefghij", 10, 0, 0); + test("abcde", 2, 0, "abcdefghij", 10, 1, 0); + test("abcde", 2, 0, "abcdefghij", 11, 0, 0); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcde", 2, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 2, 1, "", 0, 0, 1); + test("abcde", 2, 1, "", 0, 1, 1); + test("abcde", 2, 1, "", 1, 0, 0); + test("abcde", 2, 1, "abcde", 0, 0, 1); + test("abcde", 2, 1, "abcde", 0, 1, 2); + test("abcde", 2, 1, "abcde", 0, 2, 2); + test("abcde", 2, 1, "abcde", 0, 4, 2); + test("abcde", 2, 1, "abcde", 0, 5, 2); + test("abcde", 2, 1, "abcde", 0, 6, 2); + test("abcde", 2, 1, "abcde", 1, 0, 1); + test("abcde", 2, 1, "abcde", 1, 1, 1); + test("abcde", 2, 1, "abcde", 1, 2, 1); + test("abcde", 2, 1, "abcde", 1, 3, 1); + test("abcde", 2, 1, "abcde", 1, 4, 1); + test("abcde", 2, 1, "abcde", 1, 5, 1); + test("abcde", 2, 1, "abcde", 2, 0, 1); } -void test12() -{ - test("abcde", 2, 1, "abcde", 2, 1, 0); - test("abcde", 2, 1, "abcde", 2, 2, -1); - test("abcde", 2, 1, "abcde", 2, 3, -2); - test("abcde", 2, 1, "abcde", 2, 4, -2); - test("abcde", 2, 1, "abcde", 4, 0, 1); - test("abcde", 2, 1, "abcde", 4, 1, -2); - test("abcde", 2, 1, "abcde", 4, 2, -2); - test("abcde", 2, 1, "abcde", 5, 0, 1); - test("abcde", 2, 1, "abcde", 5, 1, 1); - test("abcde", 2, 1, "abcde", 6, 0, 0); - test("abcde", 2, 1, "abcdefghij", 0, 0, 1); - test("abcde", 2, 1, "abcdefghij", 0, 1, 2); - test("abcde", 2, 1, "abcdefghij", 0, 5, 2); - test("abcde", 2, 1, "abcdefghij", 0, 9, 2); - test("abcde", 2, 1, "abcdefghij", 0, 10, 2); - test("abcde", 2, 1, "abcdefghij", 0, 11, 2); - test("abcde", 2, 1, "abcdefghij", 1, 0, 1); - test("abcde", 2, 1, "abcdefghij", 1, 1, 1); - test("abcde", 2, 1, "abcdefghij", 1, 4, 1); - test("abcde", 2, 1, "abcdefghij", 1, 8, 1); - test("abcde", 2, 1, "abcdefghij", 1, 9, 1); - test("abcde", 2, 1, "abcdefghij", 1, 10, 1); - test("abcde", 2, 1, "abcdefghij", 5, 0, 1); - test("abcde", 2, 1, "abcdefghij", 5, 1, -3); - test("abcde", 2, 1, "abcdefghij", 5, 2, -3); - test("abcde", 2, 1, "abcdefghij", 5, 4, -3); - test("abcde", 2, 1, "abcdefghij", 5, 5, -3); - test("abcde", 2, 1, "abcdefghij", 5, 6, -3); - test("abcde", 2, 1, "abcdefghij", 9, 0, 1); - test("abcde", 2, 1, "abcdefghij", 9, 1, -7); - test("abcde", 2, 1, "abcdefghij", 9, 2, -7); - test("abcde", 2, 1, "abcdefghij", 10, 0, 1); - test("abcde", 2, 1, "abcdefghij", 10, 1, 1); - test("abcde", 2, 1, "abcdefghij", 11, 0, 0); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 1, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 10, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 19, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 20, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 21, 2); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 1, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 9, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 18, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 19, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 20, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 1, -8); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 5, -8); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 9, -8); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 10, -8); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 11, -8); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 1, -17); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 2, -17); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcde", 2, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 2, 2, "", 0, 0, 2); - test("abcde", 2, 2, "", 0, 1, 2); - test("abcde", 2, 2, "", 1, 0, 0); - test("abcde", 2, 2, "abcde", 0, 0, 2); - test("abcde", 2, 2, "abcde", 0, 1, 2); - test("abcde", 2, 2, "abcde", 0, 2, 2); - test("abcde", 2, 2, "abcde", 0, 4, 2); - test("abcde", 2, 2, "abcde", 0, 5, 2); - test("abcde", 2, 2, "abcde", 0, 6, 2); - test("abcde", 2, 2, "abcde", 1, 0, 2); - test("abcde", 2, 2, "abcde", 1, 1, 1); - test("abcde", 2, 2, "abcde", 1, 2, 1); - test("abcde", 2, 2, "abcde", 1, 3, 1); - test("abcde", 2, 2, "abcde", 1, 4, 1); - test("abcde", 2, 2, "abcde", 1, 5, 1); - test("abcde", 2, 2, "abcde", 2, 0, 2); - test("abcde", 2, 2, "abcde", 2, 1, 1); - test("abcde", 2, 2, "abcde", 2, 2, 0); - test("abcde", 2, 2, "abcde", 2, 3, -1); - test("abcde", 2, 2, "abcde", 2, 4, -1); - test("abcde", 2, 2, "abcde", 4, 0, 2); - test("abcde", 2, 2, "abcde", 4, 1, -2); - test("abcde", 2, 2, "abcde", 4, 2, -2); - test("abcde", 2, 2, "abcde", 5, 0, 2); - test("abcde", 2, 2, "abcde", 5, 1, 2); - test("abcde", 2, 2, "abcde", 6, 0, 0); - test("abcde", 2, 2, "abcdefghij", 0, 0, 2); - test("abcde", 2, 2, "abcdefghij", 0, 1, 2); - test("abcde", 2, 2, "abcdefghij", 0, 5, 2); - test("abcde", 2, 2, "abcdefghij", 0, 9, 2); - test("abcde", 2, 2, "abcdefghij", 0, 10, 2); - test("abcde", 2, 2, "abcdefghij", 0, 11, 2); - test("abcde", 2, 2, "abcdefghij", 1, 0, 2); - test("abcde", 2, 2, "abcdefghij", 1, 1, 1); - test("abcde", 2, 2, "abcdefghij", 1, 4, 1); - test("abcde", 2, 2, "abcdefghij", 1, 8, 1); - test("abcde", 2, 2, "abcdefghij", 1, 9, 1); - test("abcde", 2, 2, "abcdefghij", 1, 10, 1); - test("abcde", 2, 2, "abcdefghij", 5, 0, 2); - test("abcde", 2, 2, "abcdefghij", 5, 1, -3); - test("abcde", 2, 2, "abcdefghij", 5, 2, -3); - test("abcde", 2, 2, "abcdefghij", 5, 4, -3); +void test12() { + test("abcde", 2, 1, "abcde", 2, 1, 0); + test("abcde", 2, 1, "abcde", 2, 2, -1); + test("abcde", 2, 1, "abcde", 2, 3, -2); + test("abcde", 2, 1, "abcde", 2, 4, -2); + test("abcde", 2, 1, "abcde", 4, 0, 1); + test("abcde", 2, 1, "abcde", 4, 1, -2); + test("abcde", 2, 1, "abcde", 4, 2, -2); + test("abcde", 2, 1, "abcde", 5, 0, 1); + test("abcde", 2, 1, "abcde", 5, 1, 1); + test("abcde", 2, 1, "abcde", 6, 0, 0); + test("abcde", 2, 1, "abcdefghij", 0, 0, 1); + test("abcde", 2, 1, "abcdefghij", 0, 1, 2); + test("abcde", 2, 1, "abcdefghij", 0, 5, 2); + test("abcde", 2, 1, "abcdefghij", 0, 9, 2); + test("abcde", 2, 1, "abcdefghij", 0, 10, 2); + test("abcde", 2, 1, "abcdefghij", 0, 11, 2); + test("abcde", 2, 1, "abcdefghij", 1, 0, 1); + test("abcde", 2, 1, "abcdefghij", 1, 1, 1); + test("abcde", 2, 1, "abcdefghij", 1, 4, 1); + test("abcde", 2, 1, "abcdefghij", 1, 8, 1); + test("abcde", 2, 1, "abcdefghij", 1, 9, 1); + test("abcde", 2, 1, "abcdefghij", 1, 10, 1); + test("abcde", 2, 1, "abcdefghij", 5, 0, 1); + test("abcde", 2, 1, "abcdefghij", 5, 1, -3); + test("abcde", 2, 1, "abcdefghij", 5, 2, -3); + test("abcde", 2, 1, "abcdefghij", 5, 4, -3); + test("abcde", 2, 1, "abcdefghij", 5, 5, -3); + test("abcde", 2, 1, "abcdefghij", 5, 6, -3); + test("abcde", 2, 1, "abcdefghij", 9, 0, 1); + test("abcde", 2, 1, "abcdefghij", 9, 1, -7); + test("abcde", 2, 1, "abcdefghij", 9, 2, -7); + test("abcde", 2, 1, "abcdefghij", 10, 0, 1); + test("abcde", 2, 1, "abcdefghij", 10, 1, 1); + test("abcde", 2, 1, "abcdefghij", 11, 0, 0); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 1, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 10, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 19, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 20, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 0, 21, 2); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 1, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 9, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 18, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 19, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 1, 20, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 1, -8); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 5, -8); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 9, -8); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 10, -8); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 10, 11, -8); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 1, -17); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 19, 2, -17); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcde", 2, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 2, 2, "", 0, 0, 2); + test("abcde", 2, 2, "", 0, 1, 2); + test("abcde", 2, 2, "", 1, 0, 0); + test("abcde", 2, 2, "abcde", 0, 0, 2); + test("abcde", 2, 2, "abcde", 0, 1, 2); + test("abcde", 2, 2, "abcde", 0, 2, 2); + test("abcde", 2, 2, "abcde", 0, 4, 2); + test("abcde", 2, 2, "abcde", 0, 5, 2); + test("abcde", 2, 2, "abcde", 0, 6, 2); + test("abcde", 2, 2, "abcde", 1, 0, 2); + test("abcde", 2, 2, "abcde", 1, 1, 1); + test("abcde", 2, 2, "abcde", 1, 2, 1); + test("abcde", 2, 2, "abcde", 1, 3, 1); + test("abcde", 2, 2, "abcde", 1, 4, 1); + test("abcde", 2, 2, "abcde", 1, 5, 1); + test("abcde", 2, 2, "abcde", 2, 0, 2); + test("abcde", 2, 2, "abcde", 2, 1, 1); + test("abcde", 2, 2, "abcde", 2, 2, 0); + test("abcde", 2, 2, "abcde", 2, 3, -1); + test("abcde", 2, 2, "abcde", 2, 4, -1); + test("abcde", 2, 2, "abcde", 4, 0, 2); + test("abcde", 2, 2, "abcde", 4, 1, -2); + test("abcde", 2, 2, "abcde", 4, 2, -2); + test("abcde", 2, 2, "abcde", 5, 0, 2); + test("abcde", 2, 2, "abcde", 5, 1, 2); + test("abcde", 2, 2, "abcde", 6, 0, 0); + test("abcde", 2, 2, "abcdefghij", 0, 0, 2); + test("abcde", 2, 2, "abcdefghij", 0, 1, 2); + test("abcde", 2, 2, "abcdefghij", 0, 5, 2); + test("abcde", 2, 2, "abcdefghij", 0, 9, 2); + test("abcde", 2, 2, "abcdefghij", 0, 10, 2); + test("abcde", 2, 2, "abcdefghij", 0, 11, 2); + test("abcde", 2, 2, "abcdefghij", 1, 0, 2); + test("abcde", 2, 2, "abcdefghij", 1, 1, 1); + test("abcde", 2, 2, "abcdefghij", 1, 4, 1); + test("abcde", 2, 2, "abcdefghij", 1, 8, 1); + test("abcde", 2, 2, "abcdefghij", 1, 9, 1); + test("abcde", 2, 2, "abcdefghij", 1, 10, 1); + test("abcde", 2, 2, "abcdefghij", 5, 0, 2); + test("abcde", 2, 2, "abcdefghij", 5, 1, -3); + test("abcde", 2, 2, "abcdefghij", 5, 2, -3); + test("abcde", 2, 2, "abcdefghij", 5, 4, -3); } -void test13() -{ - test("abcde", 2, 2, "abcdefghij", 5, 5, -3); - test("abcde", 2, 2, "abcdefghij", 5, 6, -3); - test("abcde", 2, 2, "abcdefghij", 9, 0, 2); - test("abcde", 2, 2, "abcdefghij", 9, 1, -7); - test("abcde", 2, 2, "abcdefghij", 9, 2, -7); - test("abcde", 2, 2, "abcdefghij", 10, 0, 2); - test("abcde", 2, 2, "abcdefghij", 10, 1, 2); - test("abcde", 2, 2, "abcdefghij", 11, 0, 0); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 0, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 1, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 10, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 19, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 20, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 21, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 0, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 1, 1); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 9, 1); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 18, 1); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 19, 1); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 20, 1); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 0, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 1, -8); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 5, -8); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 9, -8); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 10, -8); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 11, -8); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 0, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 1, -17); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 2, -17); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 20, 0, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 20, 1, 2); - test("abcde", 2, 2, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 2, 3, "", 0, 0, 3); - test("abcde", 2, 3, "", 0, 1, 3); - test("abcde", 2, 3, "", 1, 0, 0); - test("abcde", 2, 3, "abcde", 0, 0, 3); - test("abcde", 2, 3, "abcde", 0, 1, 2); - test("abcde", 2, 3, "abcde", 0, 2, 2); - test("abcde", 2, 3, "abcde", 0, 4, 2); - test("abcde", 2, 3, "abcde", 0, 5, 2); - test("abcde", 2, 3, "abcde", 0, 6, 2); - test("abcde", 2, 3, "abcde", 1, 0, 3); - test("abcde", 2, 3, "abcde", 1, 1, 1); - test("abcde", 2, 3, "abcde", 1, 2, 1); - test("abcde", 2, 3, "abcde", 1, 3, 1); - test("abcde", 2, 3, "abcde", 1, 4, 1); - test("abcde", 2, 3, "abcde", 1, 5, 1); - test("abcde", 2, 3, "abcde", 2, 0, 3); - test("abcde", 2, 3, "abcde", 2, 1, 2); - test("abcde", 2, 3, "abcde", 2, 2, 1); - test("abcde", 2, 3, "abcde", 2, 3, 0); - test("abcde", 2, 3, "abcde", 2, 4, 0); - test("abcde", 2, 3, "abcde", 4, 0, 3); - test("abcde", 2, 3, "abcde", 4, 1, -2); - test("abcde", 2, 3, "abcde", 4, 2, -2); - test("abcde", 2, 3, "abcde", 5, 0, 3); - test("abcde", 2, 3, "abcde", 5, 1, 3); - test("abcde", 2, 3, "abcde", 6, 0, 0); - test("abcde", 2, 3, "abcdefghij", 0, 0, 3); - test("abcde", 2, 3, "abcdefghij", 0, 1, 2); - test("abcde", 2, 3, "abcdefghij", 0, 5, 2); - test("abcde", 2, 3, "abcdefghij", 0, 9, 2); - test("abcde", 2, 3, "abcdefghij", 0, 10, 2); - test("abcde", 2, 3, "abcdefghij", 0, 11, 2); - test("abcde", 2, 3, "abcdefghij", 1, 0, 3); - test("abcde", 2, 3, "abcdefghij", 1, 1, 1); - test("abcde", 2, 3, "abcdefghij", 1, 4, 1); - test("abcde", 2, 3, "abcdefghij", 1, 8, 1); - test("abcde", 2, 3, "abcdefghij", 1, 9, 1); - test("abcde", 2, 3, "abcdefghij", 1, 10, 1); - test("abcde", 2, 3, "abcdefghij", 5, 0, 3); - test("abcde", 2, 3, "abcdefghij", 5, 1, -3); - test("abcde", 2, 3, "abcdefghij", 5, 2, -3); - test("abcde", 2, 3, "abcdefghij", 5, 4, -3); - test("abcde", 2, 3, "abcdefghij", 5, 5, -3); - test("abcde", 2, 3, "abcdefghij", 5, 6, -3); - test("abcde", 2, 3, "abcdefghij", 9, 0, 3); - test("abcde", 2, 3, "abcdefghij", 9, 1, -7); - test("abcde", 2, 3, "abcdefghij", 9, 2, -7); - test("abcde", 2, 3, "abcdefghij", 10, 0, 3); - test("abcde", 2, 3, "abcdefghij", 10, 1, 3); - test("abcde", 2, 3, "abcdefghij", 11, 0, 0); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 0, 3); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 1, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 10, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 19, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 20, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 21, 2); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 0, 3); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 1, 1); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 9, 1); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 18, 1); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 19, 1); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 20, 1); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 0, 3); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 1, -8); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 5, -8); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 9, -8); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 10, -8); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 11, -8); +void test13() { + test("abcde", 2, 2, "abcdefghij", 5, 5, -3); + test("abcde", 2, 2, "abcdefghij", 5, 6, -3); + test("abcde", 2, 2, "abcdefghij", 9, 0, 2); + test("abcde", 2, 2, "abcdefghij", 9, 1, -7); + test("abcde", 2, 2, "abcdefghij", 9, 2, -7); + test("abcde", 2, 2, "abcdefghij", 10, 0, 2); + test("abcde", 2, 2, "abcdefghij", 10, 1, 2); + test("abcde", 2, 2, "abcdefghij", 11, 0, 0); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 0, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 1, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 10, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 19, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 20, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 0, 21, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 0, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 1, 1); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 9, 1); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 18, 1); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 19, 1); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 1, 20, 1); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 0, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 1, -8); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 5, -8); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 9, -8); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 10, -8); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 10, 11, -8); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 0, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 1, -17); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 19, 2, -17); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 20, 0, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 20, 1, 2); + test("abcde", 2, 2, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 2, 3, "", 0, 0, 3); + test("abcde", 2, 3, "", 0, 1, 3); + test("abcde", 2, 3, "", 1, 0, 0); + test("abcde", 2, 3, "abcde", 0, 0, 3); + test("abcde", 2, 3, "abcde", 0, 1, 2); + test("abcde", 2, 3, "abcde", 0, 2, 2); + test("abcde", 2, 3, "abcde", 0, 4, 2); + test("abcde", 2, 3, "abcde", 0, 5, 2); + test("abcde", 2, 3, "abcde", 0, 6, 2); + test("abcde", 2, 3, "abcde", 1, 0, 3); + test("abcde", 2, 3, "abcde", 1, 1, 1); + test("abcde", 2, 3, "abcde", 1, 2, 1); + test("abcde", 2, 3, "abcde", 1, 3, 1); + test("abcde", 2, 3, "abcde", 1, 4, 1); + test("abcde", 2, 3, "abcde", 1, 5, 1); + test("abcde", 2, 3, "abcde", 2, 0, 3); + test("abcde", 2, 3, "abcde", 2, 1, 2); + test("abcde", 2, 3, "abcde", 2, 2, 1); + test("abcde", 2, 3, "abcde", 2, 3, 0); + test("abcde", 2, 3, "abcde", 2, 4, 0); + test("abcde", 2, 3, "abcde", 4, 0, 3); + test("abcde", 2, 3, "abcde", 4, 1, -2); + test("abcde", 2, 3, "abcde", 4, 2, -2); + test("abcde", 2, 3, "abcde", 5, 0, 3); + test("abcde", 2, 3, "abcde", 5, 1, 3); + test("abcde", 2, 3, "abcde", 6, 0, 0); + test("abcde", 2, 3, "abcdefghij", 0, 0, 3); + test("abcde", 2, 3, "abcdefghij", 0, 1, 2); + test("abcde", 2, 3, "abcdefghij", 0, 5, 2); + test("abcde", 2, 3, "abcdefghij", 0, 9, 2); + test("abcde", 2, 3, "abcdefghij", 0, 10, 2); + test("abcde", 2, 3, "abcdefghij", 0, 11, 2); + test("abcde", 2, 3, "abcdefghij", 1, 0, 3); + test("abcde", 2, 3, "abcdefghij", 1, 1, 1); + test("abcde", 2, 3, "abcdefghij", 1, 4, 1); + test("abcde", 2, 3, "abcdefghij", 1, 8, 1); + test("abcde", 2, 3, "abcdefghij", 1, 9, 1); + test("abcde", 2, 3, "abcdefghij", 1, 10, 1); + test("abcde", 2, 3, "abcdefghij", 5, 0, 3); + test("abcde", 2, 3, "abcdefghij", 5, 1, -3); + test("abcde", 2, 3, "abcdefghij", 5, 2, -3); + test("abcde", 2, 3, "abcdefghij", 5, 4, -3); + test("abcde", 2, 3, "abcdefghij", 5, 5, -3); + test("abcde", 2, 3, "abcdefghij", 5, 6, -3); + test("abcde", 2, 3, "abcdefghij", 9, 0, 3); + test("abcde", 2, 3, "abcdefghij", 9, 1, -7); + test("abcde", 2, 3, "abcdefghij", 9, 2, -7); + test("abcde", 2, 3, "abcdefghij", 10, 0, 3); + test("abcde", 2, 3, "abcdefghij", 10, 1, 3); + test("abcde", 2, 3, "abcdefghij", 11, 0, 0); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 0, 3); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 1, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 10, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 19, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 20, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 0, 21, 2); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 0, 3); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 1, 1); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 9, 1); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 18, 1); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 19, 1); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 1, 20, 1); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 0, 3); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 1, -8); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 5, -8); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 9, -8); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 10, -8); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 10, 11, -8); } -void test14() -{ - test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 0, 3); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 1, -17); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 2, -17); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 20, 0, 3); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 20, 1, 3); - test("abcde", 2, 3, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 2, 4, "", 0, 0, 3); - test("abcde", 2, 4, "", 0, 1, 3); - test("abcde", 2, 4, "", 1, 0, 0); - test("abcde", 2, 4, "abcde", 0, 0, 3); - test("abcde", 2, 4, "abcde", 0, 1, 2); - test("abcde", 2, 4, "abcde", 0, 2, 2); - test("abcde", 2, 4, "abcde", 0, 4, 2); - test("abcde", 2, 4, "abcde", 0, 5, 2); - test("abcde", 2, 4, "abcde", 0, 6, 2); - test("abcde", 2, 4, "abcde", 1, 0, 3); - test("abcde", 2, 4, "abcde", 1, 1, 1); - test("abcde", 2, 4, "abcde", 1, 2, 1); - test("abcde", 2, 4, "abcde", 1, 3, 1); - test("abcde", 2, 4, "abcde", 1, 4, 1); - test("abcde", 2, 4, "abcde", 1, 5, 1); - test("abcde", 2, 4, "abcde", 2, 0, 3); - test("abcde", 2, 4, "abcde", 2, 1, 2); - test("abcde", 2, 4, "abcde", 2, 2, 1); - test("abcde", 2, 4, "abcde", 2, 3, 0); - test("abcde", 2, 4, "abcde", 2, 4, 0); - test("abcde", 2, 4, "abcde", 4, 0, 3); - test("abcde", 2, 4, "abcde", 4, 1, -2); - test("abcde", 2, 4, "abcde", 4, 2, -2); - test("abcde", 2, 4, "abcde", 5, 0, 3); - test("abcde", 2, 4, "abcde", 5, 1, 3); - test("abcde", 2, 4, "abcde", 6, 0, 0); - test("abcde", 2, 4, "abcdefghij", 0, 0, 3); - test("abcde", 2, 4, "abcdefghij", 0, 1, 2); - test("abcde", 2, 4, "abcdefghij", 0, 5, 2); - test("abcde", 2, 4, "abcdefghij", 0, 9, 2); - test("abcde", 2, 4, "abcdefghij", 0, 10, 2); - test("abcde", 2, 4, "abcdefghij", 0, 11, 2); - test("abcde", 2, 4, "abcdefghij", 1, 0, 3); - test("abcde", 2, 4, "abcdefghij", 1, 1, 1); - test("abcde", 2, 4, "abcdefghij", 1, 4, 1); - test("abcde", 2, 4, "abcdefghij", 1, 8, 1); - test("abcde", 2, 4, "abcdefghij", 1, 9, 1); - test("abcde", 2, 4, "abcdefghij", 1, 10, 1); - test("abcde", 2, 4, "abcdefghij", 5, 0, 3); - test("abcde", 2, 4, "abcdefghij", 5, 1, -3); - test("abcde", 2, 4, "abcdefghij", 5, 2, -3); - test("abcde", 2, 4, "abcdefghij", 5, 4, -3); - test("abcde", 2, 4, "abcdefghij", 5, 5, -3); - test("abcde", 2, 4, "abcdefghij", 5, 6, -3); - test("abcde", 2, 4, "abcdefghij", 9, 0, 3); - test("abcde", 2, 4, "abcdefghij", 9, 1, -7); - test("abcde", 2, 4, "abcdefghij", 9, 2, -7); - test("abcde", 2, 4, "abcdefghij", 10, 0, 3); - test("abcde", 2, 4, "abcdefghij", 10, 1, 3); - test("abcde", 2, 4, "abcdefghij", 11, 0, 0); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 0, 3); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 1, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 10, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 19, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 20, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 21, 2); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 0, 3); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 1, 1); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 9, 1); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 18, 1); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 19, 1); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 20, 1); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 0, 3); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 1, -8); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 5, -8); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 9, -8); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 10, -8); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 11, -8); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 0, 3); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 1, -17); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 2, -17); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 20, 0, 3); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 20, 1, 3); - test("abcde", 2, 4, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 4, 0, "", 0, 0, 0); - test("abcde", 4, 0, "", 0, 1, 0); - test("abcde", 4, 0, "", 1, 0, 0); - test("abcde", 4, 0, "abcde", 0, 0, 0); - test("abcde", 4, 0, "abcde", 0, 1, -1); - test("abcde", 4, 0, "abcde", 0, 2, -2); - test("abcde", 4, 0, "abcde", 0, 4, -4); - test("abcde", 4, 0, "abcde", 0, 5, -5); - test("abcde", 4, 0, "abcde", 0, 6, -5); - test("abcde", 4, 0, "abcde", 1, 0, 0); - test("abcde", 4, 0, "abcde", 1, 1, -1); - test("abcde", 4, 0, "abcde", 1, 2, -2); - test("abcde", 4, 0, "abcde", 1, 3, -3); - test("abcde", 4, 0, "abcde", 1, 4, -4); - test("abcde", 4, 0, "abcde", 1, 5, -4); - test("abcde", 4, 0, "abcde", 2, 0, 0); - test("abcde", 4, 0, "abcde", 2, 1, -1); - test("abcde", 4, 0, "abcde", 2, 2, -2); - test("abcde", 4, 0, "abcde", 2, 3, -3); - test("abcde", 4, 0, "abcde", 2, 4, -3); +void test14() { + test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 0, 3); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 1, -17); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 19, 2, -17); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 20, 0, 3); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 20, 1, 3); + test("abcde", 2, 3, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 2, 4, "", 0, 0, 3); + test("abcde", 2, 4, "", 0, 1, 3); + test("abcde", 2, 4, "", 1, 0, 0); + test("abcde", 2, 4, "abcde", 0, 0, 3); + test("abcde", 2, 4, "abcde", 0, 1, 2); + test("abcde", 2, 4, "abcde", 0, 2, 2); + test("abcde", 2, 4, "abcde", 0, 4, 2); + test("abcde", 2, 4, "abcde", 0, 5, 2); + test("abcde", 2, 4, "abcde", 0, 6, 2); + test("abcde", 2, 4, "abcde", 1, 0, 3); + test("abcde", 2, 4, "abcde", 1, 1, 1); + test("abcde", 2, 4, "abcde", 1, 2, 1); + test("abcde", 2, 4, "abcde", 1, 3, 1); + test("abcde", 2, 4, "abcde", 1, 4, 1); + test("abcde", 2, 4, "abcde", 1, 5, 1); + test("abcde", 2, 4, "abcde", 2, 0, 3); + test("abcde", 2, 4, "abcde", 2, 1, 2); + test("abcde", 2, 4, "abcde", 2, 2, 1); + test("abcde", 2, 4, "abcde", 2, 3, 0); + test("abcde", 2, 4, "abcde", 2, 4, 0); + test("abcde", 2, 4, "abcde", 4, 0, 3); + test("abcde", 2, 4, "abcde", 4, 1, -2); + test("abcde", 2, 4, "abcde", 4, 2, -2); + test("abcde", 2, 4, "abcde", 5, 0, 3); + test("abcde", 2, 4, "abcde", 5, 1, 3); + test("abcde", 2, 4, "abcde", 6, 0, 0); + test("abcde", 2, 4, "abcdefghij", 0, 0, 3); + test("abcde", 2, 4, "abcdefghij", 0, 1, 2); + test("abcde", 2, 4, "abcdefghij", 0, 5, 2); + test("abcde", 2, 4, "abcdefghij", 0, 9, 2); + test("abcde", 2, 4, "abcdefghij", 0, 10, 2); + test("abcde", 2, 4, "abcdefghij", 0, 11, 2); + test("abcde", 2, 4, "abcdefghij", 1, 0, 3); + test("abcde", 2, 4, "abcdefghij", 1, 1, 1); + test("abcde", 2, 4, "abcdefghij", 1, 4, 1); + test("abcde", 2, 4, "abcdefghij", 1, 8, 1); + test("abcde", 2, 4, "abcdefghij", 1, 9, 1); + test("abcde", 2, 4, "abcdefghij", 1, 10, 1); + test("abcde", 2, 4, "abcdefghij", 5, 0, 3); + test("abcde", 2, 4, "abcdefghij", 5, 1, -3); + test("abcde", 2, 4, "abcdefghij", 5, 2, -3); + test("abcde", 2, 4, "abcdefghij", 5, 4, -3); + test("abcde", 2, 4, "abcdefghij", 5, 5, -3); + test("abcde", 2, 4, "abcdefghij", 5, 6, -3); + test("abcde", 2, 4, "abcdefghij", 9, 0, 3); + test("abcde", 2, 4, "abcdefghij", 9, 1, -7); + test("abcde", 2, 4, "abcdefghij", 9, 2, -7); + test("abcde", 2, 4, "abcdefghij", 10, 0, 3); + test("abcde", 2, 4, "abcdefghij", 10, 1, 3); + test("abcde", 2, 4, "abcdefghij", 11, 0, 0); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 0, 3); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 1, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 10, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 19, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 20, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 0, 21, 2); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 0, 3); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 1, 1); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 9, 1); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 18, 1); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 19, 1); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 1, 20, 1); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 0, 3); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 1, -8); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 5, -8); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 9, -8); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 10, -8); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 10, 11, -8); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 0, 3); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 1, -17); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 19, 2, -17); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 20, 0, 3); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 20, 1, 3); + test("abcde", 2, 4, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 4, 0, "", 0, 0, 0); + test("abcde", 4, 0, "", 0, 1, 0); + test("abcde", 4, 0, "", 1, 0, 0); + test("abcde", 4, 0, "abcde", 0, 0, 0); + test("abcde", 4, 0, "abcde", 0, 1, -1); + test("abcde", 4, 0, "abcde", 0, 2, -2); + test("abcde", 4, 0, "abcde", 0, 4, -4); + test("abcde", 4, 0, "abcde", 0, 5, -5); + test("abcde", 4, 0, "abcde", 0, 6, -5); + test("abcde", 4, 0, "abcde", 1, 0, 0); + test("abcde", 4, 0, "abcde", 1, 1, -1); + test("abcde", 4, 0, "abcde", 1, 2, -2); + test("abcde", 4, 0, "abcde", 1, 3, -3); + test("abcde", 4, 0, "abcde", 1, 4, -4); + test("abcde", 4, 0, "abcde", 1, 5, -4); + test("abcde", 4, 0, "abcde", 2, 0, 0); + test("abcde", 4, 0, "abcde", 2, 1, -1); + test("abcde", 4, 0, "abcde", 2, 2, -2); + test("abcde", 4, 0, "abcde", 2, 3, -3); + test("abcde", 4, 0, "abcde", 2, 4, -3); } -void test15() -{ - test("abcde", 4, 0, "abcde", 4, 0, 0); - test("abcde", 4, 0, "abcde", 4, 1, -1); - test("abcde", 4, 0, "abcde", 4, 2, -1); - test("abcde", 4, 0, "abcde", 5, 0, 0); - test("abcde", 4, 0, "abcde", 5, 1, 0); - test("abcde", 4, 0, "abcde", 6, 0, 0); - test("abcde", 4, 0, "abcdefghij", 0, 0, 0); - test("abcde", 4, 0, "abcdefghij", 0, 1, -1); - test("abcde", 4, 0, "abcdefghij", 0, 5, -5); - test("abcde", 4, 0, "abcdefghij", 0, 9, -9); - test("abcde", 4, 0, "abcdefghij", 0, 10, -10); - test("abcde", 4, 0, "abcdefghij", 0, 11, -10); - test("abcde", 4, 0, "abcdefghij", 1, 0, 0); - test("abcde", 4, 0, "abcdefghij", 1, 1, -1); - test("abcde", 4, 0, "abcdefghij", 1, 4, -4); - test("abcde", 4, 0, "abcdefghij", 1, 8, -8); - test("abcde", 4, 0, "abcdefghij", 1, 9, -9); - test("abcde", 4, 0, "abcdefghij", 1, 10, -9); - test("abcde", 4, 0, "abcdefghij", 5, 0, 0); - test("abcde", 4, 0, "abcdefghij", 5, 1, -1); - test("abcde", 4, 0, "abcdefghij", 5, 2, -2); - test("abcde", 4, 0, "abcdefghij", 5, 4, -4); - test("abcde", 4, 0, "abcdefghij", 5, 5, -5); - test("abcde", 4, 0, "abcdefghij", 5, 6, -5); - test("abcde", 4, 0, "abcdefghij", 9, 0, 0); - test("abcde", 4, 0, "abcdefghij", 9, 1, -1); - test("abcde", 4, 0, "abcdefghij", 9, 2, -1); - test("abcde", 4, 0, "abcdefghij", 10, 0, 0); - test("abcde", 4, 0, "abcdefghij", 10, 1, 0); - test("abcde", 4, 0, "abcdefghij", 11, 0, 0); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcde", 4, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 4, 1, "", 0, 0, 1); - test("abcde", 4, 1, "", 0, 1, 1); - test("abcde", 4, 1, "", 1, 0, 0); - test("abcde", 4, 1, "abcde", 0, 0, 1); - test("abcde", 4, 1, "abcde", 0, 1, 4); - test("abcde", 4, 1, "abcde", 0, 2, 4); - test("abcde", 4, 1, "abcde", 0, 4, 4); - test("abcde", 4, 1, "abcde", 0, 5, 4); - test("abcde", 4, 1, "abcde", 0, 6, 4); - test("abcde", 4, 1, "abcde", 1, 0, 1); - test("abcde", 4, 1, "abcde", 1, 1, 3); - test("abcde", 4, 1, "abcde", 1, 2, 3); - test("abcde", 4, 1, "abcde", 1, 3, 3); - test("abcde", 4, 1, "abcde", 1, 4, 3); - test("abcde", 4, 1, "abcde", 1, 5, 3); - test("abcde", 4, 1, "abcde", 2, 0, 1); - test("abcde", 4, 1, "abcde", 2, 1, 2); - test("abcde", 4, 1, "abcde", 2, 2, 2); - test("abcde", 4, 1, "abcde", 2, 3, 2); - test("abcde", 4, 1, "abcde", 2, 4, 2); - test("abcde", 4, 1, "abcde", 4, 0, 1); - test("abcde", 4, 1, "abcde", 4, 1, 0); - test("abcde", 4, 1, "abcde", 4, 2, 0); - test("abcde", 4, 1, "abcde", 5, 0, 1); - test("abcde", 4, 1, "abcde", 5, 1, 1); - test("abcde", 4, 1, "abcde", 6, 0, 0); - test("abcde", 4, 1, "abcdefghij", 0, 0, 1); - test("abcde", 4, 1, "abcdefghij", 0, 1, 4); - test("abcde", 4, 1, "abcdefghij", 0, 5, 4); - test("abcde", 4, 1, "abcdefghij", 0, 9, 4); - test("abcde", 4, 1, "abcdefghij", 0, 10, 4); - test("abcde", 4, 1, "abcdefghij", 0, 11, 4); - test("abcde", 4, 1, "abcdefghij", 1, 0, 1); - test("abcde", 4, 1, "abcdefghij", 1, 1, 3); - test("abcde", 4, 1, "abcdefghij", 1, 4, 3); - test("abcde", 4, 1, "abcdefghij", 1, 8, 3); - test("abcde", 4, 1, "abcdefghij", 1, 9, 3); - test("abcde", 4, 1, "abcdefghij", 1, 10, 3); - test("abcde", 4, 1, "abcdefghij", 5, 0, 1); - test("abcde", 4, 1, "abcdefghij", 5, 1, -1); - test("abcde", 4, 1, "abcdefghij", 5, 2, -1); - test("abcde", 4, 1, "abcdefghij", 5, 4, -1); - test("abcde", 4, 1, "abcdefghij", 5, 5, -1); - test("abcde", 4, 1, "abcdefghij", 5, 6, -1); - test("abcde", 4, 1, "abcdefghij", 9, 0, 1); - test("abcde", 4, 1, "abcdefghij", 9, 1, -5); +void test15() { + test("abcde", 4, 0, "abcde", 4, 0, 0); + test("abcde", 4, 0, "abcde", 4, 1, -1); + test("abcde", 4, 0, "abcde", 4, 2, -1); + test("abcde", 4, 0, "abcde", 5, 0, 0); + test("abcde", 4, 0, "abcde", 5, 1, 0); + test("abcde", 4, 0, "abcde", 6, 0, 0); + test("abcde", 4, 0, "abcdefghij", 0, 0, 0); + test("abcde", 4, 0, "abcdefghij", 0, 1, -1); + test("abcde", 4, 0, "abcdefghij", 0, 5, -5); + test("abcde", 4, 0, "abcdefghij", 0, 9, -9); + test("abcde", 4, 0, "abcdefghij", 0, 10, -10); + test("abcde", 4, 0, "abcdefghij", 0, 11, -10); + test("abcde", 4, 0, "abcdefghij", 1, 0, 0); + test("abcde", 4, 0, "abcdefghij", 1, 1, -1); + test("abcde", 4, 0, "abcdefghij", 1, 4, -4); + test("abcde", 4, 0, "abcdefghij", 1, 8, -8); + test("abcde", 4, 0, "abcdefghij", 1, 9, -9); + test("abcde", 4, 0, "abcdefghij", 1, 10, -9); + test("abcde", 4, 0, "abcdefghij", 5, 0, 0); + test("abcde", 4, 0, "abcdefghij", 5, 1, -1); + test("abcde", 4, 0, "abcdefghij", 5, 2, -2); + test("abcde", 4, 0, "abcdefghij", 5, 4, -4); + test("abcde", 4, 0, "abcdefghij", 5, 5, -5); + test("abcde", 4, 0, "abcdefghij", 5, 6, -5); + test("abcde", 4, 0, "abcdefghij", 9, 0, 0); + test("abcde", 4, 0, "abcdefghij", 9, 1, -1); + test("abcde", 4, 0, "abcdefghij", 9, 2, -1); + test("abcde", 4, 0, "abcdefghij", 10, 0, 0); + test("abcde", 4, 0, "abcdefghij", 10, 1, 0); + test("abcde", 4, 0, "abcdefghij", 11, 0, 0); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcde", 4, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 4, 1, "", 0, 0, 1); + test("abcde", 4, 1, "", 0, 1, 1); + test("abcde", 4, 1, "", 1, 0, 0); + test("abcde", 4, 1, "abcde", 0, 0, 1); + test("abcde", 4, 1, "abcde", 0, 1, 4); + test("abcde", 4, 1, "abcde", 0, 2, 4); + test("abcde", 4, 1, "abcde", 0, 4, 4); + test("abcde", 4, 1, "abcde", 0, 5, 4); + test("abcde", 4, 1, "abcde", 0, 6, 4); + test("abcde", 4, 1, "abcde", 1, 0, 1); + test("abcde", 4, 1, "abcde", 1, 1, 3); + test("abcde", 4, 1, "abcde", 1, 2, 3); + test("abcde", 4, 1, "abcde", 1, 3, 3); + test("abcde", 4, 1, "abcde", 1, 4, 3); + test("abcde", 4, 1, "abcde", 1, 5, 3); + test("abcde", 4, 1, "abcde", 2, 0, 1); + test("abcde", 4, 1, "abcde", 2, 1, 2); + test("abcde", 4, 1, "abcde", 2, 2, 2); + test("abcde", 4, 1, "abcde", 2, 3, 2); + test("abcde", 4, 1, "abcde", 2, 4, 2); + test("abcde", 4, 1, "abcde", 4, 0, 1); + test("abcde", 4, 1, "abcde", 4, 1, 0); + test("abcde", 4, 1, "abcde", 4, 2, 0); + test("abcde", 4, 1, "abcde", 5, 0, 1); + test("abcde", 4, 1, "abcde", 5, 1, 1); + test("abcde", 4, 1, "abcde", 6, 0, 0); + test("abcde", 4, 1, "abcdefghij", 0, 0, 1); + test("abcde", 4, 1, "abcdefghij", 0, 1, 4); + test("abcde", 4, 1, "abcdefghij", 0, 5, 4); + test("abcde", 4, 1, "abcdefghij", 0, 9, 4); + test("abcde", 4, 1, "abcdefghij", 0, 10, 4); + test("abcde", 4, 1, "abcdefghij", 0, 11, 4); + test("abcde", 4, 1, "abcdefghij", 1, 0, 1); + test("abcde", 4, 1, "abcdefghij", 1, 1, 3); + test("abcde", 4, 1, "abcdefghij", 1, 4, 3); + test("abcde", 4, 1, "abcdefghij", 1, 8, 3); + test("abcde", 4, 1, "abcdefghij", 1, 9, 3); + test("abcde", 4, 1, "abcdefghij", 1, 10, 3); + test("abcde", 4, 1, "abcdefghij", 5, 0, 1); + test("abcde", 4, 1, "abcdefghij", 5, 1, -1); + test("abcde", 4, 1, "abcdefghij", 5, 2, -1); + test("abcde", 4, 1, "abcdefghij", 5, 4, -1); + test("abcde", 4, 1, "abcdefghij", 5, 5, -1); + test("abcde", 4, 1, "abcdefghij", 5, 6, -1); + test("abcde", 4, 1, "abcdefghij", 9, 0, 1); + test("abcde", 4, 1, "abcdefghij", 9, 1, -5); } -void test16() -{ - test("abcde", 4, 1, "abcdefghij", 9, 2, -5); - test("abcde", 4, 1, "abcdefghij", 10, 0, 1); - test("abcde", 4, 1, "abcdefghij", 10, 1, 1); - test("abcde", 4, 1, "abcdefghij", 11, 0, 0); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 1, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 10, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 19, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 20, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 21, 4); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 1, 3); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 9, 3); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 18, 3); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 19, 3); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 20, 3); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 1, -6); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 5, -6); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 9, -6); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 10, -6); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 11, -6); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 1, -15); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 2, -15); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcde", 4, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 4, 2, "", 0, 0, 1); - test("abcde", 4, 2, "", 0, 1, 1); - test("abcde", 4, 2, "", 1, 0, 0); - test("abcde", 4, 2, "abcde", 0, 0, 1); - test("abcde", 4, 2, "abcde", 0, 1, 4); - test("abcde", 4, 2, "abcde", 0, 2, 4); - test("abcde", 4, 2, "abcde", 0, 4, 4); - test("abcde", 4, 2, "abcde", 0, 5, 4); - test("abcde", 4, 2, "abcde", 0, 6, 4); - test("abcde", 4, 2, "abcde", 1, 0, 1); - test("abcde", 4, 2, "abcde", 1, 1, 3); - test("abcde", 4, 2, "abcde", 1, 2, 3); - test("abcde", 4, 2, "abcde", 1, 3, 3); - test("abcde", 4, 2, "abcde", 1, 4, 3); - test("abcde", 4, 2, "abcde", 1, 5, 3); - test("abcde", 4, 2, "abcde", 2, 0, 1); - test("abcde", 4, 2, "abcde", 2, 1, 2); - test("abcde", 4, 2, "abcde", 2, 2, 2); - test("abcde", 4, 2, "abcde", 2, 3, 2); - test("abcde", 4, 2, "abcde", 2, 4, 2); - test("abcde", 4, 2, "abcde", 4, 0, 1); - test("abcde", 4, 2, "abcde", 4, 1, 0); - test("abcde", 4, 2, "abcde", 4, 2, 0); - test("abcde", 4, 2, "abcde", 5, 0, 1); - test("abcde", 4, 2, "abcde", 5, 1, 1); - test("abcde", 4, 2, "abcde", 6, 0, 0); - test("abcde", 4, 2, "abcdefghij", 0, 0, 1); - test("abcde", 4, 2, "abcdefghij", 0, 1, 4); - test("abcde", 4, 2, "abcdefghij", 0, 5, 4); - test("abcde", 4, 2, "abcdefghij", 0, 9, 4); - test("abcde", 4, 2, "abcdefghij", 0, 10, 4); - test("abcde", 4, 2, "abcdefghij", 0, 11, 4); - test("abcde", 4, 2, "abcdefghij", 1, 0, 1); - test("abcde", 4, 2, "abcdefghij", 1, 1, 3); - test("abcde", 4, 2, "abcdefghij", 1, 4, 3); - test("abcde", 4, 2, "abcdefghij", 1, 8, 3); - test("abcde", 4, 2, "abcdefghij", 1, 9, 3); - test("abcde", 4, 2, "abcdefghij", 1, 10, 3); - test("abcde", 4, 2, "abcdefghij", 5, 0, 1); - test("abcde", 4, 2, "abcdefghij", 5, 1, -1); - test("abcde", 4, 2, "abcdefghij", 5, 2, -1); - test("abcde", 4, 2, "abcdefghij", 5, 4, -1); - test("abcde", 4, 2, "abcdefghij", 5, 5, -1); - test("abcde", 4, 2, "abcdefghij", 5, 6, -1); - test("abcde", 4, 2, "abcdefghij", 9, 0, 1); - test("abcde", 4, 2, "abcdefghij", 9, 1, -5); - test("abcde", 4, 2, "abcdefghij", 9, 2, -5); - test("abcde", 4, 2, "abcdefghij", 10, 0, 1); - test("abcde", 4, 2, "abcdefghij", 10, 1, 1); - test("abcde", 4, 2, "abcdefghij", 11, 0, 0); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 1, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 10, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 19, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 20, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 21, 4); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 1, 3); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 9, 3); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 18, 3); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 19, 3); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 20, 3); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 1, -6); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 5, -6); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 9, -6); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 10, -6); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 11, -6); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 1, -15); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 2, -15); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 20, 0, 1); +void test16() { + test("abcde", 4, 1, "abcdefghij", 9, 2, -5); + test("abcde", 4, 1, "abcdefghij", 10, 0, 1); + test("abcde", 4, 1, "abcdefghij", 10, 1, 1); + test("abcde", 4, 1, "abcdefghij", 11, 0, 0); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 1, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 10, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 19, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 20, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 0, 21, 4); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 1, 3); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 9, 3); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 18, 3); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 19, 3); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 1, 20, 3); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 1, -6); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 5, -6); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 9, -6); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 10, -6); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 10, 11, -6); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 1, -15); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 19, 2, -15); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcde", 4, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 4, 2, "", 0, 0, 1); + test("abcde", 4, 2, "", 0, 1, 1); + test("abcde", 4, 2, "", 1, 0, 0); + test("abcde", 4, 2, "abcde", 0, 0, 1); + test("abcde", 4, 2, "abcde", 0, 1, 4); + test("abcde", 4, 2, "abcde", 0, 2, 4); + test("abcde", 4, 2, "abcde", 0, 4, 4); + test("abcde", 4, 2, "abcde", 0, 5, 4); + test("abcde", 4, 2, "abcde", 0, 6, 4); + test("abcde", 4, 2, "abcde", 1, 0, 1); + test("abcde", 4, 2, "abcde", 1, 1, 3); + test("abcde", 4, 2, "abcde", 1, 2, 3); + test("abcde", 4, 2, "abcde", 1, 3, 3); + test("abcde", 4, 2, "abcde", 1, 4, 3); + test("abcde", 4, 2, "abcde", 1, 5, 3); + test("abcde", 4, 2, "abcde", 2, 0, 1); + test("abcde", 4, 2, "abcde", 2, 1, 2); + test("abcde", 4, 2, "abcde", 2, 2, 2); + test("abcde", 4, 2, "abcde", 2, 3, 2); + test("abcde", 4, 2, "abcde", 2, 4, 2); + test("abcde", 4, 2, "abcde", 4, 0, 1); + test("abcde", 4, 2, "abcde", 4, 1, 0); + test("abcde", 4, 2, "abcde", 4, 2, 0); + test("abcde", 4, 2, "abcde", 5, 0, 1); + test("abcde", 4, 2, "abcde", 5, 1, 1); + test("abcde", 4, 2, "abcde", 6, 0, 0); + test("abcde", 4, 2, "abcdefghij", 0, 0, 1); + test("abcde", 4, 2, "abcdefghij", 0, 1, 4); + test("abcde", 4, 2, "abcdefghij", 0, 5, 4); + test("abcde", 4, 2, "abcdefghij", 0, 9, 4); + test("abcde", 4, 2, "abcdefghij", 0, 10, 4); + test("abcde", 4, 2, "abcdefghij", 0, 11, 4); + test("abcde", 4, 2, "abcdefghij", 1, 0, 1); + test("abcde", 4, 2, "abcdefghij", 1, 1, 3); + test("abcde", 4, 2, "abcdefghij", 1, 4, 3); + test("abcde", 4, 2, "abcdefghij", 1, 8, 3); + test("abcde", 4, 2, "abcdefghij", 1, 9, 3); + test("abcde", 4, 2, "abcdefghij", 1, 10, 3); + test("abcde", 4, 2, "abcdefghij", 5, 0, 1); + test("abcde", 4, 2, "abcdefghij", 5, 1, -1); + test("abcde", 4, 2, "abcdefghij", 5, 2, -1); + test("abcde", 4, 2, "abcdefghij", 5, 4, -1); + test("abcde", 4, 2, "abcdefghij", 5, 5, -1); + test("abcde", 4, 2, "abcdefghij", 5, 6, -1); + test("abcde", 4, 2, "abcdefghij", 9, 0, 1); + test("abcde", 4, 2, "abcdefghij", 9, 1, -5); + test("abcde", 4, 2, "abcdefghij", 9, 2, -5); + test("abcde", 4, 2, "abcdefghij", 10, 0, 1); + test("abcde", 4, 2, "abcdefghij", 10, 1, 1); + test("abcde", 4, 2, "abcdefghij", 11, 0, 0); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 1, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 10, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 19, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 20, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 0, 21, 4); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 1, 3); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 9, 3); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 18, 3); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 19, 3); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 1, 20, 3); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 1, -6); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 5, -6); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 9, -6); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 10, -6); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 10, 11, -6); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 1, -15); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 19, 2, -15); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 20, 0, 1); } -void test17() -{ - test("abcde", 4, 2, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcde", 4, 2, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 5, 0, "", 0, 0, 0); - test("abcde", 5, 0, "", 0, 1, 0); - test("abcde", 5, 0, "", 1, 0, 0); - test("abcde", 5, 0, "abcde", 0, 0, 0); - test("abcde", 5, 0, "abcde", 0, 1, -1); - test("abcde", 5, 0, "abcde", 0, 2, -2); - test("abcde", 5, 0, "abcde", 0, 4, -4); - test("abcde", 5, 0, "abcde", 0, 5, -5); - test("abcde", 5, 0, "abcde", 0, 6, -5); - test("abcde", 5, 0, "abcde", 1, 0, 0); - test("abcde", 5, 0, "abcde", 1, 1, -1); - test("abcde", 5, 0, "abcde", 1, 2, -2); - test("abcde", 5, 0, "abcde", 1, 3, -3); - test("abcde", 5, 0, "abcde", 1, 4, -4); - test("abcde", 5, 0, "abcde", 1, 5, -4); - test("abcde", 5, 0, "abcde", 2, 0, 0); - test("abcde", 5, 0, "abcde", 2, 1, -1); - test("abcde", 5, 0, "abcde", 2, 2, -2); - test("abcde", 5, 0, "abcde", 2, 3, -3); - test("abcde", 5, 0, "abcde", 2, 4, -3); - test("abcde", 5, 0, "abcde", 4, 0, 0); - test("abcde", 5, 0, "abcde", 4, 1, -1); - test("abcde", 5, 0, "abcde", 4, 2, -1); - test("abcde", 5, 0, "abcde", 5, 0, 0); - test("abcde", 5, 0, "abcde", 5, 1, 0); - test("abcde", 5, 0, "abcde", 6, 0, 0); - test("abcde", 5, 0, "abcdefghij", 0, 0, 0); - test("abcde", 5, 0, "abcdefghij", 0, 1, -1); - test("abcde", 5, 0, "abcdefghij", 0, 5, -5); - test("abcde", 5, 0, "abcdefghij", 0, 9, -9); - test("abcde", 5, 0, "abcdefghij", 0, 10, -10); - test("abcde", 5, 0, "abcdefghij", 0, 11, -10); - test("abcde", 5, 0, "abcdefghij", 1, 0, 0); - test("abcde", 5, 0, "abcdefghij", 1, 1, -1); - test("abcde", 5, 0, "abcdefghij", 1, 4, -4); - test("abcde", 5, 0, "abcdefghij", 1, 8, -8); - test("abcde", 5, 0, "abcdefghij", 1, 9, -9); - test("abcde", 5, 0, "abcdefghij", 1, 10, -9); - test("abcde", 5, 0, "abcdefghij", 5, 0, 0); - test("abcde", 5, 0, "abcdefghij", 5, 1, -1); - test("abcde", 5, 0, "abcdefghij", 5, 2, -2); - test("abcde", 5, 0, "abcdefghij", 5, 4, -4); - test("abcde", 5, 0, "abcdefghij", 5, 5, -5); - test("abcde", 5, 0, "abcdefghij", 5, 6, -5); - test("abcde", 5, 0, "abcdefghij", 9, 0, 0); - test("abcde", 5, 0, "abcdefghij", 9, 1, -1); - test("abcde", 5, 0, "abcdefghij", 9, 2, -1); - test("abcde", 5, 0, "abcdefghij", 10, 0, 0); - test("abcde", 5, 0, "abcdefghij", 10, 1, 0); - test("abcde", 5, 0, "abcdefghij", 11, 0, 0); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcde", 5, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 5, 1, "", 0, 0, 0); - test("abcde", 5, 1, "", 0, 1, 0); - test("abcde", 5, 1, "", 1, 0, 0); - test("abcde", 5, 1, "abcde", 0, 0, 0); - test("abcde", 5, 1, "abcde", 0, 1, -1); - test("abcde", 5, 1, "abcde", 0, 2, -2); - test("abcde", 5, 1, "abcde", 0, 4, -4); - test("abcde", 5, 1, "abcde", 0, 5, -5); - test("abcde", 5, 1, "abcde", 0, 6, -5); - test("abcde", 5, 1, "abcde", 1, 0, 0); - test("abcde", 5, 1, "abcde", 1, 1, -1); - test("abcde", 5, 1, "abcde", 1, 2, -2); - test("abcde", 5, 1, "abcde", 1, 3, -3); - test("abcde", 5, 1, "abcde", 1, 4, -4); - test("abcde", 5, 1, "abcde", 1, 5, -4); - test("abcde", 5, 1, "abcde", 2, 0, 0); - test("abcde", 5, 1, "abcde", 2, 1, -1); - test("abcde", 5, 1, "abcde", 2, 2, -2); - test("abcde", 5, 1, "abcde", 2, 3, -3); - test("abcde", 5, 1, "abcde", 2, 4, -3); - test("abcde", 5, 1, "abcde", 4, 0, 0); - test("abcde", 5, 1, "abcde", 4, 1, -1); - test("abcde", 5, 1, "abcde", 4, 2, -1); - test("abcde", 5, 1, "abcde", 5, 0, 0); +void test17() { + test("abcde", 4, 2, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcde", 4, 2, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 5, 0, "", 0, 0, 0); + test("abcde", 5, 0, "", 0, 1, 0); + test("abcde", 5, 0, "", 1, 0, 0); + test("abcde", 5, 0, "abcde", 0, 0, 0); + test("abcde", 5, 0, "abcde", 0, 1, -1); + test("abcde", 5, 0, "abcde", 0, 2, -2); + test("abcde", 5, 0, "abcde", 0, 4, -4); + test("abcde", 5, 0, "abcde", 0, 5, -5); + test("abcde", 5, 0, "abcde", 0, 6, -5); + test("abcde", 5, 0, "abcde", 1, 0, 0); + test("abcde", 5, 0, "abcde", 1, 1, -1); + test("abcde", 5, 0, "abcde", 1, 2, -2); + test("abcde", 5, 0, "abcde", 1, 3, -3); + test("abcde", 5, 0, "abcde", 1, 4, -4); + test("abcde", 5, 0, "abcde", 1, 5, -4); + test("abcde", 5, 0, "abcde", 2, 0, 0); + test("abcde", 5, 0, "abcde", 2, 1, -1); + test("abcde", 5, 0, "abcde", 2, 2, -2); + test("abcde", 5, 0, "abcde", 2, 3, -3); + test("abcde", 5, 0, "abcde", 2, 4, -3); + test("abcde", 5, 0, "abcde", 4, 0, 0); + test("abcde", 5, 0, "abcde", 4, 1, -1); + test("abcde", 5, 0, "abcde", 4, 2, -1); + test("abcde", 5, 0, "abcde", 5, 0, 0); + test("abcde", 5, 0, "abcde", 5, 1, 0); + test("abcde", 5, 0, "abcde", 6, 0, 0); + test("abcde", 5, 0, "abcdefghij", 0, 0, 0); + test("abcde", 5, 0, "abcdefghij", 0, 1, -1); + test("abcde", 5, 0, "abcdefghij", 0, 5, -5); + test("abcde", 5, 0, "abcdefghij", 0, 9, -9); + test("abcde", 5, 0, "abcdefghij", 0, 10, -10); + test("abcde", 5, 0, "abcdefghij", 0, 11, -10); + test("abcde", 5, 0, "abcdefghij", 1, 0, 0); + test("abcde", 5, 0, "abcdefghij", 1, 1, -1); + test("abcde", 5, 0, "abcdefghij", 1, 4, -4); + test("abcde", 5, 0, "abcdefghij", 1, 8, -8); + test("abcde", 5, 0, "abcdefghij", 1, 9, -9); + test("abcde", 5, 0, "abcdefghij", 1, 10, -9); + test("abcde", 5, 0, "abcdefghij", 5, 0, 0); + test("abcde", 5, 0, "abcdefghij", 5, 1, -1); + test("abcde", 5, 0, "abcdefghij", 5, 2, -2); + test("abcde", 5, 0, "abcdefghij", 5, 4, -4); + test("abcde", 5, 0, "abcdefghij", 5, 5, -5); + test("abcde", 5, 0, "abcdefghij", 5, 6, -5); + test("abcde", 5, 0, "abcdefghij", 9, 0, 0); + test("abcde", 5, 0, "abcdefghij", 9, 1, -1); + test("abcde", 5, 0, "abcdefghij", 9, 2, -1); + test("abcde", 5, 0, "abcdefghij", 10, 0, 0); + test("abcde", 5, 0, "abcdefghij", 10, 1, 0); + test("abcde", 5, 0, "abcdefghij", 11, 0, 0); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcde", 5, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 5, 1, "", 0, 0, 0); + test("abcde", 5, 1, "", 0, 1, 0); + test("abcde", 5, 1, "", 1, 0, 0); + test("abcde", 5, 1, "abcde", 0, 0, 0); + test("abcde", 5, 1, "abcde", 0, 1, -1); + test("abcde", 5, 1, "abcde", 0, 2, -2); + test("abcde", 5, 1, "abcde", 0, 4, -4); + test("abcde", 5, 1, "abcde", 0, 5, -5); + test("abcde", 5, 1, "abcde", 0, 6, -5); + test("abcde", 5, 1, "abcde", 1, 0, 0); + test("abcde", 5, 1, "abcde", 1, 1, -1); + test("abcde", 5, 1, "abcde", 1, 2, -2); + test("abcde", 5, 1, "abcde", 1, 3, -3); + test("abcde", 5, 1, "abcde", 1, 4, -4); + test("abcde", 5, 1, "abcde", 1, 5, -4); + test("abcde", 5, 1, "abcde", 2, 0, 0); + test("abcde", 5, 1, "abcde", 2, 1, -1); + test("abcde", 5, 1, "abcde", 2, 2, -2); + test("abcde", 5, 1, "abcde", 2, 3, -3); + test("abcde", 5, 1, "abcde", 2, 4, -3); + test("abcde", 5, 1, "abcde", 4, 0, 0); + test("abcde", 5, 1, "abcde", 4, 1, -1); + test("abcde", 5, 1, "abcde", 4, 2, -1); + test("abcde", 5, 1, "abcde", 5, 0, 0); } -void test18() -{ - test("abcde", 5, 1, "abcde", 5, 1, 0); - test("abcde", 5, 1, "abcde", 6, 0, 0); - test("abcde", 5, 1, "abcdefghij", 0, 0, 0); - test("abcde", 5, 1, "abcdefghij", 0, 1, -1); - test("abcde", 5, 1, "abcdefghij", 0, 5, -5); - test("abcde", 5, 1, "abcdefghij", 0, 9, -9); - test("abcde", 5, 1, "abcdefghij", 0, 10, -10); - test("abcde", 5, 1, "abcdefghij", 0, 11, -10); - test("abcde", 5, 1, "abcdefghij", 1, 0, 0); - test("abcde", 5, 1, "abcdefghij", 1, 1, -1); - test("abcde", 5, 1, "abcdefghij", 1, 4, -4); - test("abcde", 5, 1, "abcdefghij", 1, 8, -8); - test("abcde", 5, 1, "abcdefghij", 1, 9, -9); - test("abcde", 5, 1, "abcdefghij", 1, 10, -9); - test("abcde", 5, 1, "abcdefghij", 5, 0, 0); - test("abcde", 5, 1, "abcdefghij", 5, 1, -1); - test("abcde", 5, 1, "abcdefghij", 5, 2, -2); - test("abcde", 5, 1, "abcdefghij", 5, 4, -4); - test("abcde", 5, 1, "abcdefghij", 5, 5, -5); - test("abcde", 5, 1, "abcdefghij", 5, 6, -5); - test("abcde", 5, 1, "abcdefghij", 9, 0, 0); - test("abcde", 5, 1, "abcdefghij", 9, 1, -1); - test("abcde", 5, 1, "abcdefghij", 9, 2, -1); - test("abcde", 5, 1, "abcdefghij", 10, 0, 0); - test("abcde", 5, 1, "abcdefghij", 10, 1, 0); - test("abcde", 5, 1, "abcdefghij", 11, 0, 0); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcde", 5, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcde", 6, 0, "", 0, 0, 0); - test("abcde", 6, 0, "", 0, 1, 0); - test("abcde", 6, 0, "", 1, 0, 0); - test("abcde", 6, 0, "abcde", 0, 0, 0); - test("abcde", 6, 0, "abcde", 0, 1, 0); - test("abcde", 6, 0, "abcde", 0, 2, 0); - test("abcde", 6, 0, "abcde", 0, 4, 0); - test("abcde", 6, 0, "abcde", 0, 5, 0); - test("abcde", 6, 0, "abcde", 0, 6, 0); - test("abcde", 6, 0, "abcde", 1, 0, 0); - test("abcde", 6, 0, "abcde", 1, 1, 0); - test("abcde", 6, 0, "abcde", 1, 2, 0); - test("abcde", 6, 0, "abcde", 1, 3, 0); - test("abcde", 6, 0, "abcde", 1, 4, 0); - test("abcde", 6, 0, "abcde", 1, 5, 0); - test("abcde", 6, 0, "abcde", 2, 0, 0); - test("abcde", 6, 0, "abcde", 2, 1, 0); - test("abcde", 6, 0, "abcde", 2, 2, 0); - test("abcde", 6, 0, "abcde", 2, 3, 0); - test("abcde", 6, 0, "abcde", 2, 4, 0); - test("abcde", 6, 0, "abcde", 4, 0, 0); - test("abcde", 6, 0, "abcde", 4, 1, 0); - test("abcde", 6, 0, "abcde", 4, 2, 0); - test("abcde", 6, 0, "abcde", 5, 0, 0); - test("abcde", 6, 0, "abcde", 5, 1, 0); - test("abcde", 6, 0, "abcde", 6, 0, 0); - test("abcde", 6, 0, "abcdefghij", 0, 0, 0); - test("abcde", 6, 0, "abcdefghij", 0, 1, 0); - test("abcde", 6, 0, "abcdefghij", 0, 5, 0); - test("abcde", 6, 0, "abcdefghij", 0, 9, 0); - test("abcde", 6, 0, "abcdefghij", 0, 10, 0); - test("abcde", 6, 0, "abcdefghij", 0, 11, 0); - test("abcde", 6, 0, "abcdefghij", 1, 0, 0); - test("abcde", 6, 0, "abcdefghij", 1, 1, 0); - test("abcde", 6, 0, "abcdefghij", 1, 4, 0); - test("abcde", 6, 0, "abcdefghij", 1, 8, 0); - test("abcde", 6, 0, "abcdefghij", 1, 9, 0); - test("abcde", 6, 0, "abcdefghij", 1, 10, 0); - test("abcde", 6, 0, "abcdefghij", 5, 0, 0); - test("abcde", 6, 0, "abcdefghij", 5, 1, 0); - test("abcde", 6, 0, "abcdefghij", 5, 2, 0); - test("abcde", 6, 0, "abcdefghij", 5, 4, 0); - test("abcde", 6, 0, "abcdefghij", 5, 5, 0); - test("abcde", 6, 0, "abcdefghij", 5, 6, 0); - test("abcde", 6, 0, "abcdefghij", 9, 0, 0); - test("abcde", 6, 0, "abcdefghij", 9, 1, 0); - test("abcde", 6, 0, "abcdefghij", 9, 2, 0); - test("abcde", 6, 0, "abcdefghij", 10, 0, 0); - test("abcde", 6, 0, "abcdefghij", 10, 1, 0); - test("abcde", 6, 0, "abcdefghij", 11, 0, 0); +void test18() { + test("abcde", 5, 1, "abcde", 5, 1, 0); + test("abcde", 5, 1, "abcde", 6, 0, 0); + test("abcde", 5, 1, "abcdefghij", 0, 0, 0); + test("abcde", 5, 1, "abcdefghij", 0, 1, -1); + test("abcde", 5, 1, "abcdefghij", 0, 5, -5); + test("abcde", 5, 1, "abcdefghij", 0, 9, -9); + test("abcde", 5, 1, "abcdefghij", 0, 10, -10); + test("abcde", 5, 1, "abcdefghij", 0, 11, -10); + test("abcde", 5, 1, "abcdefghij", 1, 0, 0); + test("abcde", 5, 1, "abcdefghij", 1, 1, -1); + test("abcde", 5, 1, "abcdefghij", 1, 4, -4); + test("abcde", 5, 1, "abcdefghij", 1, 8, -8); + test("abcde", 5, 1, "abcdefghij", 1, 9, -9); + test("abcde", 5, 1, "abcdefghij", 1, 10, -9); + test("abcde", 5, 1, "abcdefghij", 5, 0, 0); + test("abcde", 5, 1, "abcdefghij", 5, 1, -1); + test("abcde", 5, 1, "abcdefghij", 5, 2, -2); + test("abcde", 5, 1, "abcdefghij", 5, 4, -4); + test("abcde", 5, 1, "abcdefghij", 5, 5, -5); + test("abcde", 5, 1, "abcdefghij", 5, 6, -5); + test("abcde", 5, 1, "abcdefghij", 9, 0, 0); + test("abcde", 5, 1, "abcdefghij", 9, 1, -1); + test("abcde", 5, 1, "abcdefghij", 9, 2, -1); + test("abcde", 5, 1, "abcdefghij", 10, 0, 0); + test("abcde", 5, 1, "abcdefghij", 10, 1, 0); + test("abcde", 5, 1, "abcdefghij", 11, 0, 0); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcde", 5, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcde", 6, 0, "", 0, 0, 0); + test("abcde", 6, 0, "", 0, 1, 0); + test("abcde", 6, 0, "", 1, 0, 0); + test("abcde", 6, 0, "abcde", 0, 0, 0); + test("abcde", 6, 0, "abcde", 0, 1, 0); + test("abcde", 6, 0, "abcde", 0, 2, 0); + test("abcde", 6, 0, "abcde", 0, 4, 0); + test("abcde", 6, 0, "abcde", 0, 5, 0); + test("abcde", 6, 0, "abcde", 0, 6, 0); + test("abcde", 6, 0, "abcde", 1, 0, 0); + test("abcde", 6, 0, "abcde", 1, 1, 0); + test("abcde", 6, 0, "abcde", 1, 2, 0); + test("abcde", 6, 0, "abcde", 1, 3, 0); + test("abcde", 6, 0, "abcde", 1, 4, 0); + test("abcde", 6, 0, "abcde", 1, 5, 0); + test("abcde", 6, 0, "abcde", 2, 0, 0); + test("abcde", 6, 0, "abcde", 2, 1, 0); + test("abcde", 6, 0, "abcde", 2, 2, 0); + test("abcde", 6, 0, "abcde", 2, 3, 0); + test("abcde", 6, 0, "abcde", 2, 4, 0); + test("abcde", 6, 0, "abcde", 4, 0, 0); + test("abcde", 6, 0, "abcde", 4, 1, 0); + test("abcde", 6, 0, "abcde", 4, 2, 0); + test("abcde", 6, 0, "abcde", 5, 0, 0); + test("abcde", 6, 0, "abcde", 5, 1, 0); + test("abcde", 6, 0, "abcde", 6, 0, 0); + test("abcde", 6, 0, "abcdefghij", 0, 0, 0); + test("abcde", 6, 0, "abcdefghij", 0, 1, 0); + test("abcde", 6, 0, "abcdefghij", 0, 5, 0); + test("abcde", 6, 0, "abcdefghij", 0, 9, 0); + test("abcde", 6, 0, "abcdefghij", 0, 10, 0); + test("abcde", 6, 0, "abcdefghij", 0, 11, 0); + test("abcde", 6, 0, "abcdefghij", 1, 0, 0); + test("abcde", 6, 0, "abcdefghij", 1, 1, 0); + test("abcde", 6, 0, "abcdefghij", 1, 4, 0); + test("abcde", 6, 0, "abcdefghij", 1, 8, 0); + test("abcde", 6, 0, "abcdefghij", 1, 9, 0); + test("abcde", 6, 0, "abcdefghij", 1, 10, 0); + test("abcde", 6, 0, "abcdefghij", 5, 0, 0); + test("abcde", 6, 0, "abcdefghij", 5, 1, 0); + test("abcde", 6, 0, "abcdefghij", 5, 2, 0); + test("abcde", 6, 0, "abcdefghij", 5, 4, 0); + test("abcde", 6, 0, "abcdefghij", 5, 5, 0); + test("abcde", 6, 0, "abcdefghij", 5, 6, 0); + test("abcde", 6, 0, "abcdefghij", 9, 0, 0); + test("abcde", 6, 0, "abcdefghij", 9, 1, 0); + test("abcde", 6, 0, "abcdefghij", 9, 2, 0); + test("abcde", 6, 0, "abcdefghij", 10, 0, 0); + test("abcde", 6, 0, "abcdefghij", 10, 1, 0); + test("abcde", 6, 0, "abcdefghij", 11, 0, 0); } -void test19() -{ - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 1, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 10, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 19, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 20, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 21, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 1, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 9, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 18, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 19, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 20, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 1, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 5, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 9, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 10, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 11, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 1, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 2, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcde", 6, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 0, 0, "", 0, 0, 0); - test("abcdefghij", 0, 0, "", 0, 1, 0); - test("abcdefghij", 0, 0, "", 1, 0, 0); - test("abcdefghij", 0, 0, "abcde", 0, 0, 0); - test("abcdefghij", 0, 0, "abcde", 0, 1, -1); - test("abcdefghij", 0, 0, "abcde", 0, 2, -2); - test("abcdefghij", 0, 0, "abcde", 0, 4, -4); - test("abcdefghij", 0, 0, "abcde", 0, 5, -5); - test("abcdefghij", 0, 0, "abcde", 0, 6, -5); - test("abcdefghij", 0, 0, "abcde", 1, 0, 0); - test("abcdefghij", 0, 0, "abcde", 1, 1, -1); - test("abcdefghij", 0, 0, "abcde", 1, 2, -2); - test("abcdefghij", 0, 0, "abcde", 1, 3, -3); - test("abcdefghij", 0, 0, "abcde", 1, 4, -4); - test("abcdefghij", 0, 0, "abcde", 1, 5, -4); - test("abcdefghij", 0, 0, "abcde", 2, 0, 0); - test("abcdefghij", 0, 0, "abcde", 2, 1, -1); - test("abcdefghij", 0, 0, "abcde", 2, 2, -2); - test("abcdefghij", 0, 0, "abcde", 2, 3, -3); - test("abcdefghij", 0, 0, "abcde", 2, 4, -3); - test("abcdefghij", 0, 0, "abcde", 4, 0, 0); - test("abcdefghij", 0, 0, "abcde", 4, 1, -1); - test("abcdefghij", 0, 0, "abcde", 4, 2, -1); - test("abcdefghij", 0, 0, "abcde", 5, 0, 0); - test("abcdefghij", 0, 0, "abcde", 5, 1, 0); - test("abcdefghij", 0, 0, "abcde", 6, 0, 0); - test("abcdefghij", 0, 0, "abcdefghij", 0, 0, 0); - test("abcdefghij", 0, 0, "abcdefghij", 0, 1, -1); - test("abcdefghij", 0, 0, "abcdefghij", 0, 5, -5); - test("abcdefghij", 0, 0, "abcdefghij", 0, 9, -9); - test("abcdefghij", 0, 0, "abcdefghij", 0, 10, -10); - test("abcdefghij", 0, 0, "abcdefghij", 0, 11, -10); - test("abcdefghij", 0, 0, "abcdefghij", 1, 0, 0); - test("abcdefghij", 0, 0, "abcdefghij", 1, 1, -1); - test("abcdefghij", 0, 0, "abcdefghij", 1, 4, -4); - test("abcdefghij", 0, 0, "abcdefghij", 1, 8, -8); - test("abcdefghij", 0, 0, "abcdefghij", 1, 9, -9); - test("abcdefghij", 0, 0, "abcdefghij", 1, 10, -9); - test("abcdefghij", 0, 0, "abcdefghij", 5, 0, 0); - test("abcdefghij", 0, 0, "abcdefghij", 5, 1, -1); - test("abcdefghij", 0, 0, "abcdefghij", 5, 2, -2); - test("abcdefghij", 0, 0, "abcdefghij", 5, 4, -4); - test("abcdefghij", 0, 0, "abcdefghij", 5, 5, -5); - test("abcdefghij", 0, 0, "abcdefghij", 5, 6, -5); - test("abcdefghij", 0, 0, "abcdefghij", 9, 0, 0); - test("abcdefghij", 0, 0, "abcdefghij", 9, 1, -1); - test("abcdefghij", 0, 0, "abcdefghij", 9, 2, -1); - test("abcdefghij", 0, 0, "abcdefghij", 10, 0, 0); - test("abcdefghij", 0, 0, "abcdefghij", 10, 1, 0); - test("abcdefghij", 0, 0, "abcdefghij", 11, 0, 0); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 0, 1, "", 0, 0, 1); - test("abcdefghij", 0, 1, "", 0, 1, 1); +void test19() { + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 1, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 10, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 19, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 20, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 0, 21, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 1, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 9, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 18, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 19, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 1, 20, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 1, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 5, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 9, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 10, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 10, 11, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 1, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 19, 2, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcde", 6, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 0, 0, "", 0, 0, 0); + test("abcdefghij", 0, 0, "", 0, 1, 0); + test("abcdefghij", 0, 0, "", 1, 0, 0); + test("abcdefghij", 0, 0, "abcde", 0, 0, 0); + test("abcdefghij", 0, 0, "abcde", 0, 1, -1); + test("abcdefghij", 0, 0, "abcde", 0, 2, -2); + test("abcdefghij", 0, 0, "abcde", 0, 4, -4); + test("abcdefghij", 0, 0, "abcde", 0, 5, -5); + test("abcdefghij", 0, 0, "abcde", 0, 6, -5); + test("abcdefghij", 0, 0, "abcde", 1, 0, 0); + test("abcdefghij", 0, 0, "abcde", 1, 1, -1); + test("abcdefghij", 0, 0, "abcde", 1, 2, -2); + test("abcdefghij", 0, 0, "abcde", 1, 3, -3); + test("abcdefghij", 0, 0, "abcde", 1, 4, -4); + test("abcdefghij", 0, 0, "abcde", 1, 5, -4); + test("abcdefghij", 0, 0, "abcde", 2, 0, 0); + test("abcdefghij", 0, 0, "abcde", 2, 1, -1); + test("abcdefghij", 0, 0, "abcde", 2, 2, -2); + test("abcdefghij", 0, 0, "abcde", 2, 3, -3); + test("abcdefghij", 0, 0, "abcde", 2, 4, -3); + test("abcdefghij", 0, 0, "abcde", 4, 0, 0); + test("abcdefghij", 0, 0, "abcde", 4, 1, -1); + test("abcdefghij", 0, 0, "abcde", 4, 2, -1); + test("abcdefghij", 0, 0, "abcde", 5, 0, 0); + test("abcdefghij", 0, 0, "abcde", 5, 1, 0); + test("abcdefghij", 0, 0, "abcde", 6, 0, 0); + test("abcdefghij", 0, 0, "abcdefghij", 0, 0, 0); + test("abcdefghij", 0, 0, "abcdefghij", 0, 1, -1); + test("abcdefghij", 0, 0, "abcdefghij", 0, 5, -5); + test("abcdefghij", 0, 0, "abcdefghij", 0, 9, -9); + test("abcdefghij", 0, 0, "abcdefghij", 0, 10, -10); + test("abcdefghij", 0, 0, "abcdefghij", 0, 11, -10); + test("abcdefghij", 0, 0, "abcdefghij", 1, 0, 0); + test("abcdefghij", 0, 0, "abcdefghij", 1, 1, -1); + test("abcdefghij", 0, 0, "abcdefghij", 1, 4, -4); + test("abcdefghij", 0, 0, "abcdefghij", 1, 8, -8); + test("abcdefghij", 0, 0, "abcdefghij", 1, 9, -9); + test("abcdefghij", 0, 0, "abcdefghij", 1, 10, -9); + test("abcdefghij", 0, 0, "abcdefghij", 5, 0, 0); + test("abcdefghij", 0, 0, "abcdefghij", 5, 1, -1); + test("abcdefghij", 0, 0, "abcdefghij", 5, 2, -2); + test("abcdefghij", 0, 0, "abcdefghij", 5, 4, -4); + test("abcdefghij", 0, 0, "abcdefghij", 5, 5, -5); + test("abcdefghij", 0, 0, "abcdefghij", 5, 6, -5); + test("abcdefghij", 0, 0, "abcdefghij", 9, 0, 0); + test("abcdefghij", 0, 0, "abcdefghij", 9, 1, -1); + test("abcdefghij", 0, 0, "abcdefghij", 9, 2, -1); + test("abcdefghij", 0, 0, "abcdefghij", 10, 0, 0); + test("abcdefghij", 0, 0, "abcdefghij", 10, 1, 0); + test("abcdefghij", 0, 0, "abcdefghij", 11, 0, 0); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghij", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 0, 1, "", 0, 0, 1); + test("abcdefghij", 0, 1, "", 0, 1, 1); } -void test20() -{ - test("abcdefghij", 0, 1, "", 1, 0, 0); - test("abcdefghij", 0, 1, "abcde", 0, 0, 1); - test("abcdefghij", 0, 1, "abcde", 0, 1, 0); - test("abcdefghij", 0, 1, "abcde", 0, 2, -1); - test("abcdefghij", 0, 1, "abcde", 0, 4, -3); - test("abcdefghij", 0, 1, "abcde", 0, 5, -4); - test("abcdefghij", 0, 1, "abcde", 0, 6, -4); - test("abcdefghij", 0, 1, "abcde", 1, 0, 1); - test("abcdefghij", 0, 1, "abcde", 1, 1, -1); - test("abcdefghij", 0, 1, "abcde", 1, 2, -1); - test("abcdefghij", 0, 1, "abcde", 1, 3, -1); - test("abcdefghij", 0, 1, "abcde", 1, 4, -1); - test("abcdefghij", 0, 1, "abcde", 1, 5, -1); - test("abcdefghij", 0, 1, "abcde", 2, 0, 1); - test("abcdefghij", 0, 1, "abcde", 2, 1, -2); - test("abcdefghij", 0, 1, "abcde", 2, 2, -2); - test("abcdefghij", 0, 1, "abcde", 2, 3, -2); - test("abcdefghij", 0, 1, "abcde", 2, 4, -2); - test("abcdefghij", 0, 1, "abcde", 4, 0, 1); - test("abcdefghij", 0, 1, "abcde", 4, 1, -4); - test("abcdefghij", 0, 1, "abcde", 4, 2, -4); - test("abcdefghij", 0, 1, "abcde", 5, 0, 1); - test("abcdefghij", 0, 1, "abcde", 5, 1, 1); - test("abcdefghij", 0, 1, "abcde", 6, 0, 0); - test("abcdefghij", 0, 1, "abcdefghij", 0, 0, 1); - test("abcdefghij", 0, 1, "abcdefghij", 0, 1, 0); - test("abcdefghij", 0, 1, "abcdefghij", 0, 5, -4); - test("abcdefghij", 0, 1, "abcdefghij", 0, 9, -8); - test("abcdefghij", 0, 1, "abcdefghij", 0, 10, -9); - test("abcdefghij", 0, 1, "abcdefghij", 0, 11, -9); - test("abcdefghij", 0, 1, "abcdefghij", 1, 0, 1); - test("abcdefghij", 0, 1, "abcdefghij", 1, 1, -1); - test("abcdefghij", 0, 1, "abcdefghij", 1, 4, -1); - test("abcdefghij", 0, 1, "abcdefghij", 1, 8, -1); - test("abcdefghij", 0, 1, "abcdefghij", 1, 9, -1); - test("abcdefghij", 0, 1, "abcdefghij", 1, 10, -1); - test("abcdefghij", 0, 1, "abcdefghij", 5, 0, 1); - test("abcdefghij", 0, 1, "abcdefghij", 5, 1, -5); - test("abcdefghij", 0, 1, "abcdefghij", 5, 2, -5); - test("abcdefghij", 0, 1, "abcdefghij", 5, 4, -5); - test("abcdefghij", 0, 1, "abcdefghij", 5, 5, -5); - test("abcdefghij", 0, 1, "abcdefghij", 5, 6, -5); - test("abcdefghij", 0, 1, "abcdefghij", 9, 0, 1); - test("abcdefghij", 0, 1, "abcdefghij", 9, 1, -9); - test("abcdefghij", 0, 1, "abcdefghij", 9, 2, -9); - test("abcdefghij", 0, 1, "abcdefghij", 10, 0, 1); - test("abcdefghij", 0, 1, "abcdefghij", 10, 1, 1); - test("abcdefghij", 0, 1, "abcdefghij", 11, 0, 0); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 0, 5, "", 0, 0, 5); - test("abcdefghij", 0, 5, "", 0, 1, 5); - test("abcdefghij", 0, 5, "", 1, 0, 0); - test("abcdefghij", 0, 5, "abcde", 0, 0, 5); - test("abcdefghij", 0, 5, "abcde", 0, 1, 4); - test("abcdefghij", 0, 5, "abcde", 0, 2, 3); - test("abcdefghij", 0, 5, "abcde", 0, 4, 1); - test("abcdefghij", 0, 5, "abcde", 0, 5, 0); - test("abcdefghij", 0, 5, "abcde", 0, 6, 0); - test("abcdefghij", 0, 5, "abcde", 1, 0, 5); - test("abcdefghij", 0, 5, "abcde", 1, 1, -1); - test("abcdefghij", 0, 5, "abcde", 1, 2, -1); - test("abcdefghij", 0, 5, "abcde", 1, 3, -1); - test("abcdefghij", 0, 5, "abcde", 1, 4, -1); - test("abcdefghij", 0, 5, "abcde", 1, 5, -1); - test("abcdefghij", 0, 5, "abcde", 2, 0, 5); - test("abcdefghij", 0, 5, "abcde", 2, 1, -2); - test("abcdefghij", 0, 5, "abcde", 2, 2, -2); - test("abcdefghij", 0, 5, "abcde", 2, 3, -2); - test("abcdefghij", 0, 5, "abcde", 2, 4, -2); - test("abcdefghij", 0, 5, "abcde", 4, 0, 5); - test("abcdefghij", 0, 5, "abcde", 4, 1, -4); - test("abcdefghij", 0, 5, "abcde", 4, 2, -4); - test("abcdefghij", 0, 5, "abcde", 5, 0, 5); - test("abcdefghij", 0, 5, "abcde", 5, 1, 5); - test("abcdefghij", 0, 5, "abcde", 6, 0, 0); - test("abcdefghij", 0, 5, "abcdefghij", 0, 0, 5); - test("abcdefghij", 0, 5, "abcdefghij", 0, 1, 4); +void test20() { + test("abcdefghij", 0, 1, "", 1, 0, 0); + test("abcdefghij", 0, 1, "abcde", 0, 0, 1); + test("abcdefghij", 0, 1, "abcde", 0, 1, 0); + test("abcdefghij", 0, 1, "abcde", 0, 2, -1); + test("abcdefghij", 0, 1, "abcde", 0, 4, -3); + test("abcdefghij", 0, 1, "abcde", 0, 5, -4); + test("abcdefghij", 0, 1, "abcde", 0, 6, -4); + test("abcdefghij", 0, 1, "abcde", 1, 0, 1); + test("abcdefghij", 0, 1, "abcde", 1, 1, -1); + test("abcdefghij", 0, 1, "abcde", 1, 2, -1); + test("abcdefghij", 0, 1, "abcde", 1, 3, -1); + test("abcdefghij", 0, 1, "abcde", 1, 4, -1); + test("abcdefghij", 0, 1, "abcde", 1, 5, -1); + test("abcdefghij", 0, 1, "abcde", 2, 0, 1); + test("abcdefghij", 0, 1, "abcde", 2, 1, -2); + test("abcdefghij", 0, 1, "abcde", 2, 2, -2); + test("abcdefghij", 0, 1, "abcde", 2, 3, -2); + test("abcdefghij", 0, 1, "abcde", 2, 4, -2); + test("abcdefghij", 0, 1, "abcde", 4, 0, 1); + test("abcdefghij", 0, 1, "abcde", 4, 1, -4); + test("abcdefghij", 0, 1, "abcde", 4, 2, -4); + test("abcdefghij", 0, 1, "abcde", 5, 0, 1); + test("abcdefghij", 0, 1, "abcde", 5, 1, 1); + test("abcdefghij", 0, 1, "abcde", 6, 0, 0); + test("abcdefghij", 0, 1, "abcdefghij", 0, 0, 1); + test("abcdefghij", 0, 1, "abcdefghij", 0, 1, 0); + test("abcdefghij", 0, 1, "abcdefghij", 0, 5, -4); + test("abcdefghij", 0, 1, "abcdefghij", 0, 9, -8); + test("abcdefghij", 0, 1, "abcdefghij", 0, 10, -9); + test("abcdefghij", 0, 1, "abcdefghij", 0, 11, -9); + test("abcdefghij", 0, 1, "abcdefghij", 1, 0, 1); + test("abcdefghij", 0, 1, "abcdefghij", 1, 1, -1); + test("abcdefghij", 0, 1, "abcdefghij", 1, 4, -1); + test("abcdefghij", 0, 1, "abcdefghij", 1, 8, -1); + test("abcdefghij", 0, 1, "abcdefghij", 1, 9, -1); + test("abcdefghij", 0, 1, "abcdefghij", 1, 10, -1); + test("abcdefghij", 0, 1, "abcdefghij", 5, 0, 1); + test("abcdefghij", 0, 1, "abcdefghij", 5, 1, -5); + test("abcdefghij", 0, 1, "abcdefghij", 5, 2, -5); + test("abcdefghij", 0, 1, "abcdefghij", 5, 4, -5); + test("abcdefghij", 0, 1, "abcdefghij", 5, 5, -5); + test("abcdefghij", 0, 1, "abcdefghij", 5, 6, -5); + test("abcdefghij", 0, 1, "abcdefghij", 9, 0, 1); + test("abcdefghij", 0, 1, "abcdefghij", 9, 1, -9); + test("abcdefghij", 0, 1, "abcdefghij", 9, 2, -9); + test("abcdefghij", 0, 1, "abcdefghij", 10, 0, 1); + test("abcdefghij", 0, 1, "abcdefghij", 10, 1, 1); + test("abcdefghij", 0, 1, "abcdefghij", 11, 0, 0); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghij", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 0, 5, "", 0, 0, 5); + test("abcdefghij", 0, 5, "", 0, 1, 5); + test("abcdefghij", 0, 5, "", 1, 0, 0); + test("abcdefghij", 0, 5, "abcde", 0, 0, 5); + test("abcdefghij", 0, 5, "abcde", 0, 1, 4); + test("abcdefghij", 0, 5, "abcde", 0, 2, 3); + test("abcdefghij", 0, 5, "abcde", 0, 4, 1); + test("abcdefghij", 0, 5, "abcde", 0, 5, 0); + test("abcdefghij", 0, 5, "abcde", 0, 6, 0); + test("abcdefghij", 0, 5, "abcde", 1, 0, 5); + test("abcdefghij", 0, 5, "abcde", 1, 1, -1); + test("abcdefghij", 0, 5, "abcde", 1, 2, -1); + test("abcdefghij", 0, 5, "abcde", 1, 3, -1); + test("abcdefghij", 0, 5, "abcde", 1, 4, -1); + test("abcdefghij", 0, 5, "abcde", 1, 5, -1); + test("abcdefghij", 0, 5, "abcde", 2, 0, 5); + test("abcdefghij", 0, 5, "abcde", 2, 1, -2); + test("abcdefghij", 0, 5, "abcde", 2, 2, -2); + test("abcdefghij", 0, 5, "abcde", 2, 3, -2); + test("abcdefghij", 0, 5, "abcde", 2, 4, -2); + test("abcdefghij", 0, 5, "abcde", 4, 0, 5); + test("abcdefghij", 0, 5, "abcde", 4, 1, -4); + test("abcdefghij", 0, 5, "abcde", 4, 2, -4); + test("abcdefghij", 0, 5, "abcde", 5, 0, 5); + test("abcdefghij", 0, 5, "abcde", 5, 1, 5); + test("abcdefghij", 0, 5, "abcde", 6, 0, 0); + test("abcdefghij", 0, 5, "abcdefghij", 0, 0, 5); + test("abcdefghij", 0, 5, "abcdefghij", 0, 1, 4); } -void test21() -{ - test("abcdefghij", 0, 5, "abcdefghij", 0, 5, 0); - test("abcdefghij", 0, 5, "abcdefghij", 0, 9, -4); - test("abcdefghij", 0, 5, "abcdefghij", 0, 10, -5); - test("abcdefghij", 0, 5, "abcdefghij", 0, 11, -5); - test("abcdefghij", 0, 5, "abcdefghij", 1, 0, 5); - test("abcdefghij", 0, 5, "abcdefghij", 1, 1, -1); - test("abcdefghij", 0, 5, "abcdefghij", 1, 4, -1); - test("abcdefghij", 0, 5, "abcdefghij", 1, 8, -1); - test("abcdefghij", 0, 5, "abcdefghij", 1, 9, -1); - test("abcdefghij", 0, 5, "abcdefghij", 1, 10, -1); - test("abcdefghij", 0, 5, "abcdefghij", 5, 0, 5); - test("abcdefghij", 0, 5, "abcdefghij", 5, 1, -5); - test("abcdefghij", 0, 5, "abcdefghij", 5, 2, -5); - test("abcdefghij", 0, 5, "abcdefghij", 5, 4, -5); - test("abcdefghij", 0, 5, "abcdefghij", 5, 5, -5); - test("abcdefghij", 0, 5, "abcdefghij", 5, 6, -5); - test("abcdefghij", 0, 5, "abcdefghij", 9, 0, 5); - test("abcdefghij", 0, 5, "abcdefghij", 9, 1, -9); - test("abcdefghij", 0, 5, "abcdefghij", 9, 2, -9); - test("abcdefghij", 0, 5, "abcdefghij", 10, 0, 5); - test("abcdefghij", 0, 5, "abcdefghij", 10, 1, 5); - test("abcdefghij", 0, 5, "abcdefghij", 11, 0, 0); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 0, 5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 1, 4); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 10, -5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 19, -14); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 20, -15); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 21, -15); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 0, 5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 0, 5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 0, 5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 20, 0, 5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 20, 1, 5); - test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 0, 9, "", 0, 0, 9); - test("abcdefghij", 0, 9, "", 0, 1, 9); - test("abcdefghij", 0, 9, "", 1, 0, 0); - test("abcdefghij", 0, 9, "abcde", 0, 0, 9); - test("abcdefghij", 0, 9, "abcde", 0, 1, 8); - test("abcdefghij", 0, 9, "abcde", 0, 2, 7); - test("abcdefghij", 0, 9, "abcde", 0, 4, 5); - test("abcdefghij", 0, 9, "abcde", 0, 5, 4); - test("abcdefghij", 0, 9, "abcde", 0, 6, 4); - test("abcdefghij", 0, 9, "abcde", 1, 0, 9); - test("abcdefghij", 0, 9, "abcde", 1, 1, -1); - test("abcdefghij", 0, 9, "abcde", 1, 2, -1); - test("abcdefghij", 0, 9, "abcde", 1, 3, -1); - test("abcdefghij", 0, 9, "abcde", 1, 4, -1); - test("abcdefghij", 0, 9, "abcde", 1, 5, -1); - test("abcdefghij", 0, 9, "abcde", 2, 0, 9); - test("abcdefghij", 0, 9, "abcde", 2, 1, -2); - test("abcdefghij", 0, 9, "abcde", 2, 2, -2); - test("abcdefghij", 0, 9, "abcde", 2, 3, -2); - test("abcdefghij", 0, 9, "abcde", 2, 4, -2); - test("abcdefghij", 0, 9, "abcde", 4, 0, 9); - test("abcdefghij", 0, 9, "abcde", 4, 1, -4); - test("abcdefghij", 0, 9, "abcde", 4, 2, -4); - test("abcdefghij", 0, 9, "abcde", 5, 0, 9); - test("abcdefghij", 0, 9, "abcde", 5, 1, 9); - test("abcdefghij", 0, 9, "abcde", 6, 0, 0); - test("abcdefghij", 0, 9, "abcdefghij", 0, 0, 9); - test("abcdefghij", 0, 9, "abcdefghij", 0, 1, 8); - test("abcdefghij", 0, 9, "abcdefghij", 0, 5, 4); - test("abcdefghij", 0, 9, "abcdefghij", 0, 9, 0); - test("abcdefghij", 0, 9, "abcdefghij", 0, 10, -1); - test("abcdefghij", 0, 9, "abcdefghij", 0, 11, -1); - test("abcdefghij", 0, 9, "abcdefghij", 1, 0, 9); - test("abcdefghij", 0, 9, "abcdefghij", 1, 1, -1); - test("abcdefghij", 0, 9, "abcdefghij", 1, 4, -1); - test("abcdefghij", 0, 9, "abcdefghij", 1, 8, -1); - test("abcdefghij", 0, 9, "abcdefghij", 1, 9, -1); - test("abcdefghij", 0, 9, "abcdefghij", 1, 10, -1); - test("abcdefghij", 0, 9, "abcdefghij", 5, 0, 9); - test("abcdefghij", 0, 9, "abcdefghij", 5, 1, -5); - test("abcdefghij", 0, 9, "abcdefghij", 5, 2, -5); - test("abcdefghij", 0, 9, "abcdefghij", 5, 4, -5); - test("abcdefghij", 0, 9, "abcdefghij", 5, 5, -5); - test("abcdefghij", 0, 9, "abcdefghij", 5, 6, -5); - test("abcdefghij", 0, 9, "abcdefghij", 9, 0, 9); - test("abcdefghij", 0, 9, "abcdefghij", 9, 1, -9); - test("abcdefghij", 0, 9, "abcdefghij", 9, 2, -9); - test("abcdefghij", 0, 9, "abcdefghij", 10, 0, 9); - test("abcdefghij", 0, 9, "abcdefghij", 10, 1, 9); - test("abcdefghij", 0, 9, "abcdefghij", 11, 0, 0); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 0, 9); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 1, 8); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 10, -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 19, -10); +void test21() { + test("abcdefghij", 0, 5, "abcdefghij", 0, 5, 0); + test("abcdefghij", 0, 5, "abcdefghij", 0, 9, -4); + test("abcdefghij", 0, 5, "abcdefghij", 0, 10, -5); + test("abcdefghij", 0, 5, "abcdefghij", 0, 11, -5); + test("abcdefghij", 0, 5, "abcdefghij", 1, 0, 5); + test("abcdefghij", 0, 5, "abcdefghij", 1, 1, -1); + test("abcdefghij", 0, 5, "abcdefghij", 1, 4, -1); + test("abcdefghij", 0, 5, "abcdefghij", 1, 8, -1); + test("abcdefghij", 0, 5, "abcdefghij", 1, 9, -1); + test("abcdefghij", 0, 5, "abcdefghij", 1, 10, -1); + test("abcdefghij", 0, 5, "abcdefghij", 5, 0, 5); + test("abcdefghij", 0, 5, "abcdefghij", 5, 1, -5); + test("abcdefghij", 0, 5, "abcdefghij", 5, 2, -5); + test("abcdefghij", 0, 5, "abcdefghij", 5, 4, -5); + test("abcdefghij", 0, 5, "abcdefghij", 5, 5, -5); + test("abcdefghij", 0, 5, "abcdefghij", 5, 6, -5); + test("abcdefghij", 0, 5, "abcdefghij", 9, 0, 5); + test("abcdefghij", 0, 5, "abcdefghij", 9, 1, -9); + test("abcdefghij", 0, 5, "abcdefghij", 9, 2, -9); + test("abcdefghij", 0, 5, "abcdefghij", 10, 0, 5); + test("abcdefghij", 0, 5, "abcdefghij", 10, 1, 5); + test("abcdefghij", 0, 5, "abcdefghij", 11, 0, 0); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 0, 5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 1, 4); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 10, -5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 19, -14); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 20, -15); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 0, 21, -15); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 0, 5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 0, 5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 0, 5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 20, 0, 5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 20, 1, 5); + test("abcdefghij", 0, 5, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 0, 9, "", 0, 0, 9); + test("abcdefghij", 0, 9, "", 0, 1, 9); + test("abcdefghij", 0, 9, "", 1, 0, 0); + test("abcdefghij", 0, 9, "abcde", 0, 0, 9); + test("abcdefghij", 0, 9, "abcde", 0, 1, 8); + test("abcdefghij", 0, 9, "abcde", 0, 2, 7); + test("abcdefghij", 0, 9, "abcde", 0, 4, 5); + test("abcdefghij", 0, 9, "abcde", 0, 5, 4); + test("abcdefghij", 0, 9, "abcde", 0, 6, 4); + test("abcdefghij", 0, 9, "abcde", 1, 0, 9); + test("abcdefghij", 0, 9, "abcde", 1, 1, -1); + test("abcdefghij", 0, 9, "abcde", 1, 2, -1); + test("abcdefghij", 0, 9, "abcde", 1, 3, -1); + test("abcdefghij", 0, 9, "abcde", 1, 4, -1); + test("abcdefghij", 0, 9, "abcde", 1, 5, -1); + test("abcdefghij", 0, 9, "abcde", 2, 0, 9); + test("abcdefghij", 0, 9, "abcde", 2, 1, -2); + test("abcdefghij", 0, 9, "abcde", 2, 2, -2); + test("abcdefghij", 0, 9, "abcde", 2, 3, -2); + test("abcdefghij", 0, 9, "abcde", 2, 4, -2); + test("abcdefghij", 0, 9, "abcde", 4, 0, 9); + test("abcdefghij", 0, 9, "abcde", 4, 1, -4); + test("abcdefghij", 0, 9, "abcde", 4, 2, -4); + test("abcdefghij", 0, 9, "abcde", 5, 0, 9); + test("abcdefghij", 0, 9, "abcde", 5, 1, 9); + test("abcdefghij", 0, 9, "abcde", 6, 0, 0); + test("abcdefghij", 0, 9, "abcdefghij", 0, 0, 9); + test("abcdefghij", 0, 9, "abcdefghij", 0, 1, 8); + test("abcdefghij", 0, 9, "abcdefghij", 0, 5, 4); + test("abcdefghij", 0, 9, "abcdefghij", 0, 9, 0); + test("abcdefghij", 0, 9, "abcdefghij", 0, 10, -1); + test("abcdefghij", 0, 9, "abcdefghij", 0, 11, -1); + test("abcdefghij", 0, 9, "abcdefghij", 1, 0, 9); + test("abcdefghij", 0, 9, "abcdefghij", 1, 1, -1); + test("abcdefghij", 0, 9, "abcdefghij", 1, 4, -1); + test("abcdefghij", 0, 9, "abcdefghij", 1, 8, -1); + test("abcdefghij", 0, 9, "abcdefghij", 1, 9, -1); + test("abcdefghij", 0, 9, "abcdefghij", 1, 10, -1); + test("abcdefghij", 0, 9, "abcdefghij", 5, 0, 9); + test("abcdefghij", 0, 9, "abcdefghij", 5, 1, -5); + test("abcdefghij", 0, 9, "abcdefghij", 5, 2, -5); + test("abcdefghij", 0, 9, "abcdefghij", 5, 4, -5); + test("abcdefghij", 0, 9, "abcdefghij", 5, 5, -5); + test("abcdefghij", 0, 9, "abcdefghij", 5, 6, -5); + test("abcdefghij", 0, 9, "abcdefghij", 9, 0, 9); + test("abcdefghij", 0, 9, "abcdefghij", 9, 1, -9); + test("abcdefghij", 0, 9, "abcdefghij", 9, 2, -9); + test("abcdefghij", 0, 9, "abcdefghij", 10, 0, 9); + test("abcdefghij", 0, 9, "abcdefghij", 10, 1, 9); + test("abcdefghij", 0, 9, "abcdefghij", 11, 0, 0); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 0, 9); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 1, 8); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 10, -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 19, -10); } -void test22() -{ - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 20, -11); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 21, -11); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 0, 9); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 0, 9); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 0, 9); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 20, 0, 9); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 20, 1, 9); - test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 0, 10, "", 0, 0, 10); - test("abcdefghij", 0, 10, "", 0, 1, 10); - test("abcdefghij", 0, 10, "", 1, 0, 0); - test("abcdefghij", 0, 10, "abcde", 0, 0, 10); - test("abcdefghij", 0, 10, "abcde", 0, 1, 9); - test("abcdefghij", 0, 10, "abcde", 0, 2, 8); - test("abcdefghij", 0, 10, "abcde", 0, 4, 6); - test("abcdefghij", 0, 10, "abcde", 0, 5, 5); - test("abcdefghij", 0, 10, "abcde", 0, 6, 5); - test("abcdefghij", 0, 10, "abcde", 1, 0, 10); - test("abcdefghij", 0, 10, "abcde", 1, 1, -1); - test("abcdefghij", 0, 10, "abcde", 1, 2, -1); - test("abcdefghij", 0, 10, "abcde", 1, 3, -1); - test("abcdefghij", 0, 10, "abcde", 1, 4, -1); - test("abcdefghij", 0, 10, "abcde", 1, 5, -1); - test("abcdefghij", 0, 10, "abcde", 2, 0, 10); - test("abcdefghij", 0, 10, "abcde", 2, 1, -2); - test("abcdefghij", 0, 10, "abcde", 2, 2, -2); - test("abcdefghij", 0, 10, "abcde", 2, 3, -2); - test("abcdefghij", 0, 10, "abcde", 2, 4, -2); - test("abcdefghij", 0, 10, "abcde", 4, 0, 10); - test("abcdefghij", 0, 10, "abcde", 4, 1, -4); - test("abcdefghij", 0, 10, "abcde", 4, 2, -4); - test("abcdefghij", 0, 10, "abcde", 5, 0, 10); - test("abcdefghij", 0, 10, "abcde", 5, 1, 10); - test("abcdefghij", 0, 10, "abcde", 6, 0, 0); - test("abcdefghij", 0, 10, "abcdefghij", 0, 0, 10); - test("abcdefghij", 0, 10, "abcdefghij", 0, 1, 9); - test("abcdefghij", 0, 10, "abcdefghij", 0, 5, 5); - test("abcdefghij", 0, 10, "abcdefghij", 0, 9, 1); - test("abcdefghij", 0, 10, "abcdefghij", 0, 10, 0); - test("abcdefghij", 0, 10, "abcdefghij", 0, 11, 0); - test("abcdefghij", 0, 10, "abcdefghij", 1, 0, 10); - test("abcdefghij", 0, 10, "abcdefghij", 1, 1, -1); - test("abcdefghij", 0, 10, "abcdefghij", 1, 4, -1); - test("abcdefghij", 0, 10, "abcdefghij", 1, 8, -1); - test("abcdefghij", 0, 10, "abcdefghij", 1, 9, -1); - test("abcdefghij", 0, 10, "abcdefghij", 1, 10, -1); - test("abcdefghij", 0, 10, "abcdefghij", 5, 0, 10); - test("abcdefghij", 0, 10, "abcdefghij", 5, 1, -5); - test("abcdefghij", 0, 10, "abcdefghij", 5, 2, -5); - test("abcdefghij", 0, 10, "abcdefghij", 5, 4, -5); - test("abcdefghij", 0, 10, "abcdefghij", 5, 5, -5); - test("abcdefghij", 0, 10, "abcdefghij", 5, 6, -5); - test("abcdefghij", 0, 10, "abcdefghij", 9, 0, 10); - test("abcdefghij", 0, 10, "abcdefghij", 9, 1, -9); - test("abcdefghij", 0, 10, "abcdefghij", 9, 2, -9); - test("abcdefghij", 0, 10, "abcdefghij", 10, 0, 10); - test("abcdefghij", 0, 10, "abcdefghij", 10, 1, 10); - test("abcdefghij", 0, 10, "abcdefghij", 11, 0, 0); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 0, 10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 1, 9); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 10, 0); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 19, -9); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 20, -10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 21, -10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 0, 10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 0, 10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 0, 10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 20, 0, 10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 20, 1, 10); - test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 0, 11, "", 0, 0, 10); - test("abcdefghij", 0, 11, "", 0, 1, 10); - test("abcdefghij", 0, 11, "", 1, 0, 0); - test("abcdefghij", 0, 11, "abcde", 0, 0, 10); - test("abcdefghij", 0, 11, "abcde", 0, 1, 9); - test("abcdefghij", 0, 11, "abcde", 0, 2, 8); +void test22() { + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 20, -11); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 0, 21, -11); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 0, 9); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 0, 9); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 0, 9); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 20, 0, 9); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 20, 1, 9); + test("abcdefghij", 0, 9, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 0, 10, "", 0, 0, 10); + test("abcdefghij", 0, 10, "", 0, 1, 10); + test("abcdefghij", 0, 10, "", 1, 0, 0); + test("abcdefghij", 0, 10, "abcde", 0, 0, 10); + test("abcdefghij", 0, 10, "abcde", 0, 1, 9); + test("abcdefghij", 0, 10, "abcde", 0, 2, 8); + test("abcdefghij", 0, 10, "abcde", 0, 4, 6); + test("abcdefghij", 0, 10, "abcde", 0, 5, 5); + test("abcdefghij", 0, 10, "abcde", 0, 6, 5); + test("abcdefghij", 0, 10, "abcde", 1, 0, 10); + test("abcdefghij", 0, 10, "abcde", 1, 1, -1); + test("abcdefghij", 0, 10, "abcde", 1, 2, -1); + test("abcdefghij", 0, 10, "abcde", 1, 3, -1); + test("abcdefghij", 0, 10, "abcde", 1, 4, -1); + test("abcdefghij", 0, 10, "abcde", 1, 5, -1); + test("abcdefghij", 0, 10, "abcde", 2, 0, 10); + test("abcdefghij", 0, 10, "abcde", 2, 1, -2); + test("abcdefghij", 0, 10, "abcde", 2, 2, -2); + test("abcdefghij", 0, 10, "abcde", 2, 3, -2); + test("abcdefghij", 0, 10, "abcde", 2, 4, -2); + test("abcdefghij", 0, 10, "abcde", 4, 0, 10); + test("abcdefghij", 0, 10, "abcde", 4, 1, -4); + test("abcdefghij", 0, 10, "abcde", 4, 2, -4); + test("abcdefghij", 0, 10, "abcde", 5, 0, 10); + test("abcdefghij", 0, 10, "abcde", 5, 1, 10); + test("abcdefghij", 0, 10, "abcde", 6, 0, 0); + test("abcdefghij", 0, 10, "abcdefghij", 0, 0, 10); + test("abcdefghij", 0, 10, "abcdefghij", 0, 1, 9); + test("abcdefghij", 0, 10, "abcdefghij", 0, 5, 5); + test("abcdefghij", 0, 10, "abcdefghij", 0, 9, 1); + test("abcdefghij", 0, 10, "abcdefghij", 0, 10, 0); + test("abcdefghij", 0, 10, "abcdefghij", 0, 11, 0); + test("abcdefghij", 0, 10, "abcdefghij", 1, 0, 10); + test("abcdefghij", 0, 10, "abcdefghij", 1, 1, -1); + test("abcdefghij", 0, 10, "abcdefghij", 1, 4, -1); + test("abcdefghij", 0, 10, "abcdefghij", 1, 8, -1); + test("abcdefghij", 0, 10, "abcdefghij", 1, 9, -1); + test("abcdefghij", 0, 10, "abcdefghij", 1, 10, -1); + test("abcdefghij", 0, 10, "abcdefghij", 5, 0, 10); + test("abcdefghij", 0, 10, "abcdefghij", 5, 1, -5); + test("abcdefghij", 0, 10, "abcdefghij", 5, 2, -5); + test("abcdefghij", 0, 10, "abcdefghij", 5, 4, -5); + test("abcdefghij", 0, 10, "abcdefghij", 5, 5, -5); + test("abcdefghij", 0, 10, "abcdefghij", 5, 6, -5); + test("abcdefghij", 0, 10, "abcdefghij", 9, 0, 10); + test("abcdefghij", 0, 10, "abcdefghij", 9, 1, -9); + test("abcdefghij", 0, 10, "abcdefghij", 9, 2, -9); + test("abcdefghij", 0, 10, "abcdefghij", 10, 0, 10); + test("abcdefghij", 0, 10, "abcdefghij", 10, 1, 10); + test("abcdefghij", 0, 10, "abcdefghij", 11, 0, 0); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 0, 10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 1, 9); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 10, 0); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 19, -9); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 20, -10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 0, 21, -10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 0, 10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 0, 10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 0, 10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 20, 0, 10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 20, 1, 10); + test("abcdefghij", 0, 10, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 0, 11, "", 0, 0, 10); + test("abcdefghij", 0, 11, "", 0, 1, 10); + test("abcdefghij", 0, 11, "", 1, 0, 0); + test("abcdefghij", 0, 11, "abcde", 0, 0, 10); + test("abcdefghij", 0, 11, "abcde", 0, 1, 9); + test("abcdefghij", 0, 11, "abcde", 0, 2, 8); } -void test23() -{ - test("abcdefghij", 0, 11, "abcde", 0, 4, 6); - test("abcdefghij", 0, 11, "abcde", 0, 5, 5); - test("abcdefghij", 0, 11, "abcde", 0, 6, 5); - test("abcdefghij", 0, 11, "abcde", 1, 0, 10); - test("abcdefghij", 0, 11, "abcde", 1, 1, -1); - test("abcdefghij", 0, 11, "abcde", 1, 2, -1); - test("abcdefghij", 0, 11, "abcde", 1, 3, -1); - test("abcdefghij", 0, 11, "abcde", 1, 4, -1); - test("abcdefghij", 0, 11, "abcde", 1, 5, -1); - test("abcdefghij", 0, 11, "abcde", 2, 0, 10); - test("abcdefghij", 0, 11, "abcde", 2, 1, -2); - test("abcdefghij", 0, 11, "abcde", 2, 2, -2); - test("abcdefghij", 0, 11, "abcde", 2, 3, -2); - test("abcdefghij", 0, 11, "abcde", 2, 4, -2); - test("abcdefghij", 0, 11, "abcde", 4, 0, 10); - test("abcdefghij", 0, 11, "abcde", 4, 1, -4); - test("abcdefghij", 0, 11, "abcde", 4, 2, -4); - test("abcdefghij", 0, 11, "abcde", 5, 0, 10); - test("abcdefghij", 0, 11, "abcde", 5, 1, 10); - test("abcdefghij", 0, 11, "abcde", 6, 0, 0); - test("abcdefghij", 0, 11, "abcdefghij", 0, 0, 10); - test("abcdefghij", 0, 11, "abcdefghij", 0, 1, 9); - test("abcdefghij", 0, 11, "abcdefghij", 0, 5, 5); - test("abcdefghij", 0, 11, "abcdefghij", 0, 9, 1); - test("abcdefghij", 0, 11, "abcdefghij", 0, 10, 0); - test("abcdefghij", 0, 11, "abcdefghij", 0, 11, 0); - test("abcdefghij", 0, 11, "abcdefghij", 1, 0, 10); - test("abcdefghij", 0, 11, "abcdefghij", 1, 1, -1); - test("abcdefghij", 0, 11, "abcdefghij", 1, 4, -1); - test("abcdefghij", 0, 11, "abcdefghij", 1, 8, -1); - test("abcdefghij", 0, 11, "abcdefghij", 1, 9, -1); - test("abcdefghij", 0, 11, "abcdefghij", 1, 10, -1); - test("abcdefghij", 0, 11, "abcdefghij", 5, 0, 10); - test("abcdefghij", 0, 11, "abcdefghij", 5, 1, -5); - test("abcdefghij", 0, 11, "abcdefghij", 5, 2, -5); - test("abcdefghij", 0, 11, "abcdefghij", 5, 4, -5); - test("abcdefghij", 0, 11, "abcdefghij", 5, 5, -5); - test("abcdefghij", 0, 11, "abcdefghij", 5, 6, -5); - test("abcdefghij", 0, 11, "abcdefghij", 9, 0, 10); - test("abcdefghij", 0, 11, "abcdefghij", 9, 1, -9); - test("abcdefghij", 0, 11, "abcdefghij", 9, 2, -9); - test("abcdefghij", 0, 11, "abcdefghij", 10, 0, 10); - test("abcdefghij", 0, 11, "abcdefghij", 10, 1, 10); - test("abcdefghij", 0, 11, "abcdefghij", 11, 0, 0); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 0, 10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 1, 9); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 10, 0); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 19, -9); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 20, -10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 21, -10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 0, 10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 0, 10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 0, 10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 20, 0, 10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 20, 1, 10); - test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 1, 0, "", 0, 0, 0); - test("abcdefghij", 1, 0, "", 0, 1, 0); - test("abcdefghij", 1, 0, "", 1, 0, 0); - test("abcdefghij", 1, 0, "abcde", 0, 0, 0); - test("abcdefghij", 1, 0, "abcde", 0, 1, -1); - test("abcdefghij", 1, 0, "abcde", 0, 2, -2); - test("abcdefghij", 1, 0, "abcde", 0, 4, -4); - test("abcdefghij", 1, 0, "abcde", 0, 5, -5); - test("abcdefghij", 1, 0, "abcde", 0, 6, -5); - test("abcdefghij", 1, 0, "abcde", 1, 0, 0); - test("abcdefghij", 1, 0, "abcde", 1, 1, -1); - test("abcdefghij", 1, 0, "abcde", 1, 2, -2); - test("abcdefghij", 1, 0, "abcde", 1, 3, -3); - test("abcdefghij", 1, 0, "abcde", 1, 4, -4); - test("abcdefghij", 1, 0, "abcde", 1, 5, -4); - test("abcdefghij", 1, 0, "abcde", 2, 0, 0); - test("abcdefghij", 1, 0, "abcde", 2, 1, -1); - test("abcdefghij", 1, 0, "abcde", 2, 2, -2); - test("abcdefghij", 1, 0, "abcde", 2, 3, -3); - test("abcdefghij", 1, 0, "abcde", 2, 4, -3); - test("abcdefghij", 1, 0, "abcde", 4, 0, 0); - test("abcdefghij", 1, 0, "abcde", 4, 1, -1); - test("abcdefghij", 1, 0, "abcde", 4, 2, -1); - test("abcdefghij", 1, 0, "abcde", 5, 0, 0); - test("abcdefghij", 1, 0, "abcde", 5, 1, 0); - test("abcdefghij", 1, 0, "abcde", 6, 0, 0); - test("abcdefghij", 1, 0, "abcdefghij", 0, 0, 0); - test("abcdefghij", 1, 0, "abcdefghij", 0, 1, -1); - test("abcdefghij", 1, 0, "abcdefghij", 0, 5, -5); - test("abcdefghij", 1, 0, "abcdefghij", 0, 9, -9); - test("abcdefghij", 1, 0, "abcdefghij", 0, 10, -10); - test("abcdefghij", 1, 0, "abcdefghij", 0, 11, -10); +void test23() { + test("abcdefghij", 0, 11, "abcde", 0, 4, 6); + test("abcdefghij", 0, 11, "abcde", 0, 5, 5); + test("abcdefghij", 0, 11, "abcde", 0, 6, 5); + test("abcdefghij", 0, 11, "abcde", 1, 0, 10); + test("abcdefghij", 0, 11, "abcde", 1, 1, -1); + test("abcdefghij", 0, 11, "abcde", 1, 2, -1); + test("abcdefghij", 0, 11, "abcde", 1, 3, -1); + test("abcdefghij", 0, 11, "abcde", 1, 4, -1); + test("abcdefghij", 0, 11, "abcde", 1, 5, -1); + test("abcdefghij", 0, 11, "abcde", 2, 0, 10); + test("abcdefghij", 0, 11, "abcde", 2, 1, -2); + test("abcdefghij", 0, 11, "abcde", 2, 2, -2); + test("abcdefghij", 0, 11, "abcde", 2, 3, -2); + test("abcdefghij", 0, 11, "abcde", 2, 4, -2); + test("abcdefghij", 0, 11, "abcde", 4, 0, 10); + test("abcdefghij", 0, 11, "abcde", 4, 1, -4); + test("abcdefghij", 0, 11, "abcde", 4, 2, -4); + test("abcdefghij", 0, 11, "abcde", 5, 0, 10); + test("abcdefghij", 0, 11, "abcde", 5, 1, 10); + test("abcdefghij", 0, 11, "abcde", 6, 0, 0); + test("abcdefghij", 0, 11, "abcdefghij", 0, 0, 10); + test("abcdefghij", 0, 11, "abcdefghij", 0, 1, 9); + test("abcdefghij", 0, 11, "abcdefghij", 0, 5, 5); + test("abcdefghij", 0, 11, "abcdefghij", 0, 9, 1); + test("abcdefghij", 0, 11, "abcdefghij", 0, 10, 0); + test("abcdefghij", 0, 11, "abcdefghij", 0, 11, 0); + test("abcdefghij", 0, 11, "abcdefghij", 1, 0, 10); + test("abcdefghij", 0, 11, "abcdefghij", 1, 1, -1); + test("abcdefghij", 0, 11, "abcdefghij", 1, 4, -1); + test("abcdefghij", 0, 11, "abcdefghij", 1, 8, -1); + test("abcdefghij", 0, 11, "abcdefghij", 1, 9, -1); + test("abcdefghij", 0, 11, "abcdefghij", 1, 10, -1); + test("abcdefghij", 0, 11, "abcdefghij", 5, 0, 10); + test("abcdefghij", 0, 11, "abcdefghij", 5, 1, -5); + test("abcdefghij", 0, 11, "abcdefghij", 5, 2, -5); + test("abcdefghij", 0, 11, "abcdefghij", 5, 4, -5); + test("abcdefghij", 0, 11, "abcdefghij", 5, 5, -5); + test("abcdefghij", 0, 11, "abcdefghij", 5, 6, -5); + test("abcdefghij", 0, 11, "abcdefghij", 9, 0, 10); + test("abcdefghij", 0, 11, "abcdefghij", 9, 1, -9); + test("abcdefghij", 0, 11, "abcdefghij", 9, 2, -9); + test("abcdefghij", 0, 11, "abcdefghij", 10, 0, 10); + test("abcdefghij", 0, 11, "abcdefghij", 10, 1, 10); + test("abcdefghij", 0, 11, "abcdefghij", 11, 0, 0); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 0, 10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 1, 9); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 10, 0); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 19, -9); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 20, -10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 0, 21, -10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 0, 10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 0, 10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 0, 10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 20, 0, 10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 20, 1, 10); + test("abcdefghij", 0, 11, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 1, 0, "", 0, 0, 0); + test("abcdefghij", 1, 0, "", 0, 1, 0); + test("abcdefghij", 1, 0, "", 1, 0, 0); + test("abcdefghij", 1, 0, "abcde", 0, 0, 0); + test("abcdefghij", 1, 0, "abcde", 0, 1, -1); + test("abcdefghij", 1, 0, "abcde", 0, 2, -2); + test("abcdefghij", 1, 0, "abcde", 0, 4, -4); + test("abcdefghij", 1, 0, "abcde", 0, 5, -5); + test("abcdefghij", 1, 0, "abcde", 0, 6, -5); + test("abcdefghij", 1, 0, "abcde", 1, 0, 0); + test("abcdefghij", 1, 0, "abcde", 1, 1, -1); + test("abcdefghij", 1, 0, "abcde", 1, 2, -2); + test("abcdefghij", 1, 0, "abcde", 1, 3, -3); + test("abcdefghij", 1, 0, "abcde", 1, 4, -4); + test("abcdefghij", 1, 0, "abcde", 1, 5, -4); + test("abcdefghij", 1, 0, "abcde", 2, 0, 0); + test("abcdefghij", 1, 0, "abcde", 2, 1, -1); + test("abcdefghij", 1, 0, "abcde", 2, 2, -2); + test("abcdefghij", 1, 0, "abcde", 2, 3, -3); + test("abcdefghij", 1, 0, "abcde", 2, 4, -3); + test("abcdefghij", 1, 0, "abcde", 4, 0, 0); + test("abcdefghij", 1, 0, "abcde", 4, 1, -1); + test("abcdefghij", 1, 0, "abcde", 4, 2, -1); + test("abcdefghij", 1, 0, "abcde", 5, 0, 0); + test("abcdefghij", 1, 0, "abcde", 5, 1, 0); + test("abcdefghij", 1, 0, "abcde", 6, 0, 0); + test("abcdefghij", 1, 0, "abcdefghij", 0, 0, 0); + test("abcdefghij", 1, 0, "abcdefghij", 0, 1, -1); + test("abcdefghij", 1, 0, "abcdefghij", 0, 5, -5); + test("abcdefghij", 1, 0, "abcdefghij", 0, 9, -9); + test("abcdefghij", 1, 0, "abcdefghij", 0, 10, -10); + test("abcdefghij", 1, 0, "abcdefghij", 0, 11, -10); } -void test24() -{ - test("abcdefghij", 1, 0, "abcdefghij", 1, 0, 0); - test("abcdefghij", 1, 0, "abcdefghij", 1, 1, -1); - test("abcdefghij", 1, 0, "abcdefghij", 1, 4, -4); - test("abcdefghij", 1, 0, "abcdefghij", 1, 8, -8); - test("abcdefghij", 1, 0, "abcdefghij", 1, 9, -9); - test("abcdefghij", 1, 0, "abcdefghij", 1, 10, -9); - test("abcdefghij", 1, 0, "abcdefghij", 5, 0, 0); - test("abcdefghij", 1, 0, "abcdefghij", 5, 1, -1); - test("abcdefghij", 1, 0, "abcdefghij", 5, 2, -2); - test("abcdefghij", 1, 0, "abcdefghij", 5, 4, -4); - test("abcdefghij", 1, 0, "abcdefghij", 5, 5, -5); - test("abcdefghij", 1, 0, "abcdefghij", 5, 6, -5); - test("abcdefghij", 1, 0, "abcdefghij", 9, 0, 0); - test("abcdefghij", 1, 0, "abcdefghij", 9, 1, -1); - test("abcdefghij", 1, 0, "abcdefghij", 9, 2, -1); - test("abcdefghij", 1, 0, "abcdefghij", 10, 0, 0); - test("abcdefghij", 1, 0, "abcdefghij", 10, 1, 0); - test("abcdefghij", 1, 0, "abcdefghij", 11, 0, 0); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 1, 1, "", 0, 0, 1); - test("abcdefghij", 1, 1, "", 0, 1, 1); - test("abcdefghij", 1, 1, "", 1, 0, 0); - test("abcdefghij", 1, 1, "abcde", 0, 0, 1); - test("abcdefghij", 1, 1, "abcde", 0, 1, 1); - test("abcdefghij", 1, 1, "abcde", 0, 2, 1); - test("abcdefghij", 1, 1, "abcde", 0, 4, 1); - test("abcdefghij", 1, 1, "abcde", 0, 5, 1); - test("abcdefghij", 1, 1, "abcde", 0, 6, 1); - test("abcdefghij", 1, 1, "abcde", 1, 0, 1); - test("abcdefghij", 1, 1, "abcde", 1, 1, 0); - test("abcdefghij", 1, 1, "abcde", 1, 2, -1); - test("abcdefghij", 1, 1, "abcde", 1, 3, -2); - test("abcdefghij", 1, 1, "abcde", 1, 4, -3); - test("abcdefghij", 1, 1, "abcde", 1, 5, -3); - test("abcdefghij", 1, 1, "abcde", 2, 0, 1); - test("abcdefghij", 1, 1, "abcde", 2, 1, -1); - test("abcdefghij", 1, 1, "abcde", 2, 2, -1); - test("abcdefghij", 1, 1, "abcde", 2, 3, -1); - test("abcdefghij", 1, 1, "abcde", 2, 4, -1); - test("abcdefghij", 1, 1, "abcde", 4, 0, 1); - test("abcdefghij", 1, 1, "abcde", 4, 1, -3); - test("abcdefghij", 1, 1, "abcde", 4, 2, -3); - test("abcdefghij", 1, 1, "abcde", 5, 0, 1); - test("abcdefghij", 1, 1, "abcde", 5, 1, 1); - test("abcdefghij", 1, 1, "abcde", 6, 0, 0); - test("abcdefghij", 1, 1, "abcdefghij", 0, 0, 1); - test("abcdefghij", 1, 1, "abcdefghij", 0, 1, 1); - test("abcdefghij", 1, 1, "abcdefghij", 0, 5, 1); - test("abcdefghij", 1, 1, "abcdefghij", 0, 9, 1); - test("abcdefghij", 1, 1, "abcdefghij", 0, 10, 1); - test("abcdefghij", 1, 1, "abcdefghij", 0, 11, 1); - test("abcdefghij", 1, 1, "abcdefghij", 1, 0, 1); - test("abcdefghij", 1, 1, "abcdefghij", 1, 1, 0); - test("abcdefghij", 1, 1, "abcdefghij", 1, 4, -3); - test("abcdefghij", 1, 1, "abcdefghij", 1, 8, -7); - test("abcdefghij", 1, 1, "abcdefghij", 1, 9, -8); - test("abcdefghij", 1, 1, "abcdefghij", 1, 10, -8); - test("abcdefghij", 1, 1, "abcdefghij", 5, 0, 1); - test("abcdefghij", 1, 1, "abcdefghij", 5, 1, -4); - test("abcdefghij", 1, 1, "abcdefghij", 5, 2, -4); - test("abcdefghij", 1, 1, "abcdefghij", 5, 4, -4); - test("abcdefghij", 1, 1, "abcdefghij", 5, 5, -4); - test("abcdefghij", 1, 1, "abcdefghij", 5, 6, -4); - test("abcdefghij", 1, 1, "abcdefghij", 9, 0, 1); - test("abcdefghij", 1, 1, "abcdefghij", 9, 1, -8); - test("abcdefghij", 1, 1, "abcdefghij", 9, 2, -8); - test("abcdefghij", 1, 1, "abcdefghij", 10, 0, 1); - test("abcdefghij", 1, 1, "abcdefghij", 10, 1, 1); - test("abcdefghij", 1, 1, "abcdefghij", 11, 0, 0); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0); +void test24() { + test("abcdefghij", 1, 0, "abcdefghij", 1, 0, 0); + test("abcdefghij", 1, 0, "abcdefghij", 1, 1, -1); + test("abcdefghij", 1, 0, "abcdefghij", 1, 4, -4); + test("abcdefghij", 1, 0, "abcdefghij", 1, 8, -8); + test("abcdefghij", 1, 0, "abcdefghij", 1, 9, -9); + test("abcdefghij", 1, 0, "abcdefghij", 1, 10, -9); + test("abcdefghij", 1, 0, "abcdefghij", 5, 0, 0); + test("abcdefghij", 1, 0, "abcdefghij", 5, 1, -1); + test("abcdefghij", 1, 0, "abcdefghij", 5, 2, -2); + test("abcdefghij", 1, 0, "abcdefghij", 5, 4, -4); + test("abcdefghij", 1, 0, "abcdefghij", 5, 5, -5); + test("abcdefghij", 1, 0, "abcdefghij", 5, 6, -5); + test("abcdefghij", 1, 0, "abcdefghij", 9, 0, 0); + test("abcdefghij", 1, 0, "abcdefghij", 9, 1, -1); + test("abcdefghij", 1, 0, "abcdefghij", 9, 2, -1); + test("abcdefghij", 1, 0, "abcdefghij", 10, 0, 0); + test("abcdefghij", 1, 0, "abcdefghij", 10, 1, 0); + test("abcdefghij", 1, 0, "abcdefghij", 11, 0, 0); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghij", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 1, 1, "", 0, 0, 1); + test("abcdefghij", 1, 1, "", 0, 1, 1); + test("abcdefghij", 1, 1, "", 1, 0, 0); + test("abcdefghij", 1, 1, "abcde", 0, 0, 1); + test("abcdefghij", 1, 1, "abcde", 0, 1, 1); + test("abcdefghij", 1, 1, "abcde", 0, 2, 1); + test("abcdefghij", 1, 1, "abcde", 0, 4, 1); + test("abcdefghij", 1, 1, "abcde", 0, 5, 1); + test("abcdefghij", 1, 1, "abcde", 0, 6, 1); + test("abcdefghij", 1, 1, "abcde", 1, 0, 1); + test("abcdefghij", 1, 1, "abcde", 1, 1, 0); + test("abcdefghij", 1, 1, "abcde", 1, 2, -1); + test("abcdefghij", 1, 1, "abcde", 1, 3, -2); + test("abcdefghij", 1, 1, "abcde", 1, 4, -3); + test("abcdefghij", 1, 1, "abcde", 1, 5, -3); + test("abcdefghij", 1, 1, "abcde", 2, 0, 1); + test("abcdefghij", 1, 1, "abcde", 2, 1, -1); + test("abcdefghij", 1, 1, "abcde", 2, 2, -1); + test("abcdefghij", 1, 1, "abcde", 2, 3, -1); + test("abcdefghij", 1, 1, "abcde", 2, 4, -1); + test("abcdefghij", 1, 1, "abcde", 4, 0, 1); + test("abcdefghij", 1, 1, "abcde", 4, 1, -3); + test("abcdefghij", 1, 1, "abcde", 4, 2, -3); + test("abcdefghij", 1, 1, "abcde", 5, 0, 1); + test("abcdefghij", 1, 1, "abcde", 5, 1, 1); + test("abcdefghij", 1, 1, "abcde", 6, 0, 0); + test("abcdefghij", 1, 1, "abcdefghij", 0, 0, 1); + test("abcdefghij", 1, 1, "abcdefghij", 0, 1, 1); + test("abcdefghij", 1, 1, "abcdefghij", 0, 5, 1); + test("abcdefghij", 1, 1, "abcdefghij", 0, 9, 1); + test("abcdefghij", 1, 1, "abcdefghij", 0, 10, 1); + test("abcdefghij", 1, 1, "abcdefghij", 0, 11, 1); + test("abcdefghij", 1, 1, "abcdefghij", 1, 0, 1); + test("abcdefghij", 1, 1, "abcdefghij", 1, 1, 0); + test("abcdefghij", 1, 1, "abcdefghij", 1, 4, -3); + test("abcdefghij", 1, 1, "abcdefghij", 1, 8, -7); + test("abcdefghij", 1, 1, "abcdefghij", 1, 9, -8); + test("abcdefghij", 1, 1, "abcdefghij", 1, 10, -8); + test("abcdefghij", 1, 1, "abcdefghij", 5, 0, 1); + test("abcdefghij", 1, 1, "abcdefghij", 5, 1, -4); + test("abcdefghij", 1, 1, "abcdefghij", 5, 2, -4); + test("abcdefghij", 1, 1, "abcdefghij", 5, 4, -4); + test("abcdefghij", 1, 1, "abcdefghij", 5, 5, -4); + test("abcdefghij", 1, 1, "abcdefghij", 5, 6, -4); + test("abcdefghij", 1, 1, "abcdefghij", 9, 0, 1); + test("abcdefghij", 1, 1, "abcdefghij", 9, 1, -8); + test("abcdefghij", 1, 1, "abcdefghij", 9, 2, -8); + test("abcdefghij", 1, 1, "abcdefghij", 10, 0, 1); + test("abcdefghij", 1, 1, "abcdefghij", 10, 1, 1); + test("abcdefghij", 1, 1, "abcdefghij", 11, 0, 0); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0); } -void test25() -{ - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 1, 4, "", 0, 0, 4); - test("abcdefghij", 1, 4, "", 0, 1, 4); - test("abcdefghij", 1, 4, "", 1, 0, 0); - test("abcdefghij", 1, 4, "abcde", 0, 0, 4); - test("abcdefghij", 1, 4, "abcde", 0, 1, 1); - test("abcdefghij", 1, 4, "abcde", 0, 2, 1); - test("abcdefghij", 1, 4, "abcde", 0, 4, 1); - test("abcdefghij", 1, 4, "abcde", 0, 5, 1); - test("abcdefghij", 1, 4, "abcde", 0, 6, 1); - test("abcdefghij", 1, 4, "abcde", 1, 0, 4); - test("abcdefghij", 1, 4, "abcde", 1, 1, 3); - test("abcdefghij", 1, 4, "abcde", 1, 2, 2); - test("abcdefghij", 1, 4, "abcde", 1, 3, 1); - test("abcdefghij", 1, 4, "abcde", 1, 4, 0); - test("abcdefghij", 1, 4, "abcde", 1, 5, 0); - test("abcdefghij", 1, 4, "abcde", 2, 0, 4); - test("abcdefghij", 1, 4, "abcde", 2, 1, -1); - test("abcdefghij", 1, 4, "abcde", 2, 2, -1); - test("abcdefghij", 1, 4, "abcde", 2, 3, -1); - test("abcdefghij", 1, 4, "abcde", 2, 4, -1); - test("abcdefghij", 1, 4, "abcde", 4, 0, 4); - test("abcdefghij", 1, 4, "abcde", 4, 1, -3); - test("abcdefghij", 1, 4, "abcde", 4, 2, -3); - test("abcdefghij", 1, 4, "abcde", 5, 0, 4); - test("abcdefghij", 1, 4, "abcde", 5, 1, 4); - test("abcdefghij", 1, 4, "abcde", 6, 0, 0); - test("abcdefghij", 1, 4, "abcdefghij", 0, 0, 4); - test("abcdefghij", 1, 4, "abcdefghij", 0, 1, 1); - test("abcdefghij", 1, 4, "abcdefghij", 0, 5, 1); - test("abcdefghij", 1, 4, "abcdefghij", 0, 9, 1); - test("abcdefghij", 1, 4, "abcdefghij", 0, 10, 1); - test("abcdefghij", 1, 4, "abcdefghij", 0, 11, 1); - test("abcdefghij", 1, 4, "abcdefghij", 1, 0, 4); - test("abcdefghij", 1, 4, "abcdefghij", 1, 1, 3); - test("abcdefghij", 1, 4, "abcdefghij", 1, 4, 0); - test("abcdefghij", 1, 4, "abcdefghij", 1, 8, -4); - test("abcdefghij", 1, 4, "abcdefghij", 1, 9, -5); - test("abcdefghij", 1, 4, "abcdefghij", 1, 10, -5); - test("abcdefghij", 1, 4, "abcdefghij", 5, 0, 4); - test("abcdefghij", 1, 4, "abcdefghij", 5, 1, -4); - test("abcdefghij", 1, 4, "abcdefghij", 5, 2, -4); - test("abcdefghij", 1, 4, "abcdefghij", 5, 4, -4); - test("abcdefghij", 1, 4, "abcdefghij", 5, 5, -4); - test("abcdefghij", 1, 4, "abcdefghij", 5, 6, -4); - test("abcdefghij", 1, 4, "abcdefghij", 9, 0, 4); - test("abcdefghij", 1, 4, "abcdefghij", 9, 1, -8); - test("abcdefghij", 1, 4, "abcdefghij", 9, 2, -8); - test("abcdefghij", 1, 4, "abcdefghij", 10, 0, 4); - test("abcdefghij", 1, 4, "abcdefghij", 10, 1, 4); - test("abcdefghij", 1, 4, "abcdefghij", 11, 0, 0); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 0, 4); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 0, 4); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 1, 3); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 9, -5); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 18, -14); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 19, -15); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 20, -15); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 0, 4); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 0, 4); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 20, 0, 4); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 20, 1, 4); - test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 1, 8, "", 0, 0, 8); - test("abcdefghij", 1, 8, "", 0, 1, 8); - test("abcdefghij", 1, 8, "", 1, 0, 0); - test("abcdefghij", 1, 8, "abcde", 0, 0, 8); - test("abcdefghij", 1, 8, "abcde", 0, 1, 1); - test("abcdefghij", 1, 8, "abcde", 0, 2, 1); - test("abcdefghij", 1, 8, "abcde", 0, 4, 1); - test("abcdefghij", 1, 8, "abcde", 0, 5, 1); - test("abcdefghij", 1, 8, "abcde", 0, 6, 1); - test("abcdefghij", 1, 8, "abcde", 1, 0, 8); +void test25() { + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghij", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 1, 4, "", 0, 0, 4); + test("abcdefghij", 1, 4, "", 0, 1, 4); + test("abcdefghij", 1, 4, "", 1, 0, 0); + test("abcdefghij", 1, 4, "abcde", 0, 0, 4); + test("abcdefghij", 1, 4, "abcde", 0, 1, 1); + test("abcdefghij", 1, 4, "abcde", 0, 2, 1); + test("abcdefghij", 1, 4, "abcde", 0, 4, 1); + test("abcdefghij", 1, 4, "abcde", 0, 5, 1); + test("abcdefghij", 1, 4, "abcde", 0, 6, 1); + test("abcdefghij", 1, 4, "abcde", 1, 0, 4); + test("abcdefghij", 1, 4, "abcde", 1, 1, 3); + test("abcdefghij", 1, 4, "abcde", 1, 2, 2); + test("abcdefghij", 1, 4, "abcde", 1, 3, 1); + test("abcdefghij", 1, 4, "abcde", 1, 4, 0); + test("abcdefghij", 1, 4, "abcde", 1, 5, 0); + test("abcdefghij", 1, 4, "abcde", 2, 0, 4); + test("abcdefghij", 1, 4, "abcde", 2, 1, -1); + test("abcdefghij", 1, 4, "abcde", 2, 2, -1); + test("abcdefghij", 1, 4, "abcde", 2, 3, -1); + test("abcdefghij", 1, 4, "abcde", 2, 4, -1); + test("abcdefghij", 1, 4, "abcde", 4, 0, 4); + test("abcdefghij", 1, 4, "abcde", 4, 1, -3); + test("abcdefghij", 1, 4, "abcde", 4, 2, -3); + test("abcdefghij", 1, 4, "abcde", 5, 0, 4); + test("abcdefghij", 1, 4, "abcde", 5, 1, 4); + test("abcdefghij", 1, 4, "abcde", 6, 0, 0); + test("abcdefghij", 1, 4, "abcdefghij", 0, 0, 4); + test("abcdefghij", 1, 4, "abcdefghij", 0, 1, 1); + test("abcdefghij", 1, 4, "abcdefghij", 0, 5, 1); + test("abcdefghij", 1, 4, "abcdefghij", 0, 9, 1); + test("abcdefghij", 1, 4, "abcdefghij", 0, 10, 1); + test("abcdefghij", 1, 4, "abcdefghij", 0, 11, 1); + test("abcdefghij", 1, 4, "abcdefghij", 1, 0, 4); + test("abcdefghij", 1, 4, "abcdefghij", 1, 1, 3); + test("abcdefghij", 1, 4, "abcdefghij", 1, 4, 0); + test("abcdefghij", 1, 4, "abcdefghij", 1, 8, -4); + test("abcdefghij", 1, 4, "abcdefghij", 1, 9, -5); + test("abcdefghij", 1, 4, "abcdefghij", 1, 10, -5); + test("abcdefghij", 1, 4, "abcdefghij", 5, 0, 4); + test("abcdefghij", 1, 4, "abcdefghij", 5, 1, -4); + test("abcdefghij", 1, 4, "abcdefghij", 5, 2, -4); + test("abcdefghij", 1, 4, "abcdefghij", 5, 4, -4); + test("abcdefghij", 1, 4, "abcdefghij", 5, 5, -4); + test("abcdefghij", 1, 4, "abcdefghij", 5, 6, -4); + test("abcdefghij", 1, 4, "abcdefghij", 9, 0, 4); + test("abcdefghij", 1, 4, "abcdefghij", 9, 1, -8); + test("abcdefghij", 1, 4, "abcdefghij", 9, 2, -8); + test("abcdefghij", 1, 4, "abcdefghij", 10, 0, 4); + test("abcdefghij", 1, 4, "abcdefghij", 10, 1, 4); + test("abcdefghij", 1, 4, "abcdefghij", 11, 0, 0); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 0, 4); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 0, 4); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 1, 3); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 9, -5); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 18, -14); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 19, -15); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 1, 20, -15); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 0, 4); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 0, 4); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 20, 0, 4); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 20, 1, 4); + test("abcdefghij", 1, 4, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 1, 8, "", 0, 0, 8); + test("abcdefghij", 1, 8, "", 0, 1, 8); + test("abcdefghij", 1, 8, "", 1, 0, 0); + test("abcdefghij", 1, 8, "abcde", 0, 0, 8); + test("abcdefghij", 1, 8, "abcde", 0, 1, 1); + test("abcdefghij", 1, 8, "abcde", 0, 2, 1); + test("abcdefghij", 1, 8, "abcde", 0, 4, 1); + test("abcdefghij", 1, 8, "abcde", 0, 5, 1); + test("abcdefghij", 1, 8, "abcde", 0, 6, 1); + test("abcdefghij", 1, 8, "abcde", 1, 0, 8); } -void test26() -{ - test("abcdefghij", 1, 8, "abcde", 1, 1, 7); - test("abcdefghij", 1, 8, "abcde", 1, 2, 6); - test("abcdefghij", 1, 8, "abcde", 1, 3, 5); - test("abcdefghij", 1, 8, "abcde", 1, 4, 4); - test("abcdefghij", 1, 8, "abcde", 1, 5, 4); - test("abcdefghij", 1, 8, "abcde", 2, 0, 8); - test("abcdefghij", 1, 8, "abcde", 2, 1, -1); - test("abcdefghij", 1, 8, "abcde", 2, 2, -1); - test("abcdefghij", 1, 8, "abcde", 2, 3, -1); - test("abcdefghij", 1, 8, "abcde", 2, 4, -1); - test("abcdefghij", 1, 8, "abcde", 4, 0, 8); - test("abcdefghij", 1, 8, "abcde", 4, 1, -3); - test("abcdefghij", 1, 8, "abcde", 4, 2, -3); - test("abcdefghij", 1, 8, "abcde", 5, 0, 8); - test("abcdefghij", 1, 8, "abcde", 5, 1, 8); - test("abcdefghij", 1, 8, "abcde", 6, 0, 0); - test("abcdefghij", 1, 8, "abcdefghij", 0, 0, 8); - test("abcdefghij", 1, 8, "abcdefghij", 0, 1, 1); - test("abcdefghij", 1, 8, "abcdefghij", 0, 5, 1); - test("abcdefghij", 1, 8, "abcdefghij", 0, 9, 1); - test("abcdefghij", 1, 8, "abcdefghij", 0, 10, 1); - test("abcdefghij", 1, 8, "abcdefghij", 0, 11, 1); - test("abcdefghij", 1, 8, "abcdefghij", 1, 0, 8); - test("abcdefghij", 1, 8, "abcdefghij", 1, 1, 7); - test("abcdefghij", 1, 8, "abcdefghij", 1, 4, 4); - test("abcdefghij", 1, 8, "abcdefghij", 1, 8, 0); - test("abcdefghij", 1, 8, "abcdefghij", 1, 9, -1); - test("abcdefghij", 1, 8, "abcdefghij", 1, 10, -1); - test("abcdefghij", 1, 8, "abcdefghij", 5, 0, 8); - test("abcdefghij", 1, 8, "abcdefghij", 5, 1, -4); - test("abcdefghij", 1, 8, "abcdefghij", 5, 2, -4); - test("abcdefghij", 1, 8, "abcdefghij", 5, 4, -4); - test("abcdefghij", 1, 8, "abcdefghij", 5, 5, -4); - test("abcdefghij", 1, 8, "abcdefghij", 5, 6, -4); - test("abcdefghij", 1, 8, "abcdefghij", 9, 0, 8); - test("abcdefghij", 1, 8, "abcdefghij", 9, 1, -8); - test("abcdefghij", 1, 8, "abcdefghij", 9, 2, -8); - test("abcdefghij", 1, 8, "abcdefghij", 10, 0, 8); - test("abcdefghij", 1, 8, "abcdefghij", 10, 1, 8); - test("abcdefghij", 1, 8, "abcdefghij", 11, 0, 0); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 0, 8); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 0, 8); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 1, 7); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 18, -10); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 19, -11); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 20, -11); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 0, 8); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 0, 8); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 20, 0, 8); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 20, 1, 8); - test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 1, 9, "", 0, 0, 9); - test("abcdefghij", 1, 9, "", 0, 1, 9); - test("abcdefghij", 1, 9, "", 1, 0, 0); - test("abcdefghij", 1, 9, "abcde", 0, 0, 9); - test("abcdefghij", 1, 9, "abcde", 0, 1, 1); - test("abcdefghij", 1, 9, "abcde", 0, 2, 1); - test("abcdefghij", 1, 9, "abcde", 0, 4, 1); - test("abcdefghij", 1, 9, "abcde", 0, 5, 1); - test("abcdefghij", 1, 9, "abcde", 0, 6, 1); - test("abcdefghij", 1, 9, "abcde", 1, 0, 9); - test("abcdefghij", 1, 9, "abcde", 1, 1, 8); - test("abcdefghij", 1, 9, "abcde", 1, 2, 7); - test("abcdefghij", 1, 9, "abcde", 1, 3, 6); - test("abcdefghij", 1, 9, "abcde", 1, 4, 5); - test("abcdefghij", 1, 9, "abcde", 1, 5, 5); - test("abcdefghij", 1, 9, "abcde", 2, 0, 9); - test("abcdefghij", 1, 9, "abcde", 2, 1, -1); - test("abcdefghij", 1, 9, "abcde", 2, 2, -1); - test("abcdefghij", 1, 9, "abcde", 2, 3, -1); - test("abcdefghij", 1, 9, "abcde", 2, 4, -1); - test("abcdefghij", 1, 9, "abcde", 4, 0, 9); - test("abcdefghij", 1, 9, "abcde", 4, 1, -3); - test("abcdefghij", 1, 9, "abcde", 4, 2, -3); - test("abcdefghij", 1, 9, "abcde", 5, 0, 9); - test("abcdefghij", 1, 9, "abcde", 5, 1, 9); - test("abcdefghij", 1, 9, "abcde", 6, 0, 0); - test("abcdefghij", 1, 9, "abcdefghij", 0, 0, 9); - test("abcdefghij", 1, 9, "abcdefghij", 0, 1, 1); - test("abcdefghij", 1, 9, "abcdefghij", 0, 5, 1); - test("abcdefghij", 1, 9, "abcdefghij", 0, 9, 1); - test("abcdefghij", 1, 9, "abcdefghij", 0, 10, 1); - test("abcdefghij", 1, 9, "abcdefghij", 0, 11, 1); - test("abcdefghij", 1, 9, "abcdefghij", 1, 0, 9); - test("abcdefghij", 1, 9, "abcdefghij", 1, 1, 8); - test("abcdefghij", 1, 9, "abcdefghij", 1, 4, 5); - test("abcdefghij", 1, 9, "abcdefghij", 1, 8, 1); +void test26() { + test("abcdefghij", 1, 8, "abcde", 1, 1, 7); + test("abcdefghij", 1, 8, "abcde", 1, 2, 6); + test("abcdefghij", 1, 8, "abcde", 1, 3, 5); + test("abcdefghij", 1, 8, "abcde", 1, 4, 4); + test("abcdefghij", 1, 8, "abcde", 1, 5, 4); + test("abcdefghij", 1, 8, "abcde", 2, 0, 8); + test("abcdefghij", 1, 8, "abcde", 2, 1, -1); + test("abcdefghij", 1, 8, "abcde", 2, 2, -1); + test("abcdefghij", 1, 8, "abcde", 2, 3, -1); + test("abcdefghij", 1, 8, "abcde", 2, 4, -1); + test("abcdefghij", 1, 8, "abcde", 4, 0, 8); + test("abcdefghij", 1, 8, "abcde", 4, 1, -3); + test("abcdefghij", 1, 8, "abcde", 4, 2, -3); + test("abcdefghij", 1, 8, "abcde", 5, 0, 8); + test("abcdefghij", 1, 8, "abcde", 5, 1, 8); + test("abcdefghij", 1, 8, "abcde", 6, 0, 0); + test("abcdefghij", 1, 8, "abcdefghij", 0, 0, 8); + test("abcdefghij", 1, 8, "abcdefghij", 0, 1, 1); + test("abcdefghij", 1, 8, "abcdefghij", 0, 5, 1); + test("abcdefghij", 1, 8, "abcdefghij", 0, 9, 1); + test("abcdefghij", 1, 8, "abcdefghij", 0, 10, 1); + test("abcdefghij", 1, 8, "abcdefghij", 0, 11, 1); + test("abcdefghij", 1, 8, "abcdefghij", 1, 0, 8); + test("abcdefghij", 1, 8, "abcdefghij", 1, 1, 7); + test("abcdefghij", 1, 8, "abcdefghij", 1, 4, 4); + test("abcdefghij", 1, 8, "abcdefghij", 1, 8, 0); + test("abcdefghij", 1, 8, "abcdefghij", 1, 9, -1); + test("abcdefghij", 1, 8, "abcdefghij", 1, 10, -1); + test("abcdefghij", 1, 8, "abcdefghij", 5, 0, 8); + test("abcdefghij", 1, 8, "abcdefghij", 5, 1, -4); + test("abcdefghij", 1, 8, "abcdefghij", 5, 2, -4); + test("abcdefghij", 1, 8, "abcdefghij", 5, 4, -4); + test("abcdefghij", 1, 8, "abcdefghij", 5, 5, -4); + test("abcdefghij", 1, 8, "abcdefghij", 5, 6, -4); + test("abcdefghij", 1, 8, "abcdefghij", 9, 0, 8); + test("abcdefghij", 1, 8, "abcdefghij", 9, 1, -8); + test("abcdefghij", 1, 8, "abcdefghij", 9, 2, -8); + test("abcdefghij", 1, 8, "abcdefghij", 10, 0, 8); + test("abcdefghij", 1, 8, "abcdefghij", 10, 1, 8); + test("abcdefghij", 1, 8, "abcdefghij", 11, 0, 0); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 0, 8); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 0, 8); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 1, 7); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 18, -10); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 19, -11); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 1, 20, -11); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 0, 8); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 0, 8); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 20, 0, 8); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 20, 1, 8); + test("abcdefghij", 1, 8, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 1, 9, "", 0, 0, 9); + test("abcdefghij", 1, 9, "", 0, 1, 9); + test("abcdefghij", 1, 9, "", 1, 0, 0); + test("abcdefghij", 1, 9, "abcde", 0, 0, 9); + test("abcdefghij", 1, 9, "abcde", 0, 1, 1); + test("abcdefghij", 1, 9, "abcde", 0, 2, 1); + test("abcdefghij", 1, 9, "abcde", 0, 4, 1); + test("abcdefghij", 1, 9, "abcde", 0, 5, 1); + test("abcdefghij", 1, 9, "abcde", 0, 6, 1); + test("abcdefghij", 1, 9, "abcde", 1, 0, 9); + test("abcdefghij", 1, 9, "abcde", 1, 1, 8); + test("abcdefghij", 1, 9, "abcde", 1, 2, 7); + test("abcdefghij", 1, 9, "abcde", 1, 3, 6); + test("abcdefghij", 1, 9, "abcde", 1, 4, 5); + test("abcdefghij", 1, 9, "abcde", 1, 5, 5); + test("abcdefghij", 1, 9, "abcde", 2, 0, 9); + test("abcdefghij", 1, 9, "abcde", 2, 1, -1); + test("abcdefghij", 1, 9, "abcde", 2, 2, -1); + test("abcdefghij", 1, 9, "abcde", 2, 3, -1); + test("abcdefghij", 1, 9, "abcde", 2, 4, -1); + test("abcdefghij", 1, 9, "abcde", 4, 0, 9); + test("abcdefghij", 1, 9, "abcde", 4, 1, -3); + test("abcdefghij", 1, 9, "abcde", 4, 2, -3); + test("abcdefghij", 1, 9, "abcde", 5, 0, 9); + test("abcdefghij", 1, 9, "abcde", 5, 1, 9); + test("abcdefghij", 1, 9, "abcde", 6, 0, 0); + test("abcdefghij", 1, 9, "abcdefghij", 0, 0, 9); + test("abcdefghij", 1, 9, "abcdefghij", 0, 1, 1); + test("abcdefghij", 1, 9, "abcdefghij", 0, 5, 1); + test("abcdefghij", 1, 9, "abcdefghij", 0, 9, 1); + test("abcdefghij", 1, 9, "abcdefghij", 0, 10, 1); + test("abcdefghij", 1, 9, "abcdefghij", 0, 11, 1); + test("abcdefghij", 1, 9, "abcdefghij", 1, 0, 9); + test("abcdefghij", 1, 9, "abcdefghij", 1, 1, 8); + test("abcdefghij", 1, 9, "abcdefghij", 1, 4, 5); + test("abcdefghij", 1, 9, "abcdefghij", 1, 8, 1); } -void test27() -{ - test("abcdefghij", 1, 9, "abcdefghij", 1, 9, 0); - test("abcdefghij", 1, 9, "abcdefghij", 1, 10, 0); - test("abcdefghij", 1, 9, "abcdefghij", 5, 0, 9); - test("abcdefghij", 1, 9, "abcdefghij", 5, 1, -4); - test("abcdefghij", 1, 9, "abcdefghij", 5, 2, -4); - test("abcdefghij", 1, 9, "abcdefghij", 5, 4, -4); - test("abcdefghij", 1, 9, "abcdefghij", 5, 5, -4); - test("abcdefghij", 1, 9, "abcdefghij", 5, 6, -4); - test("abcdefghij", 1, 9, "abcdefghij", 9, 0, 9); - test("abcdefghij", 1, 9, "abcdefghij", 9, 1, -8); - test("abcdefghij", 1, 9, "abcdefghij", 9, 2, -8); - test("abcdefghij", 1, 9, "abcdefghij", 10, 0, 9); - test("abcdefghij", 1, 9, "abcdefghij", 10, 1, 9); - test("abcdefghij", 1, 9, "abcdefghij", 11, 0, 0); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 0, 9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 0, 9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 1, 8); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 9, 0); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 18, -9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 19, -10); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 20, -10); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 0, 9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 0, 9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 20, 0, 9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 20, 1, 9); - test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 1, 10, "", 0, 0, 9); - test("abcdefghij", 1, 10, "", 0, 1, 9); - test("abcdefghij", 1, 10, "", 1, 0, 0); - test("abcdefghij", 1, 10, "abcde", 0, 0, 9); - test("abcdefghij", 1, 10, "abcde", 0, 1, 1); - test("abcdefghij", 1, 10, "abcde", 0, 2, 1); - test("abcdefghij", 1, 10, "abcde", 0, 4, 1); - test("abcdefghij", 1, 10, "abcde", 0, 5, 1); - test("abcdefghij", 1, 10, "abcde", 0, 6, 1); - test("abcdefghij", 1, 10, "abcde", 1, 0, 9); - test("abcdefghij", 1, 10, "abcde", 1, 1, 8); - test("abcdefghij", 1, 10, "abcde", 1, 2, 7); - test("abcdefghij", 1, 10, "abcde", 1, 3, 6); - test("abcdefghij", 1, 10, "abcde", 1, 4, 5); - test("abcdefghij", 1, 10, "abcde", 1, 5, 5); - test("abcdefghij", 1, 10, "abcde", 2, 0, 9); - test("abcdefghij", 1, 10, "abcde", 2, 1, -1); - test("abcdefghij", 1, 10, "abcde", 2, 2, -1); - test("abcdefghij", 1, 10, "abcde", 2, 3, -1); - test("abcdefghij", 1, 10, "abcde", 2, 4, -1); - test("abcdefghij", 1, 10, "abcde", 4, 0, 9); - test("abcdefghij", 1, 10, "abcde", 4, 1, -3); - test("abcdefghij", 1, 10, "abcde", 4, 2, -3); - test("abcdefghij", 1, 10, "abcde", 5, 0, 9); - test("abcdefghij", 1, 10, "abcde", 5, 1, 9); - test("abcdefghij", 1, 10, "abcde", 6, 0, 0); - test("abcdefghij", 1, 10, "abcdefghij", 0, 0, 9); - test("abcdefghij", 1, 10, "abcdefghij", 0, 1, 1); - test("abcdefghij", 1, 10, "abcdefghij", 0, 5, 1); - test("abcdefghij", 1, 10, "abcdefghij", 0, 9, 1); - test("abcdefghij", 1, 10, "abcdefghij", 0, 10, 1); - test("abcdefghij", 1, 10, "abcdefghij", 0, 11, 1); - test("abcdefghij", 1, 10, "abcdefghij", 1, 0, 9); - test("abcdefghij", 1, 10, "abcdefghij", 1, 1, 8); - test("abcdefghij", 1, 10, "abcdefghij", 1, 4, 5); - test("abcdefghij", 1, 10, "abcdefghij", 1, 8, 1); - test("abcdefghij", 1, 10, "abcdefghij", 1, 9, 0); - test("abcdefghij", 1, 10, "abcdefghij", 1, 10, 0); - test("abcdefghij", 1, 10, "abcdefghij", 5, 0, 9); - test("abcdefghij", 1, 10, "abcdefghij", 5, 1, -4); - test("abcdefghij", 1, 10, "abcdefghij", 5, 2, -4); - test("abcdefghij", 1, 10, "abcdefghij", 5, 4, -4); - test("abcdefghij", 1, 10, "abcdefghij", 5, 5, -4); - test("abcdefghij", 1, 10, "abcdefghij", 5, 6, -4); - test("abcdefghij", 1, 10, "abcdefghij", 9, 0, 9); - test("abcdefghij", 1, 10, "abcdefghij", 9, 1, -8); - test("abcdefghij", 1, 10, "abcdefghij", 9, 2, -8); - test("abcdefghij", 1, 10, "abcdefghij", 10, 0, 9); - test("abcdefghij", 1, 10, "abcdefghij", 10, 1, 9); - test("abcdefghij", 1, 10, "abcdefghij", 11, 0, 0); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 0, 9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 0, 9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 1, 8); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 9, 0); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 18, -9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 19, -10); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 20, -10); +void test27() { + test("abcdefghij", 1, 9, "abcdefghij", 1, 9, 0); + test("abcdefghij", 1, 9, "abcdefghij", 1, 10, 0); + test("abcdefghij", 1, 9, "abcdefghij", 5, 0, 9); + test("abcdefghij", 1, 9, "abcdefghij", 5, 1, -4); + test("abcdefghij", 1, 9, "abcdefghij", 5, 2, -4); + test("abcdefghij", 1, 9, "abcdefghij", 5, 4, -4); + test("abcdefghij", 1, 9, "abcdefghij", 5, 5, -4); + test("abcdefghij", 1, 9, "abcdefghij", 5, 6, -4); + test("abcdefghij", 1, 9, "abcdefghij", 9, 0, 9); + test("abcdefghij", 1, 9, "abcdefghij", 9, 1, -8); + test("abcdefghij", 1, 9, "abcdefghij", 9, 2, -8); + test("abcdefghij", 1, 9, "abcdefghij", 10, 0, 9); + test("abcdefghij", 1, 9, "abcdefghij", 10, 1, 9); + test("abcdefghij", 1, 9, "abcdefghij", 11, 0, 0); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 0, 9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 0, 9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 1, 8); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 9, 0); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 18, -9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 19, -10); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 1, 20, -10); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 0, 9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 0, 9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 20, 0, 9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 20, 1, 9); + test("abcdefghij", 1, 9, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 1, 10, "", 0, 0, 9); + test("abcdefghij", 1, 10, "", 0, 1, 9); + test("abcdefghij", 1, 10, "", 1, 0, 0); + test("abcdefghij", 1, 10, "abcde", 0, 0, 9); + test("abcdefghij", 1, 10, "abcde", 0, 1, 1); + test("abcdefghij", 1, 10, "abcde", 0, 2, 1); + test("abcdefghij", 1, 10, "abcde", 0, 4, 1); + test("abcdefghij", 1, 10, "abcde", 0, 5, 1); + test("abcdefghij", 1, 10, "abcde", 0, 6, 1); + test("abcdefghij", 1, 10, "abcde", 1, 0, 9); + test("abcdefghij", 1, 10, "abcde", 1, 1, 8); + test("abcdefghij", 1, 10, "abcde", 1, 2, 7); + test("abcdefghij", 1, 10, "abcde", 1, 3, 6); + test("abcdefghij", 1, 10, "abcde", 1, 4, 5); + test("abcdefghij", 1, 10, "abcde", 1, 5, 5); + test("abcdefghij", 1, 10, "abcde", 2, 0, 9); + test("abcdefghij", 1, 10, "abcde", 2, 1, -1); + test("abcdefghij", 1, 10, "abcde", 2, 2, -1); + test("abcdefghij", 1, 10, "abcde", 2, 3, -1); + test("abcdefghij", 1, 10, "abcde", 2, 4, -1); + test("abcdefghij", 1, 10, "abcde", 4, 0, 9); + test("abcdefghij", 1, 10, "abcde", 4, 1, -3); + test("abcdefghij", 1, 10, "abcde", 4, 2, -3); + test("abcdefghij", 1, 10, "abcde", 5, 0, 9); + test("abcdefghij", 1, 10, "abcde", 5, 1, 9); + test("abcdefghij", 1, 10, "abcde", 6, 0, 0); + test("abcdefghij", 1, 10, "abcdefghij", 0, 0, 9); + test("abcdefghij", 1, 10, "abcdefghij", 0, 1, 1); + test("abcdefghij", 1, 10, "abcdefghij", 0, 5, 1); + test("abcdefghij", 1, 10, "abcdefghij", 0, 9, 1); + test("abcdefghij", 1, 10, "abcdefghij", 0, 10, 1); + test("abcdefghij", 1, 10, "abcdefghij", 0, 11, 1); + test("abcdefghij", 1, 10, "abcdefghij", 1, 0, 9); + test("abcdefghij", 1, 10, "abcdefghij", 1, 1, 8); + test("abcdefghij", 1, 10, "abcdefghij", 1, 4, 5); + test("abcdefghij", 1, 10, "abcdefghij", 1, 8, 1); + test("abcdefghij", 1, 10, "abcdefghij", 1, 9, 0); + test("abcdefghij", 1, 10, "abcdefghij", 1, 10, 0); + test("abcdefghij", 1, 10, "abcdefghij", 5, 0, 9); + test("abcdefghij", 1, 10, "abcdefghij", 5, 1, -4); + test("abcdefghij", 1, 10, "abcdefghij", 5, 2, -4); + test("abcdefghij", 1, 10, "abcdefghij", 5, 4, -4); + test("abcdefghij", 1, 10, "abcdefghij", 5, 5, -4); + test("abcdefghij", 1, 10, "abcdefghij", 5, 6, -4); + test("abcdefghij", 1, 10, "abcdefghij", 9, 0, 9); + test("abcdefghij", 1, 10, "abcdefghij", 9, 1, -8); + test("abcdefghij", 1, 10, "abcdefghij", 9, 2, -8); + test("abcdefghij", 1, 10, "abcdefghij", 10, 0, 9); + test("abcdefghij", 1, 10, "abcdefghij", 10, 1, 9); + test("abcdefghij", 1, 10, "abcdefghij", 11, 0, 0); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 0, 9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 0, 9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 1, 8); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 9, 0); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 18, -9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 19, -10); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 1, 20, -10); } -void test28() -{ - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 0, 9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 0, 9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 20, 0, 9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 20, 1, 9); - test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 5, 0, "", 0, 0, 0); - test("abcdefghij", 5, 0, "", 0, 1, 0); - test("abcdefghij", 5, 0, "", 1, 0, 0); - test("abcdefghij", 5, 0, "abcde", 0, 0, 0); - test("abcdefghij", 5, 0, "abcde", 0, 1, -1); - test("abcdefghij", 5, 0, "abcde", 0, 2, -2); - test("abcdefghij", 5, 0, "abcde", 0, 4, -4); - test("abcdefghij", 5, 0, "abcde", 0, 5, -5); - test("abcdefghij", 5, 0, "abcde", 0, 6, -5); - test("abcdefghij", 5, 0, "abcde", 1, 0, 0); - test("abcdefghij", 5, 0, "abcde", 1, 1, -1); - test("abcdefghij", 5, 0, "abcde", 1, 2, -2); - test("abcdefghij", 5, 0, "abcde", 1, 3, -3); - test("abcdefghij", 5, 0, "abcde", 1, 4, -4); - test("abcdefghij", 5, 0, "abcde", 1, 5, -4); - test("abcdefghij", 5, 0, "abcde", 2, 0, 0); - test("abcdefghij", 5, 0, "abcde", 2, 1, -1); - test("abcdefghij", 5, 0, "abcde", 2, 2, -2); - test("abcdefghij", 5, 0, "abcde", 2, 3, -3); - test("abcdefghij", 5, 0, "abcde", 2, 4, -3); - test("abcdefghij", 5, 0, "abcde", 4, 0, 0); - test("abcdefghij", 5, 0, "abcde", 4, 1, -1); - test("abcdefghij", 5, 0, "abcde", 4, 2, -1); - test("abcdefghij", 5, 0, "abcde", 5, 0, 0); - test("abcdefghij", 5, 0, "abcde", 5, 1, 0); - test("abcdefghij", 5, 0, "abcde", 6, 0, 0); - test("abcdefghij", 5, 0, "abcdefghij", 0, 0, 0); - test("abcdefghij", 5, 0, "abcdefghij", 0, 1, -1); - test("abcdefghij", 5, 0, "abcdefghij", 0, 5, -5); - test("abcdefghij", 5, 0, "abcdefghij", 0, 9, -9); - test("abcdefghij", 5, 0, "abcdefghij", 0, 10, -10); - test("abcdefghij", 5, 0, "abcdefghij", 0, 11, -10); - test("abcdefghij", 5, 0, "abcdefghij", 1, 0, 0); - test("abcdefghij", 5, 0, "abcdefghij", 1, 1, -1); - test("abcdefghij", 5, 0, "abcdefghij", 1, 4, -4); - test("abcdefghij", 5, 0, "abcdefghij", 1, 8, -8); - test("abcdefghij", 5, 0, "abcdefghij", 1, 9, -9); - test("abcdefghij", 5, 0, "abcdefghij", 1, 10, -9); - test("abcdefghij", 5, 0, "abcdefghij", 5, 0, 0); - test("abcdefghij", 5, 0, "abcdefghij", 5, 1, -1); - test("abcdefghij", 5, 0, "abcdefghij", 5, 2, -2); - test("abcdefghij", 5, 0, "abcdefghij", 5, 4, -4); - test("abcdefghij", 5, 0, "abcdefghij", 5, 5, -5); - test("abcdefghij", 5, 0, "abcdefghij", 5, 6, -5); - test("abcdefghij", 5, 0, "abcdefghij", 9, 0, 0); - test("abcdefghij", 5, 0, "abcdefghij", 9, 1, -1); - test("abcdefghij", 5, 0, "abcdefghij", 9, 2, -1); - test("abcdefghij", 5, 0, "abcdefghij", 10, 0, 0); - test("abcdefghij", 5, 0, "abcdefghij", 10, 1, 0); - test("abcdefghij", 5, 0, "abcdefghij", 11, 0, 0); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 5, 1, "", 0, 0, 1); - test("abcdefghij", 5, 1, "", 0, 1, 1); - test("abcdefghij", 5, 1, "", 1, 0, 0); - test("abcdefghij", 5, 1, "abcde", 0, 0, 1); - test("abcdefghij", 5, 1, "abcde", 0, 1, 5); - test("abcdefghij", 5, 1, "abcde", 0, 2, 5); - test("abcdefghij", 5, 1, "abcde", 0, 4, 5); - test("abcdefghij", 5, 1, "abcde", 0, 5, 5); - test("abcdefghij", 5, 1, "abcde", 0, 6, 5); - test("abcdefghij", 5, 1, "abcde", 1, 0, 1); - test("abcdefghij", 5, 1, "abcde", 1, 1, 4); - test("abcdefghij", 5, 1, "abcde", 1, 2, 4); - test("abcdefghij", 5, 1, "abcde", 1, 3, 4); - test("abcdefghij", 5, 1, "abcde", 1, 4, 4); +void test28() { + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 0, 9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 0, 9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 20, 0, 9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 20, 1, 9); + test("abcdefghij", 1, 10, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 5, 0, "", 0, 0, 0); + test("abcdefghij", 5, 0, "", 0, 1, 0); + test("abcdefghij", 5, 0, "", 1, 0, 0); + test("abcdefghij", 5, 0, "abcde", 0, 0, 0); + test("abcdefghij", 5, 0, "abcde", 0, 1, -1); + test("abcdefghij", 5, 0, "abcde", 0, 2, -2); + test("abcdefghij", 5, 0, "abcde", 0, 4, -4); + test("abcdefghij", 5, 0, "abcde", 0, 5, -5); + test("abcdefghij", 5, 0, "abcde", 0, 6, -5); + test("abcdefghij", 5, 0, "abcde", 1, 0, 0); + test("abcdefghij", 5, 0, "abcde", 1, 1, -1); + test("abcdefghij", 5, 0, "abcde", 1, 2, -2); + test("abcdefghij", 5, 0, "abcde", 1, 3, -3); + test("abcdefghij", 5, 0, "abcde", 1, 4, -4); + test("abcdefghij", 5, 0, "abcde", 1, 5, -4); + test("abcdefghij", 5, 0, "abcde", 2, 0, 0); + test("abcdefghij", 5, 0, "abcde", 2, 1, -1); + test("abcdefghij", 5, 0, "abcde", 2, 2, -2); + test("abcdefghij", 5, 0, "abcde", 2, 3, -3); + test("abcdefghij", 5, 0, "abcde", 2, 4, -3); + test("abcdefghij", 5, 0, "abcde", 4, 0, 0); + test("abcdefghij", 5, 0, "abcde", 4, 1, -1); + test("abcdefghij", 5, 0, "abcde", 4, 2, -1); + test("abcdefghij", 5, 0, "abcde", 5, 0, 0); + test("abcdefghij", 5, 0, "abcde", 5, 1, 0); + test("abcdefghij", 5, 0, "abcde", 6, 0, 0); + test("abcdefghij", 5, 0, "abcdefghij", 0, 0, 0); + test("abcdefghij", 5, 0, "abcdefghij", 0, 1, -1); + test("abcdefghij", 5, 0, "abcdefghij", 0, 5, -5); + test("abcdefghij", 5, 0, "abcdefghij", 0, 9, -9); + test("abcdefghij", 5, 0, "abcdefghij", 0, 10, -10); + test("abcdefghij", 5, 0, "abcdefghij", 0, 11, -10); + test("abcdefghij", 5, 0, "abcdefghij", 1, 0, 0); + test("abcdefghij", 5, 0, "abcdefghij", 1, 1, -1); + test("abcdefghij", 5, 0, "abcdefghij", 1, 4, -4); + test("abcdefghij", 5, 0, "abcdefghij", 1, 8, -8); + test("abcdefghij", 5, 0, "abcdefghij", 1, 9, -9); + test("abcdefghij", 5, 0, "abcdefghij", 1, 10, -9); + test("abcdefghij", 5, 0, "abcdefghij", 5, 0, 0); + test("abcdefghij", 5, 0, "abcdefghij", 5, 1, -1); + test("abcdefghij", 5, 0, "abcdefghij", 5, 2, -2); + test("abcdefghij", 5, 0, "abcdefghij", 5, 4, -4); + test("abcdefghij", 5, 0, "abcdefghij", 5, 5, -5); + test("abcdefghij", 5, 0, "abcdefghij", 5, 6, -5); + test("abcdefghij", 5, 0, "abcdefghij", 9, 0, 0); + test("abcdefghij", 5, 0, "abcdefghij", 9, 1, -1); + test("abcdefghij", 5, 0, "abcdefghij", 9, 2, -1); + test("abcdefghij", 5, 0, "abcdefghij", 10, 0, 0); + test("abcdefghij", 5, 0, "abcdefghij", 10, 1, 0); + test("abcdefghij", 5, 0, "abcdefghij", 11, 0, 0); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghij", 5, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 5, 1, "", 0, 0, 1); + test("abcdefghij", 5, 1, "", 0, 1, 1); + test("abcdefghij", 5, 1, "", 1, 0, 0); + test("abcdefghij", 5, 1, "abcde", 0, 0, 1); + test("abcdefghij", 5, 1, "abcde", 0, 1, 5); + test("abcdefghij", 5, 1, "abcde", 0, 2, 5); + test("abcdefghij", 5, 1, "abcde", 0, 4, 5); + test("abcdefghij", 5, 1, "abcde", 0, 5, 5); + test("abcdefghij", 5, 1, "abcde", 0, 6, 5); + test("abcdefghij", 5, 1, "abcde", 1, 0, 1); + test("abcdefghij", 5, 1, "abcde", 1, 1, 4); + test("abcdefghij", 5, 1, "abcde", 1, 2, 4); + test("abcdefghij", 5, 1, "abcde", 1, 3, 4); + test("abcdefghij", 5, 1, "abcde", 1, 4, 4); } -void test29() -{ - test("abcdefghij", 5, 1, "abcde", 1, 5, 4); - test("abcdefghij", 5, 1, "abcde", 2, 0, 1); - test("abcdefghij", 5, 1, "abcde", 2, 1, 3); - test("abcdefghij", 5, 1, "abcde", 2, 2, 3); - test("abcdefghij", 5, 1, "abcde", 2, 3, 3); - test("abcdefghij", 5, 1, "abcde", 2, 4, 3); - test("abcdefghij", 5, 1, "abcde", 4, 0, 1); - test("abcdefghij", 5, 1, "abcde", 4, 1, 1); - test("abcdefghij", 5, 1, "abcde", 4, 2, 1); - test("abcdefghij", 5, 1, "abcde", 5, 0, 1); - test("abcdefghij", 5, 1, "abcde", 5, 1, 1); - test("abcdefghij", 5, 1, "abcde", 6, 0, 0); - test("abcdefghij", 5, 1, "abcdefghij", 0, 0, 1); - test("abcdefghij", 5, 1, "abcdefghij", 0, 1, 5); - test("abcdefghij", 5, 1, "abcdefghij", 0, 5, 5); - test("abcdefghij", 5, 1, "abcdefghij", 0, 9, 5); - test("abcdefghij", 5, 1, "abcdefghij", 0, 10, 5); - test("abcdefghij", 5, 1, "abcdefghij", 0, 11, 5); - test("abcdefghij", 5, 1, "abcdefghij", 1, 0, 1); - test("abcdefghij", 5, 1, "abcdefghij", 1, 1, 4); - test("abcdefghij", 5, 1, "abcdefghij", 1, 4, 4); - test("abcdefghij", 5, 1, "abcdefghij", 1, 8, 4); - test("abcdefghij", 5, 1, "abcdefghij", 1, 9, 4); - test("abcdefghij", 5, 1, "abcdefghij", 1, 10, 4); - test("abcdefghij", 5, 1, "abcdefghij", 5, 0, 1); - test("abcdefghij", 5, 1, "abcdefghij", 5, 1, 0); - test("abcdefghij", 5, 1, "abcdefghij", 5, 2, -1); - test("abcdefghij", 5, 1, "abcdefghij", 5, 4, -3); - test("abcdefghij", 5, 1, "abcdefghij", 5, 5, -4); - test("abcdefghij", 5, 1, "abcdefghij", 5, 6, -4); - test("abcdefghij", 5, 1, "abcdefghij", 9, 0, 1); - test("abcdefghij", 5, 1, "abcdefghij", 9, 1, -4); - test("abcdefghij", 5, 1, "abcdefghij", 9, 2, -4); - test("abcdefghij", 5, 1, "abcdefghij", 10, 0, 1); - test("abcdefghij", 5, 1, "abcdefghij", 10, 1, 1); - test("abcdefghij", 5, 1, "abcdefghij", 11, 0, 0); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 1, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 10, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 19, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 20, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 21, 5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 1, 4); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 9, 4); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 18, 4); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 19, 4); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 20, 4); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 1, -5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 9, -5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 10, -5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 11, -5); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 1, -14); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 2, -14); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 5, 2, "", 0, 0, 2); - test("abcdefghij", 5, 2, "", 0, 1, 2); - test("abcdefghij", 5, 2, "", 1, 0, 0); - test("abcdefghij", 5, 2, "abcde", 0, 0, 2); - test("abcdefghij", 5, 2, "abcde", 0, 1, 5); - test("abcdefghij", 5, 2, "abcde", 0, 2, 5); - test("abcdefghij", 5, 2, "abcde", 0, 4, 5); - test("abcdefghij", 5, 2, "abcde", 0, 5, 5); - test("abcdefghij", 5, 2, "abcde", 0, 6, 5); - test("abcdefghij", 5, 2, "abcde", 1, 0, 2); - test("abcdefghij", 5, 2, "abcde", 1, 1, 4); - test("abcdefghij", 5, 2, "abcde", 1, 2, 4); - test("abcdefghij", 5, 2, "abcde", 1, 3, 4); - test("abcdefghij", 5, 2, "abcde", 1, 4, 4); - test("abcdefghij", 5, 2, "abcde", 1, 5, 4); - test("abcdefghij", 5, 2, "abcde", 2, 0, 2); - test("abcdefghij", 5, 2, "abcde", 2, 1, 3); - test("abcdefghij", 5, 2, "abcde", 2, 2, 3); - test("abcdefghij", 5, 2, "abcde", 2, 3, 3); - test("abcdefghij", 5, 2, "abcde", 2, 4, 3); - test("abcdefghij", 5, 2, "abcde", 4, 0, 2); - test("abcdefghij", 5, 2, "abcde", 4, 1, 1); - test("abcdefghij", 5, 2, "abcde", 4, 2, 1); - test("abcdefghij", 5, 2, "abcde", 5, 0, 2); - test("abcdefghij", 5, 2, "abcde", 5, 1, 2); - test("abcdefghij", 5, 2, "abcde", 6, 0, 0); - test("abcdefghij", 5, 2, "abcdefghij", 0, 0, 2); - test("abcdefghij", 5, 2, "abcdefghij", 0, 1, 5); - test("abcdefghij", 5, 2, "abcdefghij", 0, 5, 5); - test("abcdefghij", 5, 2, "abcdefghij", 0, 9, 5); - test("abcdefghij", 5, 2, "abcdefghij", 0, 10, 5); - test("abcdefghij", 5, 2, "abcdefghij", 0, 11, 5); - test("abcdefghij", 5, 2, "abcdefghij", 1, 0, 2); - test("abcdefghij", 5, 2, "abcdefghij", 1, 1, 4); - test("abcdefghij", 5, 2, "abcdefghij", 1, 4, 4); - test("abcdefghij", 5, 2, "abcdefghij", 1, 8, 4); - test("abcdefghij", 5, 2, "abcdefghij", 1, 9, 4); - test("abcdefghij", 5, 2, "abcdefghij", 1, 10, 4); - test("abcdefghij", 5, 2, "abcdefghij", 5, 0, 2); - test("abcdefghij", 5, 2, "abcdefghij", 5, 1, 1); +void test29() { + test("abcdefghij", 5, 1, "abcde", 1, 5, 4); + test("abcdefghij", 5, 1, "abcde", 2, 0, 1); + test("abcdefghij", 5, 1, "abcde", 2, 1, 3); + test("abcdefghij", 5, 1, "abcde", 2, 2, 3); + test("abcdefghij", 5, 1, "abcde", 2, 3, 3); + test("abcdefghij", 5, 1, "abcde", 2, 4, 3); + test("abcdefghij", 5, 1, "abcde", 4, 0, 1); + test("abcdefghij", 5, 1, "abcde", 4, 1, 1); + test("abcdefghij", 5, 1, "abcde", 4, 2, 1); + test("abcdefghij", 5, 1, "abcde", 5, 0, 1); + test("abcdefghij", 5, 1, "abcde", 5, 1, 1); + test("abcdefghij", 5, 1, "abcde", 6, 0, 0); + test("abcdefghij", 5, 1, "abcdefghij", 0, 0, 1); + test("abcdefghij", 5, 1, "abcdefghij", 0, 1, 5); + test("abcdefghij", 5, 1, "abcdefghij", 0, 5, 5); + test("abcdefghij", 5, 1, "abcdefghij", 0, 9, 5); + test("abcdefghij", 5, 1, "abcdefghij", 0, 10, 5); + test("abcdefghij", 5, 1, "abcdefghij", 0, 11, 5); + test("abcdefghij", 5, 1, "abcdefghij", 1, 0, 1); + test("abcdefghij", 5, 1, "abcdefghij", 1, 1, 4); + test("abcdefghij", 5, 1, "abcdefghij", 1, 4, 4); + test("abcdefghij", 5, 1, "abcdefghij", 1, 8, 4); + test("abcdefghij", 5, 1, "abcdefghij", 1, 9, 4); + test("abcdefghij", 5, 1, "abcdefghij", 1, 10, 4); + test("abcdefghij", 5, 1, "abcdefghij", 5, 0, 1); + test("abcdefghij", 5, 1, "abcdefghij", 5, 1, 0); + test("abcdefghij", 5, 1, "abcdefghij", 5, 2, -1); + test("abcdefghij", 5, 1, "abcdefghij", 5, 4, -3); + test("abcdefghij", 5, 1, "abcdefghij", 5, 5, -4); + test("abcdefghij", 5, 1, "abcdefghij", 5, 6, -4); + test("abcdefghij", 5, 1, "abcdefghij", 9, 0, 1); + test("abcdefghij", 5, 1, "abcdefghij", 9, 1, -4); + test("abcdefghij", 5, 1, "abcdefghij", 9, 2, -4); + test("abcdefghij", 5, 1, "abcdefghij", 10, 0, 1); + test("abcdefghij", 5, 1, "abcdefghij", 10, 1, 1); + test("abcdefghij", 5, 1, "abcdefghij", 11, 0, 0); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 1, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 10, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 19, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 20, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 0, 21, 5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 1, 4); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 9, 4); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 18, 4); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 19, 4); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 1, 20, 4); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 1, -5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 9, -5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 10, -5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 10, 11, -5); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 1, -14); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 19, 2, -14); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghij", 5, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 5, 2, "", 0, 0, 2); + test("abcdefghij", 5, 2, "", 0, 1, 2); + test("abcdefghij", 5, 2, "", 1, 0, 0); + test("abcdefghij", 5, 2, "abcde", 0, 0, 2); + test("abcdefghij", 5, 2, "abcde", 0, 1, 5); + test("abcdefghij", 5, 2, "abcde", 0, 2, 5); + test("abcdefghij", 5, 2, "abcde", 0, 4, 5); + test("abcdefghij", 5, 2, "abcde", 0, 5, 5); + test("abcdefghij", 5, 2, "abcde", 0, 6, 5); + test("abcdefghij", 5, 2, "abcde", 1, 0, 2); + test("abcdefghij", 5, 2, "abcde", 1, 1, 4); + test("abcdefghij", 5, 2, "abcde", 1, 2, 4); + test("abcdefghij", 5, 2, "abcde", 1, 3, 4); + test("abcdefghij", 5, 2, "abcde", 1, 4, 4); + test("abcdefghij", 5, 2, "abcde", 1, 5, 4); + test("abcdefghij", 5, 2, "abcde", 2, 0, 2); + test("abcdefghij", 5, 2, "abcde", 2, 1, 3); + test("abcdefghij", 5, 2, "abcde", 2, 2, 3); + test("abcdefghij", 5, 2, "abcde", 2, 3, 3); + test("abcdefghij", 5, 2, "abcde", 2, 4, 3); + test("abcdefghij", 5, 2, "abcde", 4, 0, 2); + test("abcdefghij", 5, 2, "abcde", 4, 1, 1); + test("abcdefghij", 5, 2, "abcde", 4, 2, 1); + test("abcdefghij", 5, 2, "abcde", 5, 0, 2); + test("abcdefghij", 5, 2, "abcde", 5, 1, 2); + test("abcdefghij", 5, 2, "abcde", 6, 0, 0); + test("abcdefghij", 5, 2, "abcdefghij", 0, 0, 2); + test("abcdefghij", 5, 2, "abcdefghij", 0, 1, 5); + test("abcdefghij", 5, 2, "abcdefghij", 0, 5, 5); + test("abcdefghij", 5, 2, "abcdefghij", 0, 9, 5); + test("abcdefghij", 5, 2, "abcdefghij", 0, 10, 5); + test("abcdefghij", 5, 2, "abcdefghij", 0, 11, 5); + test("abcdefghij", 5, 2, "abcdefghij", 1, 0, 2); + test("abcdefghij", 5, 2, "abcdefghij", 1, 1, 4); + test("abcdefghij", 5, 2, "abcdefghij", 1, 4, 4); + test("abcdefghij", 5, 2, "abcdefghij", 1, 8, 4); + test("abcdefghij", 5, 2, "abcdefghij", 1, 9, 4); + test("abcdefghij", 5, 2, "abcdefghij", 1, 10, 4); + test("abcdefghij", 5, 2, "abcdefghij", 5, 0, 2); + test("abcdefghij", 5, 2, "abcdefghij", 5, 1, 1); } -void test30() -{ - test("abcdefghij", 5, 2, "abcdefghij", 5, 2, 0); - test("abcdefghij", 5, 2, "abcdefghij", 5, 4, -2); - test("abcdefghij", 5, 2, "abcdefghij", 5, 5, -3); - test("abcdefghij", 5, 2, "abcdefghij", 5, 6, -3); - test("abcdefghij", 5, 2, "abcdefghij", 9, 0, 2); - test("abcdefghij", 5, 2, "abcdefghij", 9, 1, -4); - test("abcdefghij", 5, 2, "abcdefghij", 9, 2, -4); - test("abcdefghij", 5, 2, "abcdefghij", 10, 0, 2); - test("abcdefghij", 5, 2, "abcdefghij", 10, 1, 2); - test("abcdefghij", 5, 2, "abcdefghij", 11, 0, 0); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 0, 2); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 1, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 10, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 19, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 20, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 21, 5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 0, 2); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 1, 4); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 9, 4); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 18, 4); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 19, 4); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 20, 4); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 0, 2); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 1, -5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 9, -5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 10, -5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 11, -5); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 0, 2); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 1, -14); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 2, -14); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 20, 0, 2); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 20, 1, 2); - test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 5, 4, "", 0, 0, 4); - test("abcdefghij", 5, 4, "", 0, 1, 4); - test("abcdefghij", 5, 4, "", 1, 0, 0); - test("abcdefghij", 5, 4, "abcde", 0, 0, 4); - test("abcdefghij", 5, 4, "abcde", 0, 1, 5); - test("abcdefghij", 5, 4, "abcde", 0, 2, 5); - test("abcdefghij", 5, 4, "abcde", 0, 4, 5); - test("abcdefghij", 5, 4, "abcde", 0, 5, 5); - test("abcdefghij", 5, 4, "abcde", 0, 6, 5); - test("abcdefghij", 5, 4, "abcde", 1, 0, 4); - test("abcdefghij", 5, 4, "abcde", 1, 1, 4); - test("abcdefghij", 5, 4, "abcde", 1, 2, 4); - test("abcdefghij", 5, 4, "abcde", 1, 3, 4); - test("abcdefghij", 5, 4, "abcde", 1, 4, 4); - test("abcdefghij", 5, 4, "abcde", 1, 5, 4); - test("abcdefghij", 5, 4, "abcde", 2, 0, 4); - test("abcdefghij", 5, 4, "abcde", 2, 1, 3); - test("abcdefghij", 5, 4, "abcde", 2, 2, 3); - test("abcdefghij", 5, 4, "abcde", 2, 3, 3); - test("abcdefghij", 5, 4, "abcde", 2, 4, 3); - test("abcdefghij", 5, 4, "abcde", 4, 0, 4); - test("abcdefghij", 5, 4, "abcde", 4, 1, 1); - test("abcdefghij", 5, 4, "abcde", 4, 2, 1); - test("abcdefghij", 5, 4, "abcde", 5, 0, 4); - test("abcdefghij", 5, 4, "abcde", 5, 1, 4); - test("abcdefghij", 5, 4, "abcde", 6, 0, 0); - test("abcdefghij", 5, 4, "abcdefghij", 0, 0, 4); - test("abcdefghij", 5, 4, "abcdefghij", 0, 1, 5); - test("abcdefghij", 5, 4, "abcdefghij", 0, 5, 5); - test("abcdefghij", 5, 4, "abcdefghij", 0, 9, 5); - test("abcdefghij", 5, 4, "abcdefghij", 0, 10, 5); - test("abcdefghij", 5, 4, "abcdefghij", 0, 11, 5); - test("abcdefghij", 5, 4, "abcdefghij", 1, 0, 4); - test("abcdefghij", 5, 4, "abcdefghij", 1, 1, 4); - test("abcdefghij", 5, 4, "abcdefghij", 1, 4, 4); - test("abcdefghij", 5, 4, "abcdefghij", 1, 8, 4); - test("abcdefghij", 5, 4, "abcdefghij", 1, 9, 4); - test("abcdefghij", 5, 4, "abcdefghij", 1, 10, 4); - test("abcdefghij", 5, 4, "abcdefghij", 5, 0, 4); - test("abcdefghij", 5, 4, "abcdefghij", 5, 1, 3); - test("abcdefghij", 5, 4, "abcdefghij", 5, 2, 2); - test("abcdefghij", 5, 4, "abcdefghij", 5, 4, 0); - test("abcdefghij", 5, 4, "abcdefghij", 5, 5, -1); - test("abcdefghij", 5, 4, "abcdefghij", 5, 6, -1); - test("abcdefghij", 5, 4, "abcdefghij", 9, 0, 4); - test("abcdefghij", 5, 4, "abcdefghij", 9, 1, -4); - test("abcdefghij", 5, 4, "abcdefghij", 9, 2, -4); - test("abcdefghij", 5, 4, "abcdefghij", 10, 0, 4); - test("abcdefghij", 5, 4, "abcdefghij", 10, 1, 4); - test("abcdefghij", 5, 4, "abcdefghij", 11, 0, 0); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 0, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 1, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 10, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 19, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 20, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 21, 5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 0, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 1, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 9, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 18, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 19, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 20, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 0, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 1, -5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 9, -5); +void test30() { + test("abcdefghij", 5, 2, "abcdefghij", 5, 2, 0); + test("abcdefghij", 5, 2, "abcdefghij", 5, 4, -2); + test("abcdefghij", 5, 2, "abcdefghij", 5, 5, -3); + test("abcdefghij", 5, 2, "abcdefghij", 5, 6, -3); + test("abcdefghij", 5, 2, "abcdefghij", 9, 0, 2); + test("abcdefghij", 5, 2, "abcdefghij", 9, 1, -4); + test("abcdefghij", 5, 2, "abcdefghij", 9, 2, -4); + test("abcdefghij", 5, 2, "abcdefghij", 10, 0, 2); + test("abcdefghij", 5, 2, "abcdefghij", 10, 1, 2); + test("abcdefghij", 5, 2, "abcdefghij", 11, 0, 0); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 0, 2); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 1, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 10, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 19, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 20, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 0, 21, 5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 0, 2); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 1, 4); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 9, 4); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 18, 4); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 19, 4); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 1, 20, 4); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 0, 2); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 1, -5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 9, -5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 10, -5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 10, 11, -5); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 0, 2); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 1, -14); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 19, 2, -14); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 20, 0, 2); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 20, 1, 2); + test("abcdefghij", 5, 2, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 5, 4, "", 0, 0, 4); + test("abcdefghij", 5, 4, "", 0, 1, 4); + test("abcdefghij", 5, 4, "", 1, 0, 0); + test("abcdefghij", 5, 4, "abcde", 0, 0, 4); + test("abcdefghij", 5, 4, "abcde", 0, 1, 5); + test("abcdefghij", 5, 4, "abcde", 0, 2, 5); + test("abcdefghij", 5, 4, "abcde", 0, 4, 5); + test("abcdefghij", 5, 4, "abcde", 0, 5, 5); + test("abcdefghij", 5, 4, "abcde", 0, 6, 5); + test("abcdefghij", 5, 4, "abcde", 1, 0, 4); + test("abcdefghij", 5, 4, "abcde", 1, 1, 4); + test("abcdefghij", 5, 4, "abcde", 1, 2, 4); + test("abcdefghij", 5, 4, "abcde", 1, 3, 4); + test("abcdefghij", 5, 4, "abcde", 1, 4, 4); + test("abcdefghij", 5, 4, "abcde", 1, 5, 4); + test("abcdefghij", 5, 4, "abcde", 2, 0, 4); + test("abcdefghij", 5, 4, "abcde", 2, 1, 3); + test("abcdefghij", 5, 4, "abcde", 2, 2, 3); + test("abcdefghij", 5, 4, "abcde", 2, 3, 3); + test("abcdefghij", 5, 4, "abcde", 2, 4, 3); + test("abcdefghij", 5, 4, "abcde", 4, 0, 4); + test("abcdefghij", 5, 4, "abcde", 4, 1, 1); + test("abcdefghij", 5, 4, "abcde", 4, 2, 1); + test("abcdefghij", 5, 4, "abcde", 5, 0, 4); + test("abcdefghij", 5, 4, "abcde", 5, 1, 4); + test("abcdefghij", 5, 4, "abcde", 6, 0, 0); + test("abcdefghij", 5, 4, "abcdefghij", 0, 0, 4); + test("abcdefghij", 5, 4, "abcdefghij", 0, 1, 5); + test("abcdefghij", 5, 4, "abcdefghij", 0, 5, 5); + test("abcdefghij", 5, 4, "abcdefghij", 0, 9, 5); + test("abcdefghij", 5, 4, "abcdefghij", 0, 10, 5); + test("abcdefghij", 5, 4, "abcdefghij", 0, 11, 5); + test("abcdefghij", 5, 4, "abcdefghij", 1, 0, 4); + test("abcdefghij", 5, 4, "abcdefghij", 1, 1, 4); + test("abcdefghij", 5, 4, "abcdefghij", 1, 4, 4); + test("abcdefghij", 5, 4, "abcdefghij", 1, 8, 4); + test("abcdefghij", 5, 4, "abcdefghij", 1, 9, 4); + test("abcdefghij", 5, 4, "abcdefghij", 1, 10, 4); + test("abcdefghij", 5, 4, "abcdefghij", 5, 0, 4); + test("abcdefghij", 5, 4, "abcdefghij", 5, 1, 3); + test("abcdefghij", 5, 4, "abcdefghij", 5, 2, 2); + test("abcdefghij", 5, 4, "abcdefghij", 5, 4, 0); + test("abcdefghij", 5, 4, "abcdefghij", 5, 5, -1); + test("abcdefghij", 5, 4, "abcdefghij", 5, 6, -1); + test("abcdefghij", 5, 4, "abcdefghij", 9, 0, 4); + test("abcdefghij", 5, 4, "abcdefghij", 9, 1, -4); + test("abcdefghij", 5, 4, "abcdefghij", 9, 2, -4); + test("abcdefghij", 5, 4, "abcdefghij", 10, 0, 4); + test("abcdefghij", 5, 4, "abcdefghij", 10, 1, 4); + test("abcdefghij", 5, 4, "abcdefghij", 11, 0, 0); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 0, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 1, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 10, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 19, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 20, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 0, 21, 5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 0, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 1, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 9, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 18, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 19, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 1, 20, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 0, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 1, -5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 9, -5); } -void test31() -{ - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 10, -5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 11, -5); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 0, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 1, -14); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 2, -14); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 20, 0, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 20, 1, 4); - test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 5, 5, "", 0, 0, 5); - test("abcdefghij", 5, 5, "", 0, 1, 5); - test("abcdefghij", 5, 5, "", 1, 0, 0); - test("abcdefghij", 5, 5, "abcde", 0, 0, 5); - test("abcdefghij", 5, 5, "abcde", 0, 1, 5); - test("abcdefghij", 5, 5, "abcde", 0, 2, 5); - test("abcdefghij", 5, 5, "abcde", 0, 4, 5); - test("abcdefghij", 5, 5, "abcde", 0, 5, 5); - test("abcdefghij", 5, 5, "abcde", 0, 6, 5); - test("abcdefghij", 5, 5, "abcde", 1, 0, 5); - test("abcdefghij", 5, 5, "abcde", 1, 1, 4); - test("abcdefghij", 5, 5, "abcde", 1, 2, 4); - test("abcdefghij", 5, 5, "abcde", 1, 3, 4); - test("abcdefghij", 5, 5, "abcde", 1, 4, 4); - test("abcdefghij", 5, 5, "abcde", 1, 5, 4); - test("abcdefghij", 5, 5, "abcde", 2, 0, 5); - test("abcdefghij", 5, 5, "abcde", 2, 1, 3); - test("abcdefghij", 5, 5, "abcde", 2, 2, 3); - test("abcdefghij", 5, 5, "abcde", 2, 3, 3); - test("abcdefghij", 5, 5, "abcde", 2, 4, 3); - test("abcdefghij", 5, 5, "abcde", 4, 0, 5); - test("abcdefghij", 5, 5, "abcde", 4, 1, 1); - test("abcdefghij", 5, 5, "abcde", 4, 2, 1); - test("abcdefghij", 5, 5, "abcde", 5, 0, 5); - test("abcdefghij", 5, 5, "abcde", 5, 1, 5); - test("abcdefghij", 5, 5, "abcde", 6, 0, 0); - test("abcdefghij", 5, 5, "abcdefghij", 0, 0, 5); - test("abcdefghij", 5, 5, "abcdefghij", 0, 1, 5); - test("abcdefghij", 5, 5, "abcdefghij", 0, 5, 5); - test("abcdefghij", 5, 5, "abcdefghij", 0, 9, 5); - test("abcdefghij", 5, 5, "abcdefghij", 0, 10, 5); - test("abcdefghij", 5, 5, "abcdefghij", 0, 11, 5); - test("abcdefghij", 5, 5, "abcdefghij", 1, 0, 5); - test("abcdefghij", 5, 5, "abcdefghij", 1, 1, 4); - test("abcdefghij", 5, 5, "abcdefghij", 1, 4, 4); - test("abcdefghij", 5, 5, "abcdefghij", 1, 8, 4); - test("abcdefghij", 5, 5, "abcdefghij", 1, 9, 4); - test("abcdefghij", 5, 5, "abcdefghij", 1, 10, 4); - test("abcdefghij", 5, 5, "abcdefghij", 5, 0, 5); - test("abcdefghij", 5, 5, "abcdefghij", 5, 1, 4); - test("abcdefghij", 5, 5, "abcdefghij", 5, 2, 3); - test("abcdefghij", 5, 5, "abcdefghij", 5, 4, 1); - test("abcdefghij", 5, 5, "abcdefghij", 5, 5, 0); - test("abcdefghij", 5, 5, "abcdefghij", 5, 6, 0); - test("abcdefghij", 5, 5, "abcdefghij", 9, 0, 5); - test("abcdefghij", 5, 5, "abcdefghij", 9, 1, -4); - test("abcdefghij", 5, 5, "abcdefghij", 9, 2, -4); - test("abcdefghij", 5, 5, "abcdefghij", 10, 0, 5); - test("abcdefghij", 5, 5, "abcdefghij", 10, 1, 5); - test("abcdefghij", 5, 5, "abcdefghij", 11, 0, 0); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 0, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 1, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 10, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 19, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 20, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 21, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 0, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 1, 4); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 9, 4); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 18, 4); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 19, 4); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 20, 4); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 0, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 1, -5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 9, -5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 10, -5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 11, -5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 0, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 1, -14); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 2, -14); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 20, 0, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 20, 1, 5); - test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 5, 6, "", 0, 0, 5); - test("abcdefghij", 5, 6, "", 0, 1, 5); - test("abcdefghij", 5, 6, "", 1, 0, 0); - test("abcdefghij", 5, 6, "abcde", 0, 0, 5); - test("abcdefghij", 5, 6, "abcde", 0, 1, 5); - test("abcdefghij", 5, 6, "abcde", 0, 2, 5); - test("abcdefghij", 5, 6, "abcde", 0, 4, 5); - test("abcdefghij", 5, 6, "abcde", 0, 5, 5); - test("abcdefghij", 5, 6, "abcde", 0, 6, 5); - test("abcdefghij", 5, 6, "abcde", 1, 0, 5); - test("abcdefghij", 5, 6, "abcde", 1, 1, 4); - test("abcdefghij", 5, 6, "abcde", 1, 2, 4); - test("abcdefghij", 5, 6, "abcde", 1, 3, 4); - test("abcdefghij", 5, 6, "abcde", 1, 4, 4); - test("abcdefghij", 5, 6, "abcde", 1, 5, 4); - test("abcdefghij", 5, 6, "abcde", 2, 0, 5); - test("abcdefghij", 5, 6, "abcde", 2, 1, 3); - test("abcdefghij", 5, 6, "abcde", 2, 2, 3); +void test31() { + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 10, -5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 10, 11, -5); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 0, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 1, -14); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 19, 2, -14); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 20, 0, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 20, 1, 4); + test("abcdefghij", 5, 4, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 5, 5, "", 0, 0, 5); + test("abcdefghij", 5, 5, "", 0, 1, 5); + test("abcdefghij", 5, 5, "", 1, 0, 0); + test("abcdefghij", 5, 5, "abcde", 0, 0, 5); + test("abcdefghij", 5, 5, "abcde", 0, 1, 5); + test("abcdefghij", 5, 5, "abcde", 0, 2, 5); + test("abcdefghij", 5, 5, "abcde", 0, 4, 5); + test("abcdefghij", 5, 5, "abcde", 0, 5, 5); + test("abcdefghij", 5, 5, "abcde", 0, 6, 5); + test("abcdefghij", 5, 5, "abcde", 1, 0, 5); + test("abcdefghij", 5, 5, "abcde", 1, 1, 4); + test("abcdefghij", 5, 5, "abcde", 1, 2, 4); + test("abcdefghij", 5, 5, "abcde", 1, 3, 4); + test("abcdefghij", 5, 5, "abcde", 1, 4, 4); + test("abcdefghij", 5, 5, "abcde", 1, 5, 4); + test("abcdefghij", 5, 5, "abcde", 2, 0, 5); + test("abcdefghij", 5, 5, "abcde", 2, 1, 3); + test("abcdefghij", 5, 5, "abcde", 2, 2, 3); + test("abcdefghij", 5, 5, "abcde", 2, 3, 3); + test("abcdefghij", 5, 5, "abcde", 2, 4, 3); + test("abcdefghij", 5, 5, "abcde", 4, 0, 5); + test("abcdefghij", 5, 5, "abcde", 4, 1, 1); + test("abcdefghij", 5, 5, "abcde", 4, 2, 1); + test("abcdefghij", 5, 5, "abcde", 5, 0, 5); + test("abcdefghij", 5, 5, "abcde", 5, 1, 5); + test("abcdefghij", 5, 5, "abcde", 6, 0, 0); + test("abcdefghij", 5, 5, "abcdefghij", 0, 0, 5); + test("abcdefghij", 5, 5, "abcdefghij", 0, 1, 5); + test("abcdefghij", 5, 5, "abcdefghij", 0, 5, 5); + test("abcdefghij", 5, 5, "abcdefghij", 0, 9, 5); + test("abcdefghij", 5, 5, "abcdefghij", 0, 10, 5); + test("abcdefghij", 5, 5, "abcdefghij", 0, 11, 5); + test("abcdefghij", 5, 5, "abcdefghij", 1, 0, 5); + test("abcdefghij", 5, 5, "abcdefghij", 1, 1, 4); + test("abcdefghij", 5, 5, "abcdefghij", 1, 4, 4); + test("abcdefghij", 5, 5, "abcdefghij", 1, 8, 4); + test("abcdefghij", 5, 5, "abcdefghij", 1, 9, 4); + test("abcdefghij", 5, 5, "abcdefghij", 1, 10, 4); + test("abcdefghij", 5, 5, "abcdefghij", 5, 0, 5); + test("abcdefghij", 5, 5, "abcdefghij", 5, 1, 4); + test("abcdefghij", 5, 5, "abcdefghij", 5, 2, 3); + test("abcdefghij", 5, 5, "abcdefghij", 5, 4, 1); + test("abcdefghij", 5, 5, "abcdefghij", 5, 5, 0); + test("abcdefghij", 5, 5, "abcdefghij", 5, 6, 0); + test("abcdefghij", 5, 5, "abcdefghij", 9, 0, 5); + test("abcdefghij", 5, 5, "abcdefghij", 9, 1, -4); + test("abcdefghij", 5, 5, "abcdefghij", 9, 2, -4); + test("abcdefghij", 5, 5, "abcdefghij", 10, 0, 5); + test("abcdefghij", 5, 5, "abcdefghij", 10, 1, 5); + test("abcdefghij", 5, 5, "abcdefghij", 11, 0, 0); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 0, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 1, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 10, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 19, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 20, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 0, 21, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 0, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 1, 4); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 9, 4); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 18, 4); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 19, 4); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 1, 20, 4); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 0, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 1, -5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 9, -5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 10, -5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 10, 11, -5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 0, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 1, -14); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 19, 2, -14); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 20, 0, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 20, 1, 5); + test("abcdefghij", 5, 5, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 5, 6, "", 0, 0, 5); + test("abcdefghij", 5, 6, "", 0, 1, 5); + test("abcdefghij", 5, 6, "", 1, 0, 0); + test("abcdefghij", 5, 6, "abcde", 0, 0, 5); + test("abcdefghij", 5, 6, "abcde", 0, 1, 5); + test("abcdefghij", 5, 6, "abcde", 0, 2, 5); + test("abcdefghij", 5, 6, "abcde", 0, 4, 5); + test("abcdefghij", 5, 6, "abcde", 0, 5, 5); + test("abcdefghij", 5, 6, "abcde", 0, 6, 5); + test("abcdefghij", 5, 6, "abcde", 1, 0, 5); + test("abcdefghij", 5, 6, "abcde", 1, 1, 4); + test("abcdefghij", 5, 6, "abcde", 1, 2, 4); + test("abcdefghij", 5, 6, "abcde", 1, 3, 4); + test("abcdefghij", 5, 6, "abcde", 1, 4, 4); + test("abcdefghij", 5, 6, "abcde", 1, 5, 4); + test("abcdefghij", 5, 6, "abcde", 2, 0, 5); + test("abcdefghij", 5, 6, "abcde", 2, 1, 3); + test("abcdefghij", 5, 6, "abcde", 2, 2, 3); } -void test32() -{ - test("abcdefghij", 5, 6, "abcde", 2, 3, 3); - test("abcdefghij", 5, 6, "abcde", 2, 4, 3); - test("abcdefghij", 5, 6, "abcde", 4, 0, 5); - test("abcdefghij", 5, 6, "abcde", 4, 1, 1); - test("abcdefghij", 5, 6, "abcde", 4, 2, 1); - test("abcdefghij", 5, 6, "abcde", 5, 0, 5); - test("abcdefghij", 5, 6, "abcde", 5, 1, 5); - test("abcdefghij", 5, 6, "abcde", 6, 0, 0); - test("abcdefghij", 5, 6, "abcdefghij", 0, 0, 5); - test("abcdefghij", 5, 6, "abcdefghij", 0, 1, 5); - test("abcdefghij", 5, 6, "abcdefghij", 0, 5, 5); - test("abcdefghij", 5, 6, "abcdefghij", 0, 9, 5); - test("abcdefghij", 5, 6, "abcdefghij", 0, 10, 5); - test("abcdefghij", 5, 6, "abcdefghij", 0, 11, 5); - test("abcdefghij", 5, 6, "abcdefghij", 1, 0, 5); - test("abcdefghij", 5, 6, "abcdefghij", 1, 1, 4); - test("abcdefghij", 5, 6, "abcdefghij", 1, 4, 4); - test("abcdefghij", 5, 6, "abcdefghij", 1, 8, 4); - test("abcdefghij", 5, 6, "abcdefghij", 1, 9, 4); - test("abcdefghij", 5, 6, "abcdefghij", 1, 10, 4); - test("abcdefghij", 5, 6, "abcdefghij", 5, 0, 5); - test("abcdefghij", 5, 6, "abcdefghij", 5, 1, 4); - test("abcdefghij", 5, 6, "abcdefghij", 5, 2, 3); - test("abcdefghij", 5, 6, "abcdefghij", 5, 4, 1); - test("abcdefghij", 5, 6, "abcdefghij", 5, 5, 0); - test("abcdefghij", 5, 6, "abcdefghij", 5, 6, 0); - test("abcdefghij", 5, 6, "abcdefghij", 9, 0, 5); - test("abcdefghij", 5, 6, "abcdefghij", 9, 1, -4); - test("abcdefghij", 5, 6, "abcdefghij", 9, 2, -4); - test("abcdefghij", 5, 6, "abcdefghij", 10, 0, 5); - test("abcdefghij", 5, 6, "abcdefghij", 10, 1, 5); - test("abcdefghij", 5, 6, "abcdefghij", 11, 0, 0); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 0, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 1, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 10, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 19, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 20, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 21, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 0, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 1, 4); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 9, 4); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 18, 4); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 19, 4); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 20, 4); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 0, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 1, -5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 9, -5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 10, -5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 11, -5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 0, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 1, -14); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 2, -14); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 20, 0, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 20, 1, 5); - test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 9, 0, "", 0, 0, 0); - test("abcdefghij", 9, 0, "", 0, 1, 0); - test("abcdefghij", 9, 0, "", 1, 0, 0); - test("abcdefghij", 9, 0, "abcde", 0, 0, 0); - test("abcdefghij", 9, 0, "abcde", 0, 1, -1); - test("abcdefghij", 9, 0, "abcde", 0, 2, -2); - test("abcdefghij", 9, 0, "abcde", 0, 4, -4); - test("abcdefghij", 9, 0, "abcde", 0, 5, -5); - test("abcdefghij", 9, 0, "abcde", 0, 6, -5); - test("abcdefghij", 9, 0, "abcde", 1, 0, 0); - test("abcdefghij", 9, 0, "abcde", 1, 1, -1); - test("abcdefghij", 9, 0, "abcde", 1, 2, -2); - test("abcdefghij", 9, 0, "abcde", 1, 3, -3); - test("abcdefghij", 9, 0, "abcde", 1, 4, -4); - test("abcdefghij", 9, 0, "abcde", 1, 5, -4); - test("abcdefghij", 9, 0, "abcde", 2, 0, 0); - test("abcdefghij", 9, 0, "abcde", 2, 1, -1); - test("abcdefghij", 9, 0, "abcde", 2, 2, -2); - test("abcdefghij", 9, 0, "abcde", 2, 3, -3); - test("abcdefghij", 9, 0, "abcde", 2, 4, -3); - test("abcdefghij", 9, 0, "abcde", 4, 0, 0); - test("abcdefghij", 9, 0, "abcde", 4, 1, -1); - test("abcdefghij", 9, 0, "abcde", 4, 2, -1); - test("abcdefghij", 9, 0, "abcde", 5, 0, 0); - test("abcdefghij", 9, 0, "abcde", 5, 1, 0); - test("abcdefghij", 9, 0, "abcde", 6, 0, 0); - test("abcdefghij", 9, 0, "abcdefghij", 0, 0, 0); - test("abcdefghij", 9, 0, "abcdefghij", 0, 1, -1); - test("abcdefghij", 9, 0, "abcdefghij", 0, 5, -5); - test("abcdefghij", 9, 0, "abcdefghij", 0, 9, -9); - test("abcdefghij", 9, 0, "abcdefghij", 0, 10, -10); - test("abcdefghij", 9, 0, "abcdefghij", 0, 11, -10); - test("abcdefghij", 9, 0, "abcdefghij", 1, 0, 0); - test("abcdefghij", 9, 0, "abcdefghij", 1, 1, -1); - test("abcdefghij", 9, 0, "abcdefghij", 1, 4, -4); - test("abcdefghij", 9, 0, "abcdefghij", 1, 8, -8); - test("abcdefghij", 9, 0, "abcdefghij", 1, 9, -9); - test("abcdefghij", 9, 0, "abcdefghij", 1, 10, -9); - test("abcdefghij", 9, 0, "abcdefghij", 5, 0, 0); - test("abcdefghij", 9, 0, "abcdefghij", 5, 1, -1); - test("abcdefghij", 9, 0, "abcdefghij", 5, 2, -2); - test("abcdefghij", 9, 0, "abcdefghij", 5, 4, -4); - test("abcdefghij", 9, 0, "abcdefghij", 5, 5, -5); - test("abcdefghij", 9, 0, "abcdefghij", 5, 6, -5); +void test32() { + test("abcdefghij", 5, 6, "abcde", 2, 3, 3); + test("abcdefghij", 5, 6, "abcde", 2, 4, 3); + test("abcdefghij", 5, 6, "abcde", 4, 0, 5); + test("abcdefghij", 5, 6, "abcde", 4, 1, 1); + test("abcdefghij", 5, 6, "abcde", 4, 2, 1); + test("abcdefghij", 5, 6, "abcde", 5, 0, 5); + test("abcdefghij", 5, 6, "abcde", 5, 1, 5); + test("abcdefghij", 5, 6, "abcde", 6, 0, 0); + test("abcdefghij", 5, 6, "abcdefghij", 0, 0, 5); + test("abcdefghij", 5, 6, "abcdefghij", 0, 1, 5); + test("abcdefghij", 5, 6, "abcdefghij", 0, 5, 5); + test("abcdefghij", 5, 6, "abcdefghij", 0, 9, 5); + test("abcdefghij", 5, 6, "abcdefghij", 0, 10, 5); + test("abcdefghij", 5, 6, "abcdefghij", 0, 11, 5); + test("abcdefghij", 5, 6, "abcdefghij", 1, 0, 5); + test("abcdefghij", 5, 6, "abcdefghij", 1, 1, 4); + test("abcdefghij", 5, 6, "abcdefghij", 1, 4, 4); + test("abcdefghij", 5, 6, "abcdefghij", 1, 8, 4); + test("abcdefghij", 5, 6, "abcdefghij", 1, 9, 4); + test("abcdefghij", 5, 6, "abcdefghij", 1, 10, 4); + test("abcdefghij", 5, 6, "abcdefghij", 5, 0, 5); + test("abcdefghij", 5, 6, "abcdefghij", 5, 1, 4); + test("abcdefghij", 5, 6, "abcdefghij", 5, 2, 3); + test("abcdefghij", 5, 6, "abcdefghij", 5, 4, 1); + test("abcdefghij", 5, 6, "abcdefghij", 5, 5, 0); + test("abcdefghij", 5, 6, "abcdefghij", 5, 6, 0); + test("abcdefghij", 5, 6, "abcdefghij", 9, 0, 5); + test("abcdefghij", 5, 6, "abcdefghij", 9, 1, -4); + test("abcdefghij", 5, 6, "abcdefghij", 9, 2, -4); + test("abcdefghij", 5, 6, "abcdefghij", 10, 0, 5); + test("abcdefghij", 5, 6, "abcdefghij", 10, 1, 5); + test("abcdefghij", 5, 6, "abcdefghij", 11, 0, 0); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 0, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 1, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 10, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 19, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 20, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 0, 21, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 0, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 1, 4); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 9, 4); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 18, 4); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 19, 4); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 1, 20, 4); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 0, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 1, -5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 9, -5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 10, -5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 10, 11, -5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 0, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 1, -14); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 19, 2, -14); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 20, 0, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 20, 1, 5); + test("abcdefghij", 5, 6, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 9, 0, "", 0, 0, 0); + test("abcdefghij", 9, 0, "", 0, 1, 0); + test("abcdefghij", 9, 0, "", 1, 0, 0); + test("abcdefghij", 9, 0, "abcde", 0, 0, 0); + test("abcdefghij", 9, 0, "abcde", 0, 1, -1); + test("abcdefghij", 9, 0, "abcde", 0, 2, -2); + test("abcdefghij", 9, 0, "abcde", 0, 4, -4); + test("abcdefghij", 9, 0, "abcde", 0, 5, -5); + test("abcdefghij", 9, 0, "abcde", 0, 6, -5); + test("abcdefghij", 9, 0, "abcde", 1, 0, 0); + test("abcdefghij", 9, 0, "abcde", 1, 1, -1); + test("abcdefghij", 9, 0, "abcde", 1, 2, -2); + test("abcdefghij", 9, 0, "abcde", 1, 3, -3); + test("abcdefghij", 9, 0, "abcde", 1, 4, -4); + test("abcdefghij", 9, 0, "abcde", 1, 5, -4); + test("abcdefghij", 9, 0, "abcde", 2, 0, 0); + test("abcdefghij", 9, 0, "abcde", 2, 1, -1); + test("abcdefghij", 9, 0, "abcde", 2, 2, -2); + test("abcdefghij", 9, 0, "abcde", 2, 3, -3); + test("abcdefghij", 9, 0, "abcde", 2, 4, -3); + test("abcdefghij", 9, 0, "abcde", 4, 0, 0); + test("abcdefghij", 9, 0, "abcde", 4, 1, -1); + test("abcdefghij", 9, 0, "abcde", 4, 2, -1); + test("abcdefghij", 9, 0, "abcde", 5, 0, 0); + test("abcdefghij", 9, 0, "abcde", 5, 1, 0); + test("abcdefghij", 9, 0, "abcde", 6, 0, 0); + test("abcdefghij", 9, 0, "abcdefghij", 0, 0, 0); + test("abcdefghij", 9, 0, "abcdefghij", 0, 1, -1); + test("abcdefghij", 9, 0, "abcdefghij", 0, 5, -5); + test("abcdefghij", 9, 0, "abcdefghij", 0, 9, -9); + test("abcdefghij", 9, 0, "abcdefghij", 0, 10, -10); + test("abcdefghij", 9, 0, "abcdefghij", 0, 11, -10); + test("abcdefghij", 9, 0, "abcdefghij", 1, 0, 0); + test("abcdefghij", 9, 0, "abcdefghij", 1, 1, -1); + test("abcdefghij", 9, 0, "abcdefghij", 1, 4, -4); + test("abcdefghij", 9, 0, "abcdefghij", 1, 8, -8); + test("abcdefghij", 9, 0, "abcdefghij", 1, 9, -9); + test("abcdefghij", 9, 0, "abcdefghij", 1, 10, -9); + test("abcdefghij", 9, 0, "abcdefghij", 5, 0, 0); + test("abcdefghij", 9, 0, "abcdefghij", 5, 1, -1); + test("abcdefghij", 9, 0, "abcdefghij", 5, 2, -2); + test("abcdefghij", 9, 0, "abcdefghij", 5, 4, -4); + test("abcdefghij", 9, 0, "abcdefghij", 5, 5, -5); + test("abcdefghij", 9, 0, "abcdefghij", 5, 6, -5); } -void test33() -{ - test("abcdefghij", 9, 0, "abcdefghij", 9, 0, 0); - test("abcdefghij", 9, 0, "abcdefghij", 9, 1, -1); - test("abcdefghij", 9, 0, "abcdefghij", 9, 2, -1); - test("abcdefghij", 9, 0, "abcdefghij", 10, 0, 0); - test("abcdefghij", 9, 0, "abcdefghij", 10, 1, 0); - test("abcdefghij", 9, 0, "abcdefghij", 11, 0, 0); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 9, 1, "", 0, 0, 1); - test("abcdefghij", 9, 1, "", 0, 1, 1); - test("abcdefghij", 9, 1, "", 1, 0, 0); - test("abcdefghij", 9, 1, "abcde", 0, 0, 1); - test("abcdefghij", 9, 1, "abcde", 0, 1, 9); - test("abcdefghij", 9, 1, "abcde", 0, 2, 9); - test("abcdefghij", 9, 1, "abcde", 0, 4, 9); - test("abcdefghij", 9, 1, "abcde", 0, 5, 9); - test("abcdefghij", 9, 1, "abcde", 0, 6, 9); - test("abcdefghij", 9, 1, "abcde", 1, 0, 1); - test("abcdefghij", 9, 1, "abcde", 1, 1, 8); - test("abcdefghij", 9, 1, "abcde", 1, 2, 8); - test("abcdefghij", 9, 1, "abcde", 1, 3, 8); - test("abcdefghij", 9, 1, "abcde", 1, 4, 8); - test("abcdefghij", 9, 1, "abcde", 1, 5, 8); - test("abcdefghij", 9, 1, "abcde", 2, 0, 1); - test("abcdefghij", 9, 1, "abcde", 2, 1, 7); - test("abcdefghij", 9, 1, "abcde", 2, 2, 7); - test("abcdefghij", 9, 1, "abcde", 2, 3, 7); - test("abcdefghij", 9, 1, "abcde", 2, 4, 7); - test("abcdefghij", 9, 1, "abcde", 4, 0, 1); - test("abcdefghij", 9, 1, "abcde", 4, 1, 5); - test("abcdefghij", 9, 1, "abcde", 4, 2, 5); - test("abcdefghij", 9, 1, "abcde", 5, 0, 1); - test("abcdefghij", 9, 1, "abcde", 5, 1, 1); - test("abcdefghij", 9, 1, "abcde", 6, 0, 0); - test("abcdefghij", 9, 1, "abcdefghij", 0, 0, 1); - test("abcdefghij", 9, 1, "abcdefghij", 0, 1, 9); - test("abcdefghij", 9, 1, "abcdefghij", 0, 5, 9); - test("abcdefghij", 9, 1, "abcdefghij", 0, 9, 9); - test("abcdefghij", 9, 1, "abcdefghij", 0, 10, 9); - test("abcdefghij", 9, 1, "abcdefghij", 0, 11, 9); - test("abcdefghij", 9, 1, "abcdefghij", 1, 0, 1); - test("abcdefghij", 9, 1, "abcdefghij", 1, 1, 8); - test("abcdefghij", 9, 1, "abcdefghij", 1, 4, 8); - test("abcdefghij", 9, 1, "abcdefghij", 1, 8, 8); - test("abcdefghij", 9, 1, "abcdefghij", 1, 9, 8); - test("abcdefghij", 9, 1, "abcdefghij", 1, 10, 8); - test("abcdefghij", 9, 1, "abcdefghij", 5, 0, 1); - test("abcdefghij", 9, 1, "abcdefghij", 5, 1, 4); - test("abcdefghij", 9, 1, "abcdefghij", 5, 2, 4); - test("abcdefghij", 9, 1, "abcdefghij", 5, 4, 4); - test("abcdefghij", 9, 1, "abcdefghij", 5, 5, 4); - test("abcdefghij", 9, 1, "abcdefghij", 5, 6, 4); - test("abcdefghij", 9, 1, "abcdefghij", 9, 0, 1); - test("abcdefghij", 9, 1, "abcdefghij", 9, 1, 0); - test("abcdefghij", 9, 1, "abcdefghij", 9, 2, 0); - test("abcdefghij", 9, 1, "abcdefghij", 10, 0, 1); - test("abcdefghij", 9, 1, "abcdefghij", 10, 1, 1); - test("abcdefghij", 9, 1, "abcdefghij", 11, 0, 0); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 1, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 10, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 19, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 20, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 21, 9); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 1, 8); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 9, 8); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 18, 8); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 19, 8); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 20, 8); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 5, -1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 9, -1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 10, -1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 11, -1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 1, -10); +void test33() { + test("abcdefghij", 9, 0, "abcdefghij", 9, 0, 0); + test("abcdefghij", 9, 0, "abcdefghij", 9, 1, -1); + test("abcdefghij", 9, 0, "abcdefghij", 9, 2, -1); + test("abcdefghij", 9, 0, "abcdefghij", 10, 0, 0); + test("abcdefghij", 9, 0, "abcdefghij", 10, 1, 0); + test("abcdefghij", 9, 0, "abcdefghij", 11, 0, 0); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghij", 9, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 9, 1, "", 0, 0, 1); + test("abcdefghij", 9, 1, "", 0, 1, 1); + test("abcdefghij", 9, 1, "", 1, 0, 0); + test("abcdefghij", 9, 1, "abcde", 0, 0, 1); + test("abcdefghij", 9, 1, "abcde", 0, 1, 9); + test("abcdefghij", 9, 1, "abcde", 0, 2, 9); + test("abcdefghij", 9, 1, "abcde", 0, 4, 9); + test("abcdefghij", 9, 1, "abcde", 0, 5, 9); + test("abcdefghij", 9, 1, "abcde", 0, 6, 9); + test("abcdefghij", 9, 1, "abcde", 1, 0, 1); + test("abcdefghij", 9, 1, "abcde", 1, 1, 8); + test("abcdefghij", 9, 1, "abcde", 1, 2, 8); + test("abcdefghij", 9, 1, "abcde", 1, 3, 8); + test("abcdefghij", 9, 1, "abcde", 1, 4, 8); + test("abcdefghij", 9, 1, "abcde", 1, 5, 8); + test("abcdefghij", 9, 1, "abcde", 2, 0, 1); + test("abcdefghij", 9, 1, "abcde", 2, 1, 7); + test("abcdefghij", 9, 1, "abcde", 2, 2, 7); + test("abcdefghij", 9, 1, "abcde", 2, 3, 7); + test("abcdefghij", 9, 1, "abcde", 2, 4, 7); + test("abcdefghij", 9, 1, "abcde", 4, 0, 1); + test("abcdefghij", 9, 1, "abcde", 4, 1, 5); + test("abcdefghij", 9, 1, "abcde", 4, 2, 5); + test("abcdefghij", 9, 1, "abcde", 5, 0, 1); + test("abcdefghij", 9, 1, "abcde", 5, 1, 1); + test("abcdefghij", 9, 1, "abcde", 6, 0, 0); + test("abcdefghij", 9, 1, "abcdefghij", 0, 0, 1); + test("abcdefghij", 9, 1, "abcdefghij", 0, 1, 9); + test("abcdefghij", 9, 1, "abcdefghij", 0, 5, 9); + test("abcdefghij", 9, 1, "abcdefghij", 0, 9, 9); + test("abcdefghij", 9, 1, "abcdefghij", 0, 10, 9); + test("abcdefghij", 9, 1, "abcdefghij", 0, 11, 9); + test("abcdefghij", 9, 1, "abcdefghij", 1, 0, 1); + test("abcdefghij", 9, 1, "abcdefghij", 1, 1, 8); + test("abcdefghij", 9, 1, "abcdefghij", 1, 4, 8); + test("abcdefghij", 9, 1, "abcdefghij", 1, 8, 8); + test("abcdefghij", 9, 1, "abcdefghij", 1, 9, 8); + test("abcdefghij", 9, 1, "abcdefghij", 1, 10, 8); + test("abcdefghij", 9, 1, "abcdefghij", 5, 0, 1); + test("abcdefghij", 9, 1, "abcdefghij", 5, 1, 4); + test("abcdefghij", 9, 1, "abcdefghij", 5, 2, 4); + test("abcdefghij", 9, 1, "abcdefghij", 5, 4, 4); + test("abcdefghij", 9, 1, "abcdefghij", 5, 5, 4); + test("abcdefghij", 9, 1, "abcdefghij", 5, 6, 4); + test("abcdefghij", 9, 1, "abcdefghij", 9, 0, 1); + test("abcdefghij", 9, 1, "abcdefghij", 9, 1, 0); + test("abcdefghij", 9, 1, "abcdefghij", 9, 2, 0); + test("abcdefghij", 9, 1, "abcdefghij", 10, 0, 1); + test("abcdefghij", 9, 1, "abcdefghij", 10, 1, 1); + test("abcdefghij", 9, 1, "abcdefghij", 11, 0, 0); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 1, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 10, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 19, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 20, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 0, 21, 9); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 1, 8); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 9, 8); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 18, 8); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 19, 8); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 1, 20, 8); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 5, -1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 9, -1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 10, -1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 10, 11, -1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 1, -10); } -void test34() -{ - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 2, -10); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 9, 2, "", 0, 0, 1); - test("abcdefghij", 9, 2, "", 0, 1, 1); - test("abcdefghij", 9, 2, "", 1, 0, 0); - test("abcdefghij", 9, 2, "abcde", 0, 0, 1); - test("abcdefghij", 9, 2, "abcde", 0, 1, 9); - test("abcdefghij", 9, 2, "abcde", 0, 2, 9); - test("abcdefghij", 9, 2, "abcde", 0, 4, 9); - test("abcdefghij", 9, 2, "abcde", 0, 5, 9); - test("abcdefghij", 9, 2, "abcde", 0, 6, 9); - test("abcdefghij", 9, 2, "abcde", 1, 0, 1); - test("abcdefghij", 9, 2, "abcde", 1, 1, 8); - test("abcdefghij", 9, 2, "abcde", 1, 2, 8); - test("abcdefghij", 9, 2, "abcde", 1, 3, 8); - test("abcdefghij", 9, 2, "abcde", 1, 4, 8); - test("abcdefghij", 9, 2, "abcde", 1, 5, 8); - test("abcdefghij", 9, 2, "abcde", 2, 0, 1); - test("abcdefghij", 9, 2, "abcde", 2, 1, 7); - test("abcdefghij", 9, 2, "abcde", 2, 2, 7); - test("abcdefghij", 9, 2, "abcde", 2, 3, 7); - test("abcdefghij", 9, 2, "abcde", 2, 4, 7); - test("abcdefghij", 9, 2, "abcde", 4, 0, 1); - test("abcdefghij", 9, 2, "abcde", 4, 1, 5); - test("abcdefghij", 9, 2, "abcde", 4, 2, 5); - test("abcdefghij", 9, 2, "abcde", 5, 0, 1); - test("abcdefghij", 9, 2, "abcde", 5, 1, 1); - test("abcdefghij", 9, 2, "abcde", 6, 0, 0); - test("abcdefghij", 9, 2, "abcdefghij", 0, 0, 1); - test("abcdefghij", 9, 2, "abcdefghij", 0, 1, 9); - test("abcdefghij", 9, 2, "abcdefghij", 0, 5, 9); - test("abcdefghij", 9, 2, "abcdefghij", 0, 9, 9); - test("abcdefghij", 9, 2, "abcdefghij", 0, 10, 9); - test("abcdefghij", 9, 2, "abcdefghij", 0, 11, 9); - test("abcdefghij", 9, 2, "abcdefghij", 1, 0, 1); - test("abcdefghij", 9, 2, "abcdefghij", 1, 1, 8); - test("abcdefghij", 9, 2, "abcdefghij", 1, 4, 8); - test("abcdefghij", 9, 2, "abcdefghij", 1, 8, 8); - test("abcdefghij", 9, 2, "abcdefghij", 1, 9, 8); - test("abcdefghij", 9, 2, "abcdefghij", 1, 10, 8); - test("abcdefghij", 9, 2, "abcdefghij", 5, 0, 1); - test("abcdefghij", 9, 2, "abcdefghij", 5, 1, 4); - test("abcdefghij", 9, 2, "abcdefghij", 5, 2, 4); - test("abcdefghij", 9, 2, "abcdefghij", 5, 4, 4); - test("abcdefghij", 9, 2, "abcdefghij", 5, 5, 4); - test("abcdefghij", 9, 2, "abcdefghij", 5, 6, 4); - test("abcdefghij", 9, 2, "abcdefghij", 9, 0, 1); - test("abcdefghij", 9, 2, "abcdefghij", 9, 1, 0); - test("abcdefghij", 9, 2, "abcdefghij", 9, 2, 0); - test("abcdefghij", 9, 2, "abcdefghij", 10, 0, 1); - test("abcdefghij", 9, 2, "abcdefghij", 10, 1, 1); - test("abcdefghij", 9, 2, "abcdefghij", 11, 0, 0); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 1, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 10, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 19, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 20, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 21, 9); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 1, 8); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 9, 8); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 18, 8); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 19, 8); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 20, 8); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 5, -1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 9, -1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 10, -1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 11, -1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 1, -10); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 2, -10); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 10, 0, "", 0, 0, 0); - test("abcdefghij", 10, 0, "", 0, 1, 0); - test("abcdefghij", 10, 0, "", 1, 0, 0); - test("abcdefghij", 10, 0, "abcde", 0, 0, 0); - test("abcdefghij", 10, 0, "abcde", 0, 1, -1); - test("abcdefghij", 10, 0, "abcde", 0, 2, -2); - test("abcdefghij", 10, 0, "abcde", 0, 4, -4); - test("abcdefghij", 10, 0, "abcde", 0, 5, -5); - test("abcdefghij", 10, 0, "abcde", 0, 6, -5); - test("abcdefghij", 10, 0, "abcde", 1, 0, 0); - test("abcdefghij", 10, 0, "abcde", 1, 1, -1); - test("abcdefghij", 10, 0, "abcde", 1, 2, -2); - test("abcdefghij", 10, 0, "abcde", 1, 3, -3); - test("abcdefghij", 10, 0, "abcde", 1, 4, -4); - test("abcdefghij", 10, 0, "abcde", 1, 5, -4); - test("abcdefghij", 10, 0, "abcde", 2, 0, 0); - test("abcdefghij", 10, 0, "abcde", 2, 1, -1); - test("abcdefghij", 10, 0, "abcde", 2, 2, -2); - test("abcdefghij", 10, 0, "abcde", 2, 3, -3); - test("abcdefghij", 10, 0, "abcde", 2, 4, -3); - test("abcdefghij", 10, 0, "abcde", 4, 0, 0); - test("abcdefghij", 10, 0, "abcde", 4, 1, -1); +void test34() { + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 19, 2, -10); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghij", 9, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 9, 2, "", 0, 0, 1); + test("abcdefghij", 9, 2, "", 0, 1, 1); + test("abcdefghij", 9, 2, "", 1, 0, 0); + test("abcdefghij", 9, 2, "abcde", 0, 0, 1); + test("abcdefghij", 9, 2, "abcde", 0, 1, 9); + test("abcdefghij", 9, 2, "abcde", 0, 2, 9); + test("abcdefghij", 9, 2, "abcde", 0, 4, 9); + test("abcdefghij", 9, 2, "abcde", 0, 5, 9); + test("abcdefghij", 9, 2, "abcde", 0, 6, 9); + test("abcdefghij", 9, 2, "abcde", 1, 0, 1); + test("abcdefghij", 9, 2, "abcde", 1, 1, 8); + test("abcdefghij", 9, 2, "abcde", 1, 2, 8); + test("abcdefghij", 9, 2, "abcde", 1, 3, 8); + test("abcdefghij", 9, 2, "abcde", 1, 4, 8); + test("abcdefghij", 9, 2, "abcde", 1, 5, 8); + test("abcdefghij", 9, 2, "abcde", 2, 0, 1); + test("abcdefghij", 9, 2, "abcde", 2, 1, 7); + test("abcdefghij", 9, 2, "abcde", 2, 2, 7); + test("abcdefghij", 9, 2, "abcde", 2, 3, 7); + test("abcdefghij", 9, 2, "abcde", 2, 4, 7); + test("abcdefghij", 9, 2, "abcde", 4, 0, 1); + test("abcdefghij", 9, 2, "abcde", 4, 1, 5); + test("abcdefghij", 9, 2, "abcde", 4, 2, 5); + test("abcdefghij", 9, 2, "abcde", 5, 0, 1); + test("abcdefghij", 9, 2, "abcde", 5, 1, 1); + test("abcdefghij", 9, 2, "abcde", 6, 0, 0); + test("abcdefghij", 9, 2, "abcdefghij", 0, 0, 1); + test("abcdefghij", 9, 2, "abcdefghij", 0, 1, 9); + test("abcdefghij", 9, 2, "abcdefghij", 0, 5, 9); + test("abcdefghij", 9, 2, "abcdefghij", 0, 9, 9); + test("abcdefghij", 9, 2, "abcdefghij", 0, 10, 9); + test("abcdefghij", 9, 2, "abcdefghij", 0, 11, 9); + test("abcdefghij", 9, 2, "abcdefghij", 1, 0, 1); + test("abcdefghij", 9, 2, "abcdefghij", 1, 1, 8); + test("abcdefghij", 9, 2, "abcdefghij", 1, 4, 8); + test("abcdefghij", 9, 2, "abcdefghij", 1, 8, 8); + test("abcdefghij", 9, 2, "abcdefghij", 1, 9, 8); + test("abcdefghij", 9, 2, "abcdefghij", 1, 10, 8); + test("abcdefghij", 9, 2, "abcdefghij", 5, 0, 1); + test("abcdefghij", 9, 2, "abcdefghij", 5, 1, 4); + test("abcdefghij", 9, 2, "abcdefghij", 5, 2, 4); + test("abcdefghij", 9, 2, "abcdefghij", 5, 4, 4); + test("abcdefghij", 9, 2, "abcdefghij", 5, 5, 4); + test("abcdefghij", 9, 2, "abcdefghij", 5, 6, 4); + test("abcdefghij", 9, 2, "abcdefghij", 9, 0, 1); + test("abcdefghij", 9, 2, "abcdefghij", 9, 1, 0); + test("abcdefghij", 9, 2, "abcdefghij", 9, 2, 0); + test("abcdefghij", 9, 2, "abcdefghij", 10, 0, 1); + test("abcdefghij", 9, 2, "abcdefghij", 10, 1, 1); + test("abcdefghij", 9, 2, "abcdefghij", 11, 0, 0); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 1, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 10, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 19, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 20, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 0, 21, 9); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 1, 8); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 9, 8); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 18, 8); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 19, 8); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 1, 20, 8); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 5, -1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 9, -1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 10, -1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 10, 11, -1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 1, -10); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 19, 2, -10); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghij", 9, 2, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 10, 0, "", 0, 0, 0); + test("abcdefghij", 10, 0, "", 0, 1, 0); + test("abcdefghij", 10, 0, "", 1, 0, 0); + test("abcdefghij", 10, 0, "abcde", 0, 0, 0); + test("abcdefghij", 10, 0, "abcde", 0, 1, -1); + test("abcdefghij", 10, 0, "abcde", 0, 2, -2); + test("abcdefghij", 10, 0, "abcde", 0, 4, -4); + test("abcdefghij", 10, 0, "abcde", 0, 5, -5); + test("abcdefghij", 10, 0, "abcde", 0, 6, -5); + test("abcdefghij", 10, 0, "abcde", 1, 0, 0); + test("abcdefghij", 10, 0, "abcde", 1, 1, -1); + test("abcdefghij", 10, 0, "abcde", 1, 2, -2); + test("abcdefghij", 10, 0, "abcde", 1, 3, -3); + test("abcdefghij", 10, 0, "abcde", 1, 4, -4); + test("abcdefghij", 10, 0, "abcde", 1, 5, -4); + test("abcdefghij", 10, 0, "abcde", 2, 0, 0); + test("abcdefghij", 10, 0, "abcde", 2, 1, -1); + test("abcdefghij", 10, 0, "abcde", 2, 2, -2); + test("abcdefghij", 10, 0, "abcde", 2, 3, -3); + test("abcdefghij", 10, 0, "abcde", 2, 4, -3); + test("abcdefghij", 10, 0, "abcde", 4, 0, 0); + test("abcdefghij", 10, 0, "abcde", 4, 1, -1); } -void test35() -{ - test("abcdefghij", 10, 0, "abcde", 4, 2, -1); - test("abcdefghij", 10, 0, "abcde", 5, 0, 0); - test("abcdefghij", 10, 0, "abcde", 5, 1, 0); - test("abcdefghij", 10, 0, "abcde", 6, 0, 0); - test("abcdefghij", 10, 0, "abcdefghij", 0, 0, 0); - test("abcdefghij", 10, 0, "abcdefghij", 0, 1, -1); - test("abcdefghij", 10, 0, "abcdefghij", 0, 5, -5); - test("abcdefghij", 10, 0, "abcdefghij", 0, 9, -9); - test("abcdefghij", 10, 0, "abcdefghij", 0, 10, -10); - test("abcdefghij", 10, 0, "abcdefghij", 0, 11, -10); - test("abcdefghij", 10, 0, "abcdefghij", 1, 0, 0); - test("abcdefghij", 10, 0, "abcdefghij", 1, 1, -1); - test("abcdefghij", 10, 0, "abcdefghij", 1, 4, -4); - test("abcdefghij", 10, 0, "abcdefghij", 1, 8, -8); - test("abcdefghij", 10, 0, "abcdefghij", 1, 9, -9); - test("abcdefghij", 10, 0, "abcdefghij", 1, 10, -9); - test("abcdefghij", 10, 0, "abcdefghij", 5, 0, 0); - test("abcdefghij", 10, 0, "abcdefghij", 5, 1, -1); - test("abcdefghij", 10, 0, "abcdefghij", 5, 2, -2); - test("abcdefghij", 10, 0, "abcdefghij", 5, 4, -4); - test("abcdefghij", 10, 0, "abcdefghij", 5, 5, -5); - test("abcdefghij", 10, 0, "abcdefghij", 5, 6, -5); - test("abcdefghij", 10, 0, "abcdefghij", 9, 0, 0); - test("abcdefghij", 10, 0, "abcdefghij", 9, 1, -1); - test("abcdefghij", 10, 0, "abcdefghij", 9, 2, -1); - test("abcdefghij", 10, 0, "abcdefghij", 10, 0, 0); - test("abcdefghij", 10, 0, "abcdefghij", 10, 1, 0); - test("abcdefghij", 10, 0, "abcdefghij", 11, 0, 0); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 10, 1, "", 0, 0, 0); - test("abcdefghij", 10, 1, "", 0, 1, 0); - test("abcdefghij", 10, 1, "", 1, 0, 0); - test("abcdefghij", 10, 1, "abcde", 0, 0, 0); - test("abcdefghij", 10, 1, "abcde", 0, 1, -1); - test("abcdefghij", 10, 1, "abcde", 0, 2, -2); - test("abcdefghij", 10, 1, "abcde", 0, 4, -4); - test("abcdefghij", 10, 1, "abcde", 0, 5, -5); - test("abcdefghij", 10, 1, "abcde", 0, 6, -5); - test("abcdefghij", 10, 1, "abcde", 1, 0, 0); - test("abcdefghij", 10, 1, "abcde", 1, 1, -1); - test("abcdefghij", 10, 1, "abcde", 1, 2, -2); - test("abcdefghij", 10, 1, "abcde", 1, 3, -3); - test("abcdefghij", 10, 1, "abcde", 1, 4, -4); - test("abcdefghij", 10, 1, "abcde", 1, 5, -4); - test("abcdefghij", 10, 1, "abcde", 2, 0, 0); - test("abcdefghij", 10, 1, "abcde", 2, 1, -1); - test("abcdefghij", 10, 1, "abcde", 2, 2, -2); - test("abcdefghij", 10, 1, "abcde", 2, 3, -3); - test("abcdefghij", 10, 1, "abcde", 2, 4, -3); - test("abcdefghij", 10, 1, "abcde", 4, 0, 0); - test("abcdefghij", 10, 1, "abcde", 4, 1, -1); - test("abcdefghij", 10, 1, "abcde", 4, 2, -1); - test("abcdefghij", 10, 1, "abcde", 5, 0, 0); - test("abcdefghij", 10, 1, "abcde", 5, 1, 0); - test("abcdefghij", 10, 1, "abcde", 6, 0, 0); - test("abcdefghij", 10, 1, "abcdefghij", 0, 0, 0); - test("abcdefghij", 10, 1, "abcdefghij", 0, 1, -1); - test("abcdefghij", 10, 1, "abcdefghij", 0, 5, -5); - test("abcdefghij", 10, 1, "abcdefghij", 0, 9, -9); - test("abcdefghij", 10, 1, "abcdefghij", 0, 10, -10); - test("abcdefghij", 10, 1, "abcdefghij", 0, 11, -10); - test("abcdefghij", 10, 1, "abcdefghij", 1, 0, 0); - test("abcdefghij", 10, 1, "abcdefghij", 1, 1, -1); - test("abcdefghij", 10, 1, "abcdefghij", 1, 4, -4); - test("abcdefghij", 10, 1, "abcdefghij", 1, 8, -8); - test("abcdefghij", 10, 1, "abcdefghij", 1, 9, -9); - test("abcdefghij", 10, 1, "abcdefghij", 1, 10, -9); - test("abcdefghij", 10, 1, "abcdefghij", 5, 0, 0); - test("abcdefghij", 10, 1, "abcdefghij", 5, 1, -1); - test("abcdefghij", 10, 1, "abcdefghij", 5, 2, -2); - test("abcdefghij", 10, 1, "abcdefghij", 5, 4, -4); - test("abcdefghij", 10, 1, "abcdefghij", 5, 5, -5); - test("abcdefghij", 10, 1, "abcdefghij", 5, 6, -5); - test("abcdefghij", 10, 1, "abcdefghij", 9, 0, 0); - test("abcdefghij", 10, 1, "abcdefghij", 9, 1, -1); - test("abcdefghij", 10, 1, "abcdefghij", 9, 2, -1); - test("abcdefghij", 10, 1, "abcdefghij", 10, 0, 0); +void test35() { + test("abcdefghij", 10, 0, "abcde", 4, 2, -1); + test("abcdefghij", 10, 0, "abcde", 5, 0, 0); + test("abcdefghij", 10, 0, "abcde", 5, 1, 0); + test("abcdefghij", 10, 0, "abcde", 6, 0, 0); + test("abcdefghij", 10, 0, "abcdefghij", 0, 0, 0); + test("abcdefghij", 10, 0, "abcdefghij", 0, 1, -1); + test("abcdefghij", 10, 0, "abcdefghij", 0, 5, -5); + test("abcdefghij", 10, 0, "abcdefghij", 0, 9, -9); + test("abcdefghij", 10, 0, "abcdefghij", 0, 10, -10); + test("abcdefghij", 10, 0, "abcdefghij", 0, 11, -10); + test("abcdefghij", 10, 0, "abcdefghij", 1, 0, 0); + test("abcdefghij", 10, 0, "abcdefghij", 1, 1, -1); + test("abcdefghij", 10, 0, "abcdefghij", 1, 4, -4); + test("abcdefghij", 10, 0, "abcdefghij", 1, 8, -8); + test("abcdefghij", 10, 0, "abcdefghij", 1, 9, -9); + test("abcdefghij", 10, 0, "abcdefghij", 1, 10, -9); + test("abcdefghij", 10, 0, "abcdefghij", 5, 0, 0); + test("abcdefghij", 10, 0, "abcdefghij", 5, 1, -1); + test("abcdefghij", 10, 0, "abcdefghij", 5, 2, -2); + test("abcdefghij", 10, 0, "abcdefghij", 5, 4, -4); + test("abcdefghij", 10, 0, "abcdefghij", 5, 5, -5); + test("abcdefghij", 10, 0, "abcdefghij", 5, 6, -5); + test("abcdefghij", 10, 0, "abcdefghij", 9, 0, 0); + test("abcdefghij", 10, 0, "abcdefghij", 9, 1, -1); + test("abcdefghij", 10, 0, "abcdefghij", 9, 2, -1); + test("abcdefghij", 10, 0, "abcdefghij", 10, 0, 0); + test("abcdefghij", 10, 0, "abcdefghij", 10, 1, 0); + test("abcdefghij", 10, 0, "abcdefghij", 11, 0, 0); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghij", 10, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 10, 1, "", 0, 0, 0); + test("abcdefghij", 10, 1, "", 0, 1, 0); + test("abcdefghij", 10, 1, "", 1, 0, 0); + test("abcdefghij", 10, 1, "abcde", 0, 0, 0); + test("abcdefghij", 10, 1, "abcde", 0, 1, -1); + test("abcdefghij", 10, 1, "abcde", 0, 2, -2); + test("abcdefghij", 10, 1, "abcde", 0, 4, -4); + test("abcdefghij", 10, 1, "abcde", 0, 5, -5); + test("abcdefghij", 10, 1, "abcde", 0, 6, -5); + test("abcdefghij", 10, 1, "abcde", 1, 0, 0); + test("abcdefghij", 10, 1, "abcde", 1, 1, -1); + test("abcdefghij", 10, 1, "abcde", 1, 2, -2); + test("abcdefghij", 10, 1, "abcde", 1, 3, -3); + test("abcdefghij", 10, 1, "abcde", 1, 4, -4); + test("abcdefghij", 10, 1, "abcde", 1, 5, -4); + test("abcdefghij", 10, 1, "abcde", 2, 0, 0); + test("abcdefghij", 10, 1, "abcde", 2, 1, -1); + test("abcdefghij", 10, 1, "abcde", 2, 2, -2); + test("abcdefghij", 10, 1, "abcde", 2, 3, -3); + test("abcdefghij", 10, 1, "abcde", 2, 4, -3); + test("abcdefghij", 10, 1, "abcde", 4, 0, 0); + test("abcdefghij", 10, 1, "abcde", 4, 1, -1); + test("abcdefghij", 10, 1, "abcde", 4, 2, -1); + test("abcdefghij", 10, 1, "abcde", 5, 0, 0); + test("abcdefghij", 10, 1, "abcde", 5, 1, 0); + test("abcdefghij", 10, 1, "abcde", 6, 0, 0); + test("abcdefghij", 10, 1, "abcdefghij", 0, 0, 0); + test("abcdefghij", 10, 1, "abcdefghij", 0, 1, -1); + test("abcdefghij", 10, 1, "abcdefghij", 0, 5, -5); + test("abcdefghij", 10, 1, "abcdefghij", 0, 9, -9); + test("abcdefghij", 10, 1, "abcdefghij", 0, 10, -10); + test("abcdefghij", 10, 1, "abcdefghij", 0, 11, -10); + test("abcdefghij", 10, 1, "abcdefghij", 1, 0, 0); + test("abcdefghij", 10, 1, "abcdefghij", 1, 1, -1); + test("abcdefghij", 10, 1, "abcdefghij", 1, 4, -4); + test("abcdefghij", 10, 1, "abcdefghij", 1, 8, -8); + test("abcdefghij", 10, 1, "abcdefghij", 1, 9, -9); + test("abcdefghij", 10, 1, "abcdefghij", 1, 10, -9); + test("abcdefghij", 10, 1, "abcdefghij", 5, 0, 0); + test("abcdefghij", 10, 1, "abcdefghij", 5, 1, -1); + test("abcdefghij", 10, 1, "abcdefghij", 5, 2, -2); + test("abcdefghij", 10, 1, "abcdefghij", 5, 4, -4); + test("abcdefghij", 10, 1, "abcdefghij", 5, 5, -5); + test("abcdefghij", 10, 1, "abcdefghij", 5, 6, -5); + test("abcdefghij", 10, 1, "abcdefghij", 9, 0, 0); + test("abcdefghij", 10, 1, "abcdefghij", 9, 1, -1); + test("abcdefghij", 10, 1, "abcdefghij", 9, 2, -1); + test("abcdefghij", 10, 1, "abcdefghij", 10, 0, 0); } -void test36() -{ - test("abcdefghij", 10, 1, "abcdefghij", 10, 1, 0); - test("abcdefghij", 10, 1, "abcdefghij", 11, 0, 0); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghij", 11, 0, "", 0, 0, 0); - test("abcdefghij", 11, 0, "", 0, 1, 0); - test("abcdefghij", 11, 0, "", 1, 0, 0); - test("abcdefghij", 11, 0, "abcde", 0, 0, 0); - test("abcdefghij", 11, 0, "abcde", 0, 1, 0); - test("abcdefghij", 11, 0, "abcde", 0, 2, 0); - test("abcdefghij", 11, 0, "abcde", 0, 4, 0); - test("abcdefghij", 11, 0, "abcde", 0, 5, 0); - test("abcdefghij", 11, 0, "abcde", 0, 6, 0); - test("abcdefghij", 11, 0, "abcde", 1, 0, 0); - test("abcdefghij", 11, 0, "abcde", 1, 1, 0); - test("abcdefghij", 11, 0, "abcde", 1, 2, 0); - test("abcdefghij", 11, 0, "abcde", 1, 3, 0); - test("abcdefghij", 11, 0, "abcde", 1, 4, 0); - test("abcdefghij", 11, 0, "abcde", 1, 5, 0); - test("abcdefghij", 11, 0, "abcde", 2, 0, 0); - test("abcdefghij", 11, 0, "abcde", 2, 1, 0); - test("abcdefghij", 11, 0, "abcde", 2, 2, 0); - test("abcdefghij", 11, 0, "abcde", 2, 3, 0); - test("abcdefghij", 11, 0, "abcde", 2, 4, 0); - test("abcdefghij", 11, 0, "abcde", 4, 0, 0); - test("abcdefghij", 11, 0, "abcde", 4, 1, 0); - test("abcdefghij", 11, 0, "abcde", 4, 2, 0); - test("abcdefghij", 11, 0, "abcde", 5, 0, 0); - test("abcdefghij", 11, 0, "abcde", 5, 1, 0); - test("abcdefghij", 11, 0, "abcde", 6, 0, 0); - test("abcdefghij", 11, 0, "abcdefghij", 0, 0, 0); - test("abcdefghij", 11, 0, "abcdefghij", 0, 1, 0); - test("abcdefghij", 11, 0, "abcdefghij", 0, 5, 0); - test("abcdefghij", 11, 0, "abcdefghij", 0, 9, 0); - test("abcdefghij", 11, 0, "abcdefghij", 0, 10, 0); - test("abcdefghij", 11, 0, "abcdefghij", 0, 11, 0); - test("abcdefghij", 11, 0, "abcdefghij", 1, 0, 0); - test("abcdefghij", 11, 0, "abcdefghij", 1, 1, 0); - test("abcdefghij", 11, 0, "abcdefghij", 1, 4, 0); - test("abcdefghij", 11, 0, "abcdefghij", 1, 8, 0); - test("abcdefghij", 11, 0, "abcdefghij", 1, 9, 0); - test("abcdefghij", 11, 0, "abcdefghij", 1, 10, 0); - test("abcdefghij", 11, 0, "abcdefghij", 5, 0, 0); - test("abcdefghij", 11, 0, "abcdefghij", 5, 1, 0); - test("abcdefghij", 11, 0, "abcdefghij", 5, 2, 0); - test("abcdefghij", 11, 0, "abcdefghij", 5, 4, 0); - test("abcdefghij", 11, 0, "abcdefghij", 5, 5, 0); - test("abcdefghij", 11, 0, "abcdefghij", 5, 6, 0); - test("abcdefghij", 11, 0, "abcdefghij", 9, 0, 0); - test("abcdefghij", 11, 0, "abcdefghij", 9, 1, 0); - test("abcdefghij", 11, 0, "abcdefghij", 9, 2, 0); - test("abcdefghij", 11, 0, "abcdefghij", 10, 0, 0); - test("abcdefghij", 11, 0, "abcdefghij", 10, 1, 0); - test("abcdefghij", 11, 0, "abcdefghij", 11, 0, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 1, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 10, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 19, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 20, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 21, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 1, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 9, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 18, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 19, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 20, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 1, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 5, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 9, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 10, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 11, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 1, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 2, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 21, 0, 0); +void test36() { + test("abcdefghij", 10, 1, "abcdefghij", 10, 1, 0); + test("abcdefghij", 10, 1, "abcdefghij", 11, 0, 0); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghij", 10, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghij", 11, 0, "", 0, 0, 0); + test("abcdefghij", 11, 0, "", 0, 1, 0); + test("abcdefghij", 11, 0, "", 1, 0, 0); + test("abcdefghij", 11, 0, "abcde", 0, 0, 0); + test("abcdefghij", 11, 0, "abcde", 0, 1, 0); + test("abcdefghij", 11, 0, "abcde", 0, 2, 0); + test("abcdefghij", 11, 0, "abcde", 0, 4, 0); + test("abcdefghij", 11, 0, "abcde", 0, 5, 0); + test("abcdefghij", 11, 0, "abcde", 0, 6, 0); + test("abcdefghij", 11, 0, "abcde", 1, 0, 0); + test("abcdefghij", 11, 0, "abcde", 1, 1, 0); + test("abcdefghij", 11, 0, "abcde", 1, 2, 0); + test("abcdefghij", 11, 0, "abcde", 1, 3, 0); + test("abcdefghij", 11, 0, "abcde", 1, 4, 0); + test("abcdefghij", 11, 0, "abcde", 1, 5, 0); + test("abcdefghij", 11, 0, "abcde", 2, 0, 0); + test("abcdefghij", 11, 0, "abcde", 2, 1, 0); + test("abcdefghij", 11, 0, "abcde", 2, 2, 0); + test("abcdefghij", 11, 0, "abcde", 2, 3, 0); + test("abcdefghij", 11, 0, "abcde", 2, 4, 0); + test("abcdefghij", 11, 0, "abcde", 4, 0, 0); + test("abcdefghij", 11, 0, "abcde", 4, 1, 0); + test("abcdefghij", 11, 0, "abcde", 4, 2, 0); + test("abcdefghij", 11, 0, "abcde", 5, 0, 0); + test("abcdefghij", 11, 0, "abcde", 5, 1, 0); + test("abcdefghij", 11, 0, "abcde", 6, 0, 0); + test("abcdefghij", 11, 0, "abcdefghij", 0, 0, 0); + test("abcdefghij", 11, 0, "abcdefghij", 0, 1, 0); + test("abcdefghij", 11, 0, "abcdefghij", 0, 5, 0); + test("abcdefghij", 11, 0, "abcdefghij", 0, 9, 0); + test("abcdefghij", 11, 0, "abcdefghij", 0, 10, 0); + test("abcdefghij", 11, 0, "abcdefghij", 0, 11, 0); + test("abcdefghij", 11, 0, "abcdefghij", 1, 0, 0); + test("abcdefghij", 11, 0, "abcdefghij", 1, 1, 0); + test("abcdefghij", 11, 0, "abcdefghij", 1, 4, 0); + test("abcdefghij", 11, 0, "abcdefghij", 1, 8, 0); + test("abcdefghij", 11, 0, "abcdefghij", 1, 9, 0); + test("abcdefghij", 11, 0, "abcdefghij", 1, 10, 0); + test("abcdefghij", 11, 0, "abcdefghij", 5, 0, 0); + test("abcdefghij", 11, 0, "abcdefghij", 5, 1, 0); + test("abcdefghij", 11, 0, "abcdefghij", 5, 2, 0); + test("abcdefghij", 11, 0, "abcdefghij", 5, 4, 0); + test("abcdefghij", 11, 0, "abcdefghij", 5, 5, 0); + test("abcdefghij", 11, 0, "abcdefghij", 5, 6, 0); + test("abcdefghij", 11, 0, "abcdefghij", 9, 0, 0); + test("abcdefghij", 11, 0, "abcdefghij", 9, 1, 0); + test("abcdefghij", 11, 0, "abcdefghij", 9, 2, 0); + test("abcdefghij", 11, 0, "abcdefghij", 10, 0, 0); + test("abcdefghij", 11, 0, "abcdefghij", 10, 1, 0); + test("abcdefghij", 11, 0, "abcdefghij", 11, 0, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 1, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 10, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 19, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 20, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 0, 21, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 1, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 9, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 18, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 19, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 1, 20, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 1, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 5, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 9, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 10, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 10, 11, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 1, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 19, 2, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghij", 11, 0, "abcdefghijklmnopqrst", 21, 0, 0); } -void test37() -{ - test("abcdefghijklmnopqrst", 0, 0, "", 0, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "", 0, 1, 0); - test("abcdefghijklmnopqrst", 0, 0, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 2, -2); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 4, -4); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 5, -5); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 6, -5); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 2, -2); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 3, -3); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 4, -4); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 5, -4); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 3, -3); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 4, -3); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 2, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 5, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 5, 1, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 5, -5); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 9, -9); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 10, -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 11, -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 4, -4); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 8, -8); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 9, -9); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 10, -9); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 2, -2); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 2, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 10, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 10, 1, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 0, 1, "", 0, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "", 0, 1, 1); - test("abcdefghijklmnopqrst", 0, 1, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 1, 0); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 2, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 4, -3); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 5, -4); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 6, -4); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 2, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 3, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 5, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 1, -2); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 3, -2); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 4, -2); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 1, -4); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 2, -4); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 5, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 5, 1, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcde", 6, 0, 0); +void test37() { + test("abcdefghijklmnopqrst", 0, 0, "", 0, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "", 0, 1, 0); + test("abcdefghijklmnopqrst", 0, 0, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 2, -2); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 4, -4); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 5, -5); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 0, 6, -5); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 2, -2); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 3, -3); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 4, -4); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 1, 5, -4); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 3, -3); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 2, 4, -3); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 4, 2, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 5, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 5, 1, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 5, -5); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 9, -9); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 10, -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 0, 11, -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 4, -4); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 8, -8); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 9, -9); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 1, 10, -9); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 2, -2); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 9, 2, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 10, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 10, 1, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghijklmnopqrst", 0, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 0, 1, "", 0, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "", 0, 1, 1); + test("abcdefghijklmnopqrst", 0, 1, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 1, 0); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 2, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 4, -3); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 5, -4); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 0, 6, -4); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 2, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 3, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 1, 5, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 1, -2); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 3, -2); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 2, 4, -2); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 1, -4); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 4, 2, -4); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 5, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 5, 1, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcde", 6, 0, 0); } -void test38() -{ - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 1, 0); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 5, -4); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 9, -8); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 10, -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 11, -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 8, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 10, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 1, -5); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 2, -5); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 4, -5); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 1, -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 2, -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 10, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 10, 1, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 0, 10, "", 0, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "", 0, 1, 10); - test("abcdefghijklmnopqrst", 0, 10, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 1, 9); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 2, 8); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 4, 6); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 5, 5); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 6, 5); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 2, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 3, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 5, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 1, -2); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 3, -2); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 4, -2); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 1, -4); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 2, -4); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 5, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 5, 1, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 1, 9); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 5, 5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 9, 1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 10, 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 11, 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 8, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 10, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 1, -5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 2, -5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 4, -5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 1, -9); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 2, -9); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 10, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 10, 1, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 1, 9); +void test38() { + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 1, 0); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 5, -4); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 9, -8); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 10, -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 0, 11, -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 8, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 1, 10, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 1, -5); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 2, -5); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 4, -5); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 1, -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 9, 2, -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 10, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 10, 1, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 1, 0); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 10, -9); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 19, -18); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 20, -19); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 0, 21, -19); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghijklmnopqrst", 0, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 0, 10, "", 0, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "", 0, 1, 10); + test("abcdefghijklmnopqrst", 0, 10, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 1, 9); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 2, 8); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 4, 6); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 5, 5); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 0, 6, 5); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 2, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 3, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 1, 5, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 1, -2); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 3, -2); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 2, 4, -2); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 1, -4); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 4, 2, -4); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 5, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 5, 1, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 1, 9); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 5, 5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 9, 1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 10, 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 0, 11, 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 8, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 1, 10, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 1, -5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 2, -5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 4, -5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 1, -9); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 9, 2, -9); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 10, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 10, 1, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 1, 9); } -void test39() -{ - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 10, 0); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 19, -9); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 20, -10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 21, -10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 20, 0, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 20, 1, 10); - test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 0, 19, "", 0, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "", 0, 1, 19); - test("abcdefghijklmnopqrst", 0, 19, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 1, 18); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 2, 17); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 4, 15); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 5, 14); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 6, 14); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 2, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 3, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 5, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 1, -2); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 3, -2); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 4, -2); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 1, -4); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 2, -4); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 5, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 5, 1, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 1, 18); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 5, 14); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 9, 10); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 10, 9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 11, 9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 8, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 10, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 1, -5); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 2, -5); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 4, -5); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 1, -9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 2, -9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 10, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 10, 1, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 1, 18); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 10, 9); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 19, 0); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 20, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 21, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 20, 0, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 20, 1, 19); - test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 0, 20, "", 0, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "", 0, 1, 20); - test("abcdefghijklmnopqrst", 0, 20, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 0, 20); +void test39() { + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 10, 0); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 19, -9); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 20, -10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 0, 21, -10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 20, 0, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 20, 1, 10); + test("abcdefghijklmnopqrst", 0, 10, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 0, 19, "", 0, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "", 0, 1, 19); + test("abcdefghijklmnopqrst", 0, 19, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 1, 18); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 2, 17); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 4, 15); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 5, 14); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 0, 6, 14); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 2, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 3, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 1, 5, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 1, -2); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 3, -2); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 2, 4, -2); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 1, -4); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 4, 2, -4); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 5, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 5, 1, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 1, 18); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 5, 14); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 9, 10); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 10, 9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 0, 11, 9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 8, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 1, 10, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 1, -5); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 2, -5); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 4, -5); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 1, -9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 9, 2, -9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 10, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 10, 1, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 1, 18); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 10, 9); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 19, 0); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 20, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 0, 21, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 20, 0, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 20, 1, 19); + test("abcdefghijklmnopqrst", 0, 19, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 0, 20, "", 0, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "", 0, 1, 20); + test("abcdefghijklmnopqrst", 0, 20, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 0, 20); } -void test40() -{ - test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 1, 19); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 2, 18); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 4, 16); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 5, 15); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 6, 15); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 2, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 3, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 5, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 1, -2); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 3, -2); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 4, -2); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 1, -4); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 2, -4); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 5, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 5, 1, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 1, 19); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 5, 15); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 9, 11); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 10, 10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 11, 10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 8, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 10, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 1, -5); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 2, -5); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 4, -5); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 1, -9); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 2, -9); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10, 1, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 1, 19); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 10, 10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 20, 0); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 21, 0); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 20, 0, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 20, 1, 20); - test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 0, 21, "", 0, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "", 0, 1, 20); - test("abcdefghijklmnopqrst", 0, 21, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 1, 19); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 2, 18); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 4, 16); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 5, 15); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 6, 15); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 2, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 3, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 5, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 1, -2); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 3, -2); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 4, -2); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 1, -4); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 2, -4); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 5, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 5, 1, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 1, 19); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 5, 15); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 9, 11); +void test40() { + test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 1, 19); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 2, 18); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 4, 16); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 5, 15); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 0, 6, 15); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 2, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 3, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 1, 5, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 1, -2); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 3, -2); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 2, 4, -2); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 1, -4); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 4, 2, -4); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 5, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 5, 1, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 1, 19); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 5, 15); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 9, 11); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 10, 10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 0, 11, 10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 8, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 1, 10, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 1, -5); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 2, -5); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 4, -5); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 1, -9); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 9, 2, -9); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 10, 1, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 1, 19); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 10, 10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 20, 0); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 0, 21, 0); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 20, 0, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 20, 1, 20); + test("abcdefghijklmnopqrst", 0, 20, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 0, 21, "", 0, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "", 0, 1, 20); + test("abcdefghijklmnopqrst", 0, 21, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 1, 19); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 2, 18); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 4, 16); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 5, 15); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 0, 6, 15); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 2, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 3, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 1, 5, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 1, -2); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 3, -2); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 2, 4, -2); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 1, -4); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 4, 2, -4); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 5, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 5, 1, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 1, 19); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 5, 15); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 9, 11); } -void test41() -{ - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 10, 10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 11, 10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 4, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 8, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 10, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 1, -5); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 2, -5); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 4, -5); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 1, -9); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 2, -9); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10, 1, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 1, 19); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 10, 10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 20, 0); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 21, 0); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 9, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 18, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 1, -10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 5, -10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 9, -10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 1, -19); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 2, -19); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 20, 0, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 20, 1, 20); - test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "", 0, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "", 0, 1, 0); - test("abcdefghijklmnopqrst", 1, 0, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 2, -2); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 4, -4); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 5, -5); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 6, -5); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 2, -2); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 3, -3); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 4, -4); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 5, -4); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 3, -3); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 4, -3); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 2, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 5, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 5, 1, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 5, -5); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 9, -9); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 10, -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 11, -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 4, -4); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 8, -8); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 9, -9); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 10, -9); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 2, -2); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 2, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 10, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 10, 1, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20); +void test41() { + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 10, 10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 0, 11, 10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 4, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 8, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 1, 10, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 1, -5); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 2, -5); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 4, -5); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 1, -9); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 9, 2, -9); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 10, 1, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 1, 19); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 10, 10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 20, 0); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 0, 21, 0); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 9, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 18, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 1, -10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 5, -10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 9, -10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 1, -19); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 19, 2, -19); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 20, 0, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 20, 1, 20); + test("abcdefghijklmnopqrst", 0, 21, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "", 0, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "", 0, 1, 0); + test("abcdefghijklmnopqrst", 1, 0, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 2, -2); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 4, -4); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 5, -5); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 0, 6, -5); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 2, -2); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 3, -3); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 4, -4); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 1, 5, -4); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 3, -3); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 2, 4, -3); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 4, 2, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 5, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 5, 1, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 5, -5); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 9, -9); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 10, -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 0, 11, -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 4, -4); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 8, -8); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 9, -9); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 1, 10, -9); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 2, -2); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 9, 2, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 10, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 10, 1, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 0, 21, -20); } -void test42() -{ - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 1, 1, "", 0, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 2, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 4, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 6, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 1, 0); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 2, -1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 3, -2); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 4, -3); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 5, -3); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 2, -1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 3, -1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 4, -1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 1, -3); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 2, -3); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 5, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 5, 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 9, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 11, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 1, 0); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 4, -3); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 8, -7); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 9, -8); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 10, -8); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 1, -4); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 2, -4); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 5, -4); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 6, -4); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 1, -8); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 2, -8); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 10, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 10, 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 1, 9, "", 0, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "", 0, 1, 9); - test("abcdefghijklmnopqrst", 1, 9, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 2, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 4, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 5, 1); +void test42() { + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghijklmnopqrst", 1, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 1, 1, "", 0, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 2, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 4, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 0, 6, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 1, 0); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 2, -1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 3, -2); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 4, -3); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 1, 5, -3); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 2, -1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 3, -1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 2, 4, -1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 1, -3); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 4, 2, -3); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 5, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 5, 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 9, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 0, 11, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 1, 0); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 4, -3); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 8, -7); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 9, -8); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 1, 10, -8); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 1, -4); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 2, -4); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 5, -4); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 5, 6, -4); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 1, -8); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 9, 2, -8); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 10, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 10, 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 1, 0); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 9, -8); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 18, -17); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 19, -18); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 1, 20, -18); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghijklmnopqrst", 1, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 1, 9, "", 0, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "", 0, 1, 9); + test("abcdefghijklmnopqrst", 1, 9, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 2, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 4, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 5, 1); } -void test43() -{ - test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 6, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 1, 8); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 2, 7); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 3, 6); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 4, 5); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 5, 5); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 2, -1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 3, -1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 4, -1); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 1, -3); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 2, -3); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 5, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 5, 1, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 9, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 11, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 1, 8); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 4, 5); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 8, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 9, 0); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 10, 0); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 1, -4); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 2, -4); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 5, -4); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 6, -4); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 1, -8); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 2, -8); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 10, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 10, 1, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 1, 8); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 9, 0); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 18, -9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 19, -10); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 20, -10); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 20, 0, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 20, 1, 9); - test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 1, 18, "", 0, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "", 0, 1, 18); - test("abcdefghijklmnopqrst", 1, 18, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 2, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 4, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 6, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 1, 17); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 2, 16); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 3, 15); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 4, 14); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 5, 14); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 2, -1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 3, -1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 4, -1); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 1, -3); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 2, -3); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 5, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 5, 1, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 9, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 11, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 1, 17); +void test43() { + test("abcdefghijklmnopqrst", 1, 9, "abcde", 0, 6, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 1, 8); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 2, 7); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 3, 6); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 4, 5); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 1, 5, 5); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 2, -1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 3, -1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 2, 4, -1); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 1, -3); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 4, 2, -3); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 5, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 5, 1, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 9, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 0, 11, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 1, 8); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 4, 5); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 8, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 9, 0); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 1, 10, 0); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 1, -4); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 2, -4); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 5, -4); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 5, 6, -4); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 1, -8); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 9, 2, -8); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 10, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 10, 1, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 1, 8); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 9, 0); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 18, -9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 19, -10); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 1, 20, -10); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 20, 0, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 20, 1, 9); + test("abcdefghijklmnopqrst", 1, 9, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 1, 18, "", 0, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "", 0, 1, 18); + test("abcdefghijklmnopqrst", 1, 18, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 2, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 4, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 0, 6, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 1, 17); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 2, 16); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 3, 15); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 4, 14); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 1, 5, 14); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 2, -1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 3, -1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 2, 4, -1); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 1, -3); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 4, 2, -3); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 5, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 5, 1, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 9, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 0, 11, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 1, 17); } -void test44() -{ - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 4, 14); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 8, 10); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 9, 9); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 10, 9); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 1, -4); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 2, -4); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 5, -4); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 6, -4); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 1, -8); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 2, -8); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 10, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 10, 1, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 1, 17); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 9, 9); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 18, 0); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 19, -1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 20, -1); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 20, 0, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 20, 1, 18); - test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 1, 19, "", 0, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "", 0, 1, 19); - test("abcdefghijklmnopqrst", 1, 19, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 2, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 4, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 6, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 1, 18); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 2, 17); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 3, 16); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 4, 15); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 5, 15); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 2, -1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 3, -1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 4, -1); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 1, -3); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 2, -3); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 5, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 5, 1, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 9, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 11, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 1, 18); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 4, 15); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 8, 11); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 9, 10); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 10, 10); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 1, -4); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 2, -4); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 5, -4); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 6, -4); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 1, -8); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 2, -8); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 10, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 10, 1, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 1, 18); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 9, 10); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 18, 1); +void test44() { + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 4, 14); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 8, 10); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 9, 9); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 1, 10, 9); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 1, -4); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 2, -4); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 5, -4); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 5, 6, -4); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 1, -8); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 9, 2, -8); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 10, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 10, 1, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 1, 17); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 9, 9); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 18, 0); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 19, -1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 1, 20, -1); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 20, 0, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 20, 1, 18); + test("abcdefghijklmnopqrst", 1, 18, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 1, 19, "", 0, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "", 0, 1, 19); + test("abcdefghijklmnopqrst", 1, 19, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 2, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 4, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 0, 6, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 1, 18); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 2, 17); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 3, 16); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 4, 15); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 1, 5, 15); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 2, -1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 3, -1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 2, 4, -1); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 1, -3); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 4, 2, -3); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 5, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 5, 1, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 9, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 0, 11, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 1, 18); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 4, 15); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 8, 11); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 9, 10); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 1, 10, 10); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 1, -4); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 2, -4); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 5, -4); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 5, 6, -4); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 1, -8); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 9, 2, -8); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 10, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 10, 1, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 1, 18); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 9, 10); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 18, 1); } -void test45() -{ - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 19, 0); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 20, 0); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 20, 0, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 20, 1, 19); - test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 1, 20, "", 0, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "", 0, 1, 19); - test("abcdefghijklmnopqrst", 1, 20, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 2, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 4, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 6, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 1, 18); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 2, 17); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 3, 16); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 4, 15); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 5, 15); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 2, -1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 3, -1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 4, -1); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 1, -3); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 2, -3); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 5, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 5, 1, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 5, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 9, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 11, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 1, 18); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 4, 15); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 8, 11); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 9, 10); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 10, 10); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 1, -4); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 2, -4); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 5, -4); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 6, -4); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 1, -8); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 2, -8); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 10, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 10, 1, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 1, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 10, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 19, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 20, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 21, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 1, 18); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 9, 10); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 18, 1); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 19, 0); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 20, 0); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 1, -9); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 5, -9); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 1, -18); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 2, -18); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 20, 0, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 20, 1, 19); - test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "", 0, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "", 0, 1, 0); - test("abcdefghijklmnopqrst", 10, 0, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 2, -2); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 4, -4); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 5, -5); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 6, -5); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 2, -2); +void test45() { + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 19, 0); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 1, 20, 0); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 20, 0, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 20, 1, 19); + test("abcdefghijklmnopqrst", 1, 19, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 1, 20, "", 0, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "", 0, 1, 19); + test("abcdefghijklmnopqrst", 1, 20, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 2, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 4, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 0, 6, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 1, 18); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 2, 17); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 3, 16); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 4, 15); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 1, 5, 15); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 2, -1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 3, -1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 2, 4, -1); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 1, -3); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 4, 2, -3); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 5, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 5, 1, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 5, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 9, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 0, 11, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 1, 18); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 4, 15); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 8, 11); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 9, 10); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 1, 10, 10); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 1, -4); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 2, -4); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 5, -4); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 5, 6, -4); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 1, -8); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 9, 2, -8); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 10, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 10, 1, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 1, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 10, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 19, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 20, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 0, 21, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 1, 18); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 9, 10); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 18, 1); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 19, 0); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 1, 20, 0); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 1, -9); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 5, -9); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 1, -18); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 19, 2, -18); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 20, 0, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 20, 1, 19); + test("abcdefghijklmnopqrst", 1, 20, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "", 0, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "", 0, 1, 0); + test("abcdefghijklmnopqrst", 10, 0, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 2, -2); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 4, -4); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 5, -5); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 0, 6, -5); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 2, -2); } -void test46() -{ - test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 3, -3); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 4, -4); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 5, -4); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 3, -3); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 4, -3); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 2, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 5, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 5, 1, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 5, -5); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 9, -9); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 10, -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 11, -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 4, -4); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 8, -8); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 9, -9); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 10, -9); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 2, -2); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 2, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, 1, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 10, 1, "", 0, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "", 0, 1, 1); - test("abcdefghijklmnopqrst", 10, 1, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 2, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 4, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 6, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 2, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 3, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 5, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 1, 8); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 2, 8); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 3, 8); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 4, 8); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 1, 6); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 2, 6); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 5, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 5, 1, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 9, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 11, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 8, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 10, 9); +void test46() { + test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 3, -3); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 4, -4); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 1, 5, -4); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 3, -3); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 2, 4, -3); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 4, 2, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 5, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 5, 1, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 5, -5); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 9, -9); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 10, -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 0, 11, -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 4, -4); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 8, -8); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 9, -9); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 1, 10, -9); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 2, -2); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 9, 2, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 10, 1, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghijklmnopqrst", 10, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 10, 1, "", 0, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "", 0, 1, 1); + test("abcdefghijklmnopqrst", 10, 1, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 2, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 4, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 0, 6, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 2, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 3, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 1, 5, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 1, 8); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 2, 8); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 3, 8); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 2, 4, 8); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 1, 6); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 4, 2, 6); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 5, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 5, 1, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 9, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 0, 11, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 8, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 1, 10, 9); } -void test47() -{ - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 1, 5); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 2, 5); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 4, 5); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 5, 5); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 6, 5); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 1, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 2, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10, 1, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 19, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 20, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 21, 10); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 18, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 19, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 20, 9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 1, 0); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 5, -4); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 9, -8); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 10, -9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 11, -9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 1, -9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 2, -9); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 10, 5, "", 0, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "", 0, 1, 5); - test("abcdefghijklmnopqrst", 10, 5, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 2, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 4, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 6, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 2, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 3, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 5, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 1, 8); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 2, 8); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 3, 8); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 4, 8); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 1, 6); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 2, 6); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 5, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 5, 1, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 9, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 11, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 8, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 10, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 1, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 2, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 4, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 5, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 6, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 1, 1); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 2, 1); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10, 1, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 19, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 20, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 21, 10); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 18, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 19, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 20, 9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 1, 4); +void test47() { + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 1, 5); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 2, 5); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 4, 5); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 5, 5); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 5, 6, 5); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 1, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 9, 2, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 10, 1, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 19, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 20, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 0, 21, 10); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 18, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 19, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 1, 20, 9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 1, 0); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 5, -4); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 9, -8); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 10, -9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 10, 11, -9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 1, -9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 19, 2, -9); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghijklmnopqrst", 10, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 10, 5, "", 0, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "", 0, 1, 5); + test("abcdefghijklmnopqrst", 10, 5, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 2, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 4, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 0, 6, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 2, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 3, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 1, 5, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 1, 8); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 2, 8); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 3, 8); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 2, 4, 8); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 1, 6); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 4, 2, 6); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 5, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 5, 1, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 9, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 0, 11, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 8, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 1, 10, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 1, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 2, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 4, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 5, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 5, 6, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 1, 1); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 9, 2, 1); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 10, 1, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 19, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 20, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 0, 21, 10); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 18, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 19, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 1, 20, 9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 1, 4); } -void test48() -{ - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 5, 0); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 9, -4); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 10, -5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 11, -5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 1, -9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 2, -9); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 20, 0, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 20, 1, 5); - test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 10, 9, "", 0, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "", 0, 1, 9); - test("abcdefghijklmnopqrst", 10, 9, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 2, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 4, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 6, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 2, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 3, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 5, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 1, 8); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 2, 8); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 3, 8); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 4, 8); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 1, 6); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 2, 6); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 5, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 5, 1, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 9, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 11, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 8, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 10, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 1, 5); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 2, 5); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 4, 5); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 5, 5); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 6, 5); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 1, 1); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 2, 1); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10, 1, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 19, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 20, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 21, 10); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 18, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 19, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 20, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 1, 8); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 5, 4); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 9, 0); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 10, -1); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 11, -1); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 1, -9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 2, -9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 20, 0, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 20, 1, 9); - test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 10, 10, "", 0, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 2, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 4, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 6, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 2, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 3, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 5, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 0, 10); +void test48() { + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 5, 0); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 9, -4); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 10, -5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 10, 11, -5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 1, -9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 19, 2, -9); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 20, 0, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 20, 1, 5); + test("abcdefghijklmnopqrst", 10, 5, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 10, 9, "", 0, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "", 0, 1, 9); + test("abcdefghijklmnopqrst", 10, 9, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 2, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 4, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 0, 6, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 2, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 3, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 1, 5, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 1, 8); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 2, 8); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 3, 8); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 2, 4, 8); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 1, 6); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 4, 2, 6); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 5, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 5, 1, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 9, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 0, 11, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 8, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 1, 10, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 1, 5); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 2, 5); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 4, 5); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 5, 5); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 5, 6, 5); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 1, 1); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 9, 2, 1); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 10, 1, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 19, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 20, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 0, 21, 10); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 18, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 19, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 1, 20, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 1, 8); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 5, 4); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 9, 0); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 10, -1); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 10, 11, -1); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 1, -9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 19, 2, -9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 20, 0, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 20, 1, 9); + test("abcdefghijklmnopqrst", 10, 9, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 10, 10, "", 0, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 2, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 4, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 0, 6, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 2, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 3, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 1, 5, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 0, 10); } -void test49() -{ - test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 1, 8); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 2, 8); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 3, 8); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 4, 8); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 1, 6); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 2, 6); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 5, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 5, 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 9, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 11, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 8, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 10, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 1, 5); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 2, 5); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 4, 5); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 5, 5); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 6, 5); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 1, 1); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 2, 1); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10, 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 19, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 20, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 21, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 18, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 19, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 20, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 1, 9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 5, 5); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 9, 1); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 10, 0); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 11, 0); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 1, -9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 2, -9); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 20, 0, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 20, 1, 10); - test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 10, 11, "", 0, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 2, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 4, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 6, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 2, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 3, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 5, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 1, 8); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 2, 8); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 3, 8); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 4, 8); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 1, 6); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 2, 6); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 5, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 5, 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 5, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 9, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 11, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 4, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 8, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 10, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 1, 5); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 2, 5); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 4, 5); +void test49() { + test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 1, 8); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 2, 8); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 3, 8); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 2, 4, 8); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 1, 6); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 4, 2, 6); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 5, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 5, 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 9, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 0, 11, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 8, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 1, 10, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 1, 5); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 2, 5); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 4, 5); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 5, 5); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 5, 6, 5); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 1, 1); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 9, 2, 1); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 10, 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 19, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 20, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 0, 21, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 18, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 19, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 1, 20, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 1, 9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 5, 5); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 9, 1); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 10, 0); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 10, 11, 0); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 1, -9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 19, 2, -9); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 20, 0, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 20, 1, 10); + test("abcdefghijklmnopqrst", 10, 10, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 10, 11, "", 0, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 2, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 4, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 0, 6, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 2, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 3, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 1, 5, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 1, 8); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 2, 8); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 3, 8); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 2, 4, 8); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 1, 6); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 4, 2, 6); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 5, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 5, 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 5, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 9, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 0, 11, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 4, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 8, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 1, 10, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 1, 5); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 2, 5); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 4, 5); } -void test50() -{ - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 5, 5); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 6, 5); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 1, 1); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 2, 1); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10, 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 10, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 19, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 20, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 21, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 1, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 9, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 18, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 19, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 20, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 1, 9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 5, 5); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 9, 1); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 10, 0); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 11, 0); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 1, -9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 2, -9); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 20, 0, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 20, 1, 10); - test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "", 0, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "", 0, 1, 0); - test("abcdefghijklmnopqrst", 19, 0, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 2, -2); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 4, -4); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 5, -5); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 6, -5); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 2, -2); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 3, -3); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 4, -4); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 5, -4); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 3, -3); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 4, -3); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 2, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 5, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 5, 1, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 5, -5); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 9, -9); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 10, -10); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 11, -10); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 4, -4); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 8, -8); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 9, -9); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 10, -9); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 2, -2); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 2, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 10, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 10, 1, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 11, -10); +void test50() { + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 5, 5); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 5, 6, 5); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 1, 1); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 9, 2, 1); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 10, 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 10, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 19, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 20, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 0, 21, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 1, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 9, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 18, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 19, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 1, 20, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 1, 9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 5, 5); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 9, 1); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 10, 0); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 10, 11, 0); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 1, -9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 19, 2, -9); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 20, 0, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 20, 1, 10); + test("abcdefghijklmnopqrst", 10, 11, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "", 0, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "", 0, 1, 0); + test("abcdefghijklmnopqrst", 19, 0, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 2, -2); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 4, -4); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 5, -5); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 0, 6, -5); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 2, -2); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 3, -3); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 4, -4); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 1, 5, -4); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 3, -3); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 2, 4, -3); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 4, 2, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 5, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 5, 1, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 5, -5); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 9, -9); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 10, -10); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 0, 11, -10); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 4, -4); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 8, -8); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 9, -9); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 1, 10, -9); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 2, -2); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 9, 2, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 10, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 10, 1, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 10, 11, -10); } -void test51() -{ - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 19, 1, "", 0, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "", 0, 1, 1); - test("abcdefghijklmnopqrst", 19, 1, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 1, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 2, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 4, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 5, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 6, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 1, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 2, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 3, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 4, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 5, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 1, 17); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 2, 17); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 3, 17); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 4, 17); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 1, 15); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 2, 15); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 5, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 5, 1, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 1, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 5, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 9, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 10, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 11, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 1, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 4, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 8, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 9, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 10, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 1, 14); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 2, 14); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 4, 14); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 5, 14); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 6, 14); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 1, 10); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 2, 10); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 10, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 10, 1, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 1, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 10, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 19, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 20, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 21, 19); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 1, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 9, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 18, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 19, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 20, 18); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 1, 9); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 5, 9); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 9, 9); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 10, 9); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 11, 9); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 1, 0); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 2, 0); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 19, 2, "", 0, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "", 0, 1, 1); - test("abcdefghijklmnopqrst", 19, 2, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 1, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 2, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 4, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 5, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 6, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 1, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 2, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 3, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 4, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 5, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 1, 17); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 2, 17); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 3, 17); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 4, 17); +void test51() { + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghijklmnopqrst", 19, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 19, 1, "", 0, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "", 0, 1, 1); + test("abcdefghijklmnopqrst", 19, 1, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 1, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 2, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 4, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 5, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 0, 6, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 1, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 2, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 3, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 4, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 1, 5, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 1, 17); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 2, 17); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 3, 17); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 2, 4, 17); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 1, 15); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 4, 2, 15); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 5, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 5, 1, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 1, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 5, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 9, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 10, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 0, 11, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 1, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 4, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 8, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 9, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 1, 10, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 1, 14); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 2, 14); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 4, 14); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 5, 14); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 5, 6, 14); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 1, 10); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 9, 2, 10); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 10, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 10, 1, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 1, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 10, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 19, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 20, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 0, 21, 19); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 1, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 9, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 18, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 19, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 1, 20, 18); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 1, 9); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 5, 9); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 9, 9); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 10, 9); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 10, 11, 9); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 1, 0); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 19, 2, 0); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghijklmnopqrst", 19, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 19, 2, "", 0, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "", 0, 1, 1); + test("abcdefghijklmnopqrst", 19, 2, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 1, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 2, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 4, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 5, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 0, 6, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 1, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 2, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 3, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 4, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 1, 5, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 1, 17); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 2, 17); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 3, 17); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 2, 4, 17); } -void test52() -{ - test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 1, 15); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 2, 15); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 5, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 5, 1, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 1, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 5, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 9, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 10, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 11, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 1, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 4, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 8, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 9, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 10, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 1, 14); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 2, 14); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 4, 14); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 5, 14); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 6, 14); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 1, 10); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 2, 10); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 10, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 10, 1, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 1, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 10, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 19, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 20, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 21, 19); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 1, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 9, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 18, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 19, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 20, 18); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 1, 9); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 5, 9); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 9, 9); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 10, 9); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 11, 9); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 1, 0); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 2, 0); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 20, 0, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 20, 1, 1); - test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "", 0, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "", 0, 1, 0); - test("abcdefghijklmnopqrst", 20, 0, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 2, -2); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 4, -4); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 5, -5); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 6, -5); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 2, -2); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 3, -3); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 4, -4); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 5, -4); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 3, -3); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 4, -3); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 2, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 5, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 5, 1, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 5, -5); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 9, -9); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 10, -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 11, -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 4, -4); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 8, -8); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 9, -9); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 10, -9); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 2, -2); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 1, -1); +void test52() { + test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 1, 15); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 4, 2, 15); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 5, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 5, 1, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 1, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 5, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 9, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 10, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 0, 11, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 1, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 4, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 8, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 9, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 1, 10, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 1, 14); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 2, 14); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 4, 14); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 5, 14); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 5, 6, 14); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 1, 10); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 9, 2, 10); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 10, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 10, 1, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 1, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 10, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 19, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 20, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 0, 21, 19); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 1, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 9, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 18, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 19, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 1, 20, 18); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 1, 9); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 5, 9); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 9, 9); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 10, 9); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 10, 11, 9); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 1, 0); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 19, 2, 0); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 20, 0, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 20, 1, 1); + test("abcdefghijklmnopqrst", 19, 2, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "", 0, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "", 0, 1, 0); + test("abcdefghijklmnopqrst", 20, 0, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 2, -2); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 4, -4); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 5, -5); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 0, 6, -5); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 2, -2); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 3, -3); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 4, -4); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 1, 5, -4); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 3, -3); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 2, 4, -3); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 4, 2, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 5, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 5, 1, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 5, -5); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 9, -9); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 10, -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 0, 11, -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 4, -4); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 8, -8); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 9, -9); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 1, 10, -9); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 2, -2); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 1, -1); } -void test53() -{ - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 2, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 10, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 10, 1, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "", 0, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "", 0, 1, 0); - test("abcdefghijklmnopqrst", 20, 1, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 2, -2); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 4, -4); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 5, -5); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 6, -5); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 2, -2); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 3, -3); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 4, -4); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 5, -4); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 2, -2); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 3, -3); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 4, -3); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 2, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 5, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 5, 1, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 5, -5); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 9, -9); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 10, -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 11, -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 4, -4); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 8, -8); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 9, -9); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 10, -9); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 2, -2); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 4, -4); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 5, -5); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 6, -5); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 2, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 10, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 10, 1, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 10, -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 19, -19); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 20, -20); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 21, -20); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 9, -9); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 18, -18); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 19, -19); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 20, -19); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 5, -5); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 9, -9); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 10, -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 11, -10); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 1, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 2, -1); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 20, 0, 0); +void test53() { + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 9, 2, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 10, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 10, 1, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghijklmnopqrst", 20, 0, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "", 0, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "", 0, 1, 0); + test("abcdefghijklmnopqrst", 20, 1, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 2, -2); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 4, -4); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 5, -5); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 0, 6, -5); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 2, -2); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 3, -3); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 4, -4); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 1, 5, -4); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 2, -2); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 3, -3); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 2, 4, -3); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 4, 2, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 5, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 5, 1, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 5, -5); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 9, -9); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 10, -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 0, 11, -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 4, -4); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 8, -8); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 9, -9); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 1, 10, -9); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 2, -2); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 4, -4); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 5, -5); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 5, 6, -5); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 9, 2, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 10, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 10, 1, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 10, -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 19, -19); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 20, -20); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 0, 21, -20); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 9, -9); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 18, -18); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 19, -19); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 1, 20, -19); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 5, -5); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 9, -9); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 10, -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 10, 11, -10); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 1, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 19, 2, -1); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 20, 0, 0); } -void test54() -{ - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 21, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "", 0, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "", 0, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "", 1, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 2, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 4, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 5, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 6, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 2, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 3, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 4, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 5, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 2, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 3, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 4, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 2, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 5, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 5, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcde", 6, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 5, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 9, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 10, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 11, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 4, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 8, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 9, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 10, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 2, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 4, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 5, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 6, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 2, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 10, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 10, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 11, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 10, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 19, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 20, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 21, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 9, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 18, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 19, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 20, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 5, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 9, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 10, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 11, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 2, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 20, 0, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 20, 1, 0); - test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 21, 0, 0); +void test54() { + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghijklmnopqrst", 20, 1, "abcdefghijklmnopqrst", 21, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "", 0, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "", 0, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "", 1, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 2, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 4, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 5, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 0, 6, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 2, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 3, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 4, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 1, 5, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 2, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 3, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 2, 4, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 4, 2, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 5, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 5, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcde", 6, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 5, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 9, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 10, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 0, 11, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 4, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 8, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 9, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 1, 10, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 2, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 4, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 5, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 5, 6, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 9, 2, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 10, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 10, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghij", 11, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 10, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 19, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 20, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 0, 21, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 9, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 18, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 19, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 1, 20, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 5, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 9, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 10, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 10, 11, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 19, 2, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 20, 0, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 20, 1, 0); + test("abcdefghijklmnopqrst", 21, 0, "abcdefghijklmnopqrst", 21, 0, 0); } - int main(int, char**) { - test0(); - test1(); - test2(); - test3(); - test4(); - test5(); - test6(); - test7(); - test8(); - test9(); - test10(); - test11(); - test12(); - test13(); - test14(); - test15(); - test16(); - test17(); - test18(); - test19(); - test20(); - test21(); - test22(); - test23(); - test24(); - test25(); - test26(); - test27(); - test28(); - test29(); - test30(); - test31(); - test32(); - test33(); - test34(); - test35(); - test36(); - test37(); - test38(); - test39(); - test40(); - test41(); - test42(); - test43(); - test44(); - test45(); - test46(); - test47(); - test48(); - test49(); - test50(); - test51(); - test52(); - test53(); - test54(); - + test0(); + test1(); + test2(); + test3(); + test4(); + test5(); + test6(); + test7(); + test8(); + test9(); + test10(); + test11(); + test12(); + test13(); + test14(); + test15(); + test16(); + test17(); + test18(); + test19(); + test20(); + test21(); + test22(); + test23(); + test24(); + test25(); + test26(); + test27(); + test28(); + test29(); + test30(); + test31(); + test32(); + test33(); + test34(); + test35(); + test36(); + test37(); + test38(); + test39(); + test40(); + test41(); + test42(); + test43(); + test44(); + test45(); + test46(); + test47(); + test48(); + test49(); + test50(); + test51(); + test52(); + test53(); + test54(); - { + { test("abcde", 5, 1, "", 0, 0, 0); test("abcde", 2, 4, "", 0, 0, 3); test("abcde", 2, 4, "abcde", 3, 4, -2); test("ABCde", 2, 4, "abcde", 2, 4, -1); - } + } #ifndef TEST_HAS_NO_WIDE_CHARACTERS - { + { test(L"abcde", 5, 1, L"", 0, 0, 0); test(L"abcde", 2, 4, L"", 0, 0, 3); test(L"abcde", 2, 4, L"abcde", 3, 4, -2); test(L"ABCde", 2, 4, L"abcde", 2, 4, -1); - } + } #endif #if TEST_STD_VER >= 11 - { + { test(u"abcde", 5, 1, u"", 0, 0, 0); test(u"abcde", 2, 4, u"", 0, 0, 3); test(u"abcde", 2, 4, u"abcde", 3, 4, -2); test(u"ABCde", 2, 4, u"abcde", 2, 4, -1); - } + } - { + { test(U"abcde", 5, 1, U"", 0, 0, 0); test(U"abcde", 2, 4, U"", 0, 0, 3); test(U"abcde", 2, 4, U"abcde", 3, 4, -2); test(U"ABCde", 2, 4, U"abcde", 2, 4, -1); - } + } #endif #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1 { "abcde", 5 }; - static_assert ( sv1.compare(5, 1, "", 0, 0) == 0, "" ); - static_assert ( sv1.compare(2, 4, "", 0, 0) > 0, "" ); - static_assert ( sv1.compare(2, 4, "abcde", 3, 4) < 0, "" ); - } + constexpr SV sv1{"abcde", 5}; + static_assert(sv1.compare(5, 1, "", 0, 0) == 0, ""); + static_assert(sv1.compare(2, 4, "", 0, 0) > 0, ""); + static_assert(sv1.compare(2, 4, "abcde", 3, 4) < 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.sv.pass.cpp @@ -18,109 +18,106 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int sign ( int x ) { return x > 0 ? 1 : ( x < 0 ? -1 : 0 ); } +int sign(int x) { return x > 0 ? 1 : (x < 0 ? -1 : 0); } -template -void test1 ( std::basic_string_view sv1, - std::basic_string_view sv2, int expected ) { - assert ( sign( sv1.compare(sv2)) == sign(expected)); +template +void test1(std::basic_string_view sv1, std::basic_string_view sv2, int expected) { + assert(sign(sv1.compare(sv2)) == sign(expected)); } +template +void test(const CharT* s1, const CharT* s2, int expected) { + typedef std::basic_string_view string_view_t; -template -void test ( const CharT *s1, const CharT *s2, int expected ) { - typedef std::basic_string_view string_view_t; - - string_view_t sv1 ( s1 ); - string_view_t sv2 ( s2 ); - test1(sv1, sv2, expected); + string_view_t sv1(s1); + string_view_t sv2(s2); + test1(sv1, sv2, expected); } int main(int, char**) { - - test("", "", 0); - test("", "abcde", -5); - test("", "abcdefghij", -10); - test("", "abcdefghijklmnopqrst", -20); - test("abcde", "", 5); - test("abcde", "abcde", 0); - test("abcde", "abcdefghij", -5); - test("abcde", "abcdefghijklmnopqrst", -15); - test("abcdefghij", "", 10); - test("abcdefghij", "abcde", 5); - test("abcdefghij", "abcdefghij", 0); - test("abcdefghij", "abcdefghijklmnopqrst", -10); - test("abcdefghijklmnopqrst", "", 20); - test("abcdefghijklmnopqrst", "abcde", 15); - test("abcdefghijklmnopqrst", "abcdefghij", 10); - test("abcdefghijklmnopqrst", "abcdefghijklmnopqrst", 0); + test("", "", 0); + test("", "abcde", -5); + test("", "abcdefghij", -10); + test("", "abcdefghijklmnopqrst", -20); + test("abcde", "", 5); + test("abcde", "abcde", 0); + test("abcde", "abcdefghij", -5); + test("abcde", "abcdefghijklmnopqrst", -15); + test("abcdefghij", "", 10); + test("abcdefghij", "abcde", 5); + test("abcdefghij", "abcdefghij", 0); + test("abcdefghij", "abcdefghijklmnopqrst", -10); + test("abcdefghijklmnopqrst", "", 20); + test("abcdefghijklmnopqrst", "abcde", 15); + test("abcdefghijklmnopqrst", "abcdefghij", 10); + test("abcdefghijklmnopqrst", "abcdefghijklmnopqrst", 0); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test(L"", L"", 0); - test(L"", L"abcde", -5); - test(L"", L"abcdefghij", -10); - test(L"", L"abcdefghijklmnopqrst", -20); - test(L"abcde", L"", 5); - test(L"abcde", L"abcde", 0); - test(L"abcde", L"abcdefghij", -5); - test(L"abcde", L"abcdefghijklmnopqrst", -15); - test(L"abcdefghij", L"", 10); - test(L"abcdefghij", L"abcde", 5); - test(L"abcdefghij", L"abcdefghij", 0); - test(L"abcdefghij", L"abcdefghijklmnopqrst", -10); - test(L"abcdefghijklmnopqrst", L"", 20); - test(L"abcdefghijklmnopqrst", L"abcde", 15); - test(L"abcdefghijklmnopqrst", L"abcdefghij", 10); - test(L"abcdefghijklmnopqrst", L"abcdefghijklmnopqrst", 0); + test(L"", L"", 0); + test(L"", L"abcde", -5); + test(L"", L"abcdefghij", -10); + test(L"", L"abcdefghijklmnopqrst", -20); + test(L"abcde", L"", 5); + test(L"abcde", L"abcde", 0); + test(L"abcde", L"abcdefghij", -5); + test(L"abcde", L"abcdefghijklmnopqrst", -15); + test(L"abcdefghij", L"", 10); + test(L"abcdefghij", L"abcde", 5); + test(L"abcdefghij", L"abcdefghij", 0); + test(L"abcdefghij", L"abcdefghijklmnopqrst", -10); + test(L"abcdefghijklmnopqrst", L"", 20); + test(L"abcdefghijklmnopqrst", L"abcde", 15); + test(L"abcdefghijklmnopqrst", L"abcdefghij", 10); + test(L"abcdefghijklmnopqrst", L"abcdefghijklmnopqrst", 0); #endif #if TEST_STD_VER >= 11 - test(u"", u"", 0); - test(u"", u"abcde", -5); - test(u"", u"abcdefghij", -10); - test(u"", u"abcdefghijklmnopqrst", -20); - test(u"abcde", u"", 5); - test(u"abcde", u"abcde", 0); - test(u"abcde", u"abcdefghij", -5); - test(u"abcde", u"abcdefghijklmnopqrst", -15); - test(u"abcdefghij", u"", 10); - test(u"abcdefghij", u"abcde", 5); - test(u"abcdefghij", u"abcdefghij", 0); - test(u"abcdefghij", u"abcdefghijklmnopqrst", -10); - test(u"abcdefghijklmnopqrst", u"", 20); - test(u"abcdefghijklmnopqrst", u"abcde", 15); - test(u"abcdefghijklmnopqrst", u"abcdefghij", 10); - test(u"abcdefghijklmnopqrst", u"abcdefghijklmnopqrst", 0); - - test(U"", U"", 0); - test(U"", U"abcde", -5); - test(U"", U"abcdefghij", -10); - test(U"", U"abcdefghijklmnopqrst", -20); - test(U"abcde", U"", 5); - test(U"abcde", U"abcde", 0); - test(U"abcde", U"abcdefghij", -5); - test(U"abcde", U"abcdefghijklmnopqrst", -15); - test(U"abcdefghij", U"", 10); - test(U"abcdefghij", U"abcde", 5); - test(U"abcdefghij", U"abcdefghij", 0); - test(U"abcdefghij", U"abcdefghijklmnopqrst", -10); - test(U"abcdefghijklmnopqrst", U"", 20); - test(U"abcdefghijklmnopqrst", U"abcde", 15); - test(U"abcdefghijklmnopqrst", U"abcdefghij", 10); - test(U"abcdefghijklmnopqrst", U"abcdefghijklmnopqrst", 0); + test(u"", u"", 0); + test(u"", u"abcde", -5); + test(u"", u"abcdefghij", -10); + test(u"", u"abcdefghijklmnopqrst", -20); + test(u"abcde", u"", 5); + test(u"abcde", u"abcde", 0); + test(u"abcde", u"abcdefghij", -5); + test(u"abcde", u"abcdefghijklmnopqrst", -15); + test(u"abcdefghij", u"", 10); + test(u"abcdefghij", u"abcde", 5); + test(u"abcdefghij", u"abcdefghij", 0); + test(u"abcdefghij", u"abcdefghijklmnopqrst", -10); + test(u"abcdefghijklmnopqrst", u"", 20); + test(u"abcdefghijklmnopqrst", u"abcde", 15); + test(u"abcdefghijklmnopqrst", u"abcdefghij", 10); + test(u"abcdefghijklmnopqrst", u"abcdefghijklmnopqrst", 0); + + test(U"", U"", 0); + test(U"", U"abcde", -5); + test(U"", U"abcdefghij", -10); + test(U"", U"abcdefghijklmnopqrst", -20); + test(U"abcde", U"", 5); + test(U"abcde", U"abcde", 0); + test(U"abcde", U"abcdefghij", -5); + test(U"abcde", U"abcdefghijklmnopqrst", -15); + test(U"abcdefghij", U"", 10); + test(U"abcdefghij", U"abcde", 5); + test(U"abcdefghij", U"abcdefghij", 0); + test(U"abcdefghij", U"abcdefghijklmnopqrst", -10); + test(U"abcdefghijklmnopqrst", U"", 20); + test(U"abcdefghijklmnopqrst", U"abcde", 15); + test(U"abcdefghijklmnopqrst", U"abcdefghij", 10); + test(U"abcdefghijklmnopqrst", U"abcdefghijklmnopqrst", 0); #endif #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1 { "abcde", 5 }; - constexpr SV sv2 { "abcde", 5 }; - constexpr SV sv3 { "edcba0", 6 }; - static_assert ( sv1.compare(sv2) == 0, "" ); - static_assert ( sv2.compare(sv1) == 0, "" ); - static_assert ( sv3.compare(sv2) > 0, "" ); - static_assert ( sv2.compare(sv3) < 0, "" ); - } + constexpr SV sv1{"abcde", 5}; + constexpr SV sv2{"abcde", 5}; + constexpr SV sv3{"edcba0", 6}; + static_assert(sv1.compare(sv2) == 0, ""); + static_assert(sv2.compare(sv1) == 0, ""); + static_assert(sv3.compare(sv2) > 0, ""); + static_assert(sv2.compare(sv3) < 0, ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.ops/copy.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/copy.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.ops/copy.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/copy.pass.cpp @@ -25,112 +25,113 @@ #include "test_macros.h" -template -void test1 ( std::basic_string_view sv, std::size_t n, size_t pos ) { - const std::size_t rlen = std::min ( n, sv.size() - pos ); +template +void test1(std::basic_string_view sv, std::size_t n, size_t pos) { + const std::size_t rlen = std::min(n, sv.size() - pos); - CharT *dest1 = new CharT [rlen + 1]; dest1[rlen] = 0; - CharT *dest2 = new CharT [rlen + 1]; dest2[rlen] = 0; + CharT* dest1 = new CharT[rlen + 1]; + dest1[rlen] = 0; + CharT* dest2 = new CharT[rlen + 1]; + dest2[rlen] = 0; - if (pos > sv.size()) { + if (pos > sv.size()) { #ifndef TEST_HAS_NO_EXCEPTIONS - try { - sv.copy(dest1, n, pos); - assert(false); - } catch (const std::out_of_range&) { - } catch (...) { - assert(false); - } -#endif - } else { - sv.copy(dest1, n, pos); - std::copy_n(sv.begin() + pos, rlen, dest2); - for ( std::size_t i = 0; i <= rlen; ++i ) - assert ( dest1[i] == dest2[i] ); + try { + sv.copy(dest1, n, pos); + assert(false); + } catch (const std::out_of_range&) { + } catch (...) { + assert(false); } - delete [] dest1; - delete [] dest2; +#endif + } else { + sv.copy(dest1, n, pos); + std::copy_n(sv.begin() + pos, rlen, dest2); + for (std::size_t i = 0; i <= rlen; ++i) + assert(dest1[i] == dest2[i]); + } + delete[] dest1; + delete[] dest2; } +template +void test(const CharT* s) { + typedef std::basic_string_view string_view_t; -template -void test ( const CharT *s ) { - typedef std::basic_string_view string_view_t; - - string_view_t sv1 ( s ); + string_view_t sv1(s); - test1(sv1, 0, 0); - test1(sv1, 1, 0); - test1(sv1, 20, 0); - test1(sv1, sv1.size(), 0); - test1(sv1, 20, string_view_t::npos); + test1(sv1, 0, 0); + test1(sv1, 1, 0); + test1(sv1, 20, 0); + test1(sv1, sv1.size(), 0); + test1(sv1, 20, string_view_t::npos); - test1(sv1, 0, 3); - test1(sv1, 2, 3); - test1(sv1, 100, 3); - test1(sv1, 100, string_view_t::npos); + test1(sv1, 0, 3); + test1(sv1, 2, 3); + test1(sv1, 100, 3); + test1(sv1, 100, string_view_t::npos); - test1(sv1, sv1.size(), string_view_t::npos); + test1(sv1, sv1.size(), string_view_t::npos); - test1(sv1, sv1.size() + 1, 0); - test1(sv1, sv1.size() + 1, 1); - test1(sv1, sv1.size() + 1, string_view_t::npos); + test1(sv1, sv1.size() + 1, 0); + test1(sv1, sv1.size() + 1, 1); + test1(sv1, sv1.size() + 1, string_view_t::npos); } -template -TEST_CONSTEXPR_CXX20 bool test_constexpr_copy(const CharT *abcde, const CharT *ghijk, const CharT *bcdjk) -{ - CharT buf[6] = {}; - std::basic_string_view lval(ghijk); lval.copy(buf, 6); - std::basic_string_view(abcde).copy(buf, 3, 1); - assert(std::basic_string_view(buf) == bcdjk); - return true; +template +TEST_CONSTEXPR_CXX20 bool test_constexpr_copy(const CharT* abcde, const CharT* ghijk, const CharT* bcdjk) { + CharT buf[6] = {}; + std::basic_string_view lval(ghijk); + lval.copy(buf, 6); + std::basic_string_view(abcde).copy(buf, 3, 1); + assert(std::basic_string_view(buf) == bcdjk); + return true; } int main(int, char**) { - test ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" ); - test ( "ABCDE"); - test ( "a" ); - test ( "" ); + test("ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE"); + test("ABCDE"); + test("a"); + test(""); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" ); - test ( L"ABCDE" ); - test ( L"a" ); - test ( L"" ); + test(L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE"); + test(L"ABCDE"); + test(L"a"); + test(L""); #endif #if TEST_STD_VER >= 11 - test ( u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" ); - test ( u"ABCDE" ); - test ( u"a" ); - test ( u"" ); - - test ( U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" ); - test ( U"ABCDE" ); - test ( U"a" ); - test ( U"" ); + test(u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE"); + test(u"ABCDE"); + test(u"a"); + test(u""); + + test(U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE"); + test(U"ABCDE"); + test(U"a"); + test(U""); #endif - test_constexpr_copy("ABCDE", "GHIJK", "BCDJK"); + test_constexpr_copy("ABCDE", "GHIJK", "BCDJK"); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test_constexpr_copy(L"ABCDE", L"GHIJK", L"BCDJK"); + test_constexpr_copy(L"ABCDE", L"GHIJK", L"BCDJK"); #endif #if TEST_STD_VER >= 11 - test_constexpr_copy(u"ABCDE", u"GHIJK", u"BCDJK"); - test_constexpr_copy(U"ABCDE", U"GHIJK", U"BCDJK"); + test_constexpr_copy(u"ABCDE", u"GHIJK", u"BCDJK"); + test_constexpr_copy(U"ABCDE", U"GHIJK", U"BCDJK"); #endif #if TEST_STD_VER >= 17 - test_constexpr_copy(u8"ABCDE", u8"GHIJK", u8"BCDJK"); + test_constexpr_copy(u8"ABCDE", u8"GHIJK", u8"BCDJK"); #endif #if TEST_STD_VER >= 20 - static_assert(test_constexpr_copy("ABCDE", "GHIJK", "BCDJK")); -#ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert(test_constexpr_copy(L"ABCDE", L"GHIJK", L"BCDJK")); -#endif - static_assert(test_constexpr_copy(u"ABCDE", u"GHIJK", u"BCDJK")); - static_assert(test_constexpr_copy(U"ABCDE", U"GHIJK", U"BCDJK")); - static_assert(test_constexpr_copy(u8"ABCDE", u8"GHIJK", u8"BCDJK")); + static_assert(test_constexpr_copy("ABCDE", "GHIJK", "BCDJK")); +# ifndef TEST_HAS_NO_WIDE_CHARACTERS + static_assert(test_constexpr_copy(L"ABCDE", L"GHIJK", L"BCDJK")); +# endif + static_assert(test_constexpr_copy(u"ABCDE", u"GHIJK", u"BCDJK")); + static_assert(test_constexpr_copy(U"ABCDE", U"GHIJK", U"BCDJK")); + static_assert(test_constexpr_copy(u8"ABCDE", u8"GHIJK", u8"BCDJK")); #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp @@ -23,103 +23,101 @@ #include "test_macros.h" -template +template void test1(std::basic_string_view sv, std::size_t n, size_t pos) { - std::basic_string_view sv1; + std::basic_string_view sv1; #ifdef TEST_HAS_NO_EXCEPTIONS - if (pos > sv.size()) - return ; // would throw if exceptions were enabled - sv1 = sv.substr(pos, n); + if (pos > sv.size()) + return; // would throw if exceptions were enabled + sv1 = sv.substr(pos, n); #else - try { - sv1 = sv.substr(pos, n); - assert(pos <= sv.size()); - } - catch (const std::out_of_range&) { - assert(pos > sv.size()); - return ; - } + try { + sv1 = sv.substr(pos, n); + assert(pos <= sv.size()); + } catch (const std::out_of_range&) { + assert(pos > sv.size()); + return; + } #endif - const std::size_t rlen = std::min(n, sv.size() - pos); - assert (sv1.size() == rlen); - for (std::size_t i = 0; i < rlen; ++i) - assert(sv[pos+i] == sv1[i]); + const std::size_t rlen = std::min(n, sv.size() - pos); + assert(sv1.size() == rlen); + for (std::size_t i = 0; i < rlen; ++i) + assert(sv[pos + i] == sv1[i]); } +template +void test(const CharT* s) { + typedef std::basic_string_view string_view_t; -template -void test ( const CharT *s ) { - typedef std::basic_string_view string_view_t; + string_view_t sv1(s); - string_view_t sv1 ( s ); + test1(sv1, 0, 0); + test1(sv1, 1, 0); + test1(sv1, 20, 0); + test1(sv1, sv1.size(), 0); - test1(sv1, 0, 0); - test1(sv1, 1, 0); - test1(sv1, 20, 0); - test1(sv1, sv1.size(), 0); + test1(sv1, 0, 3); + test1(sv1, 2, 3); + test1(sv1, 100, 3); - test1(sv1, 0, 3); - test1(sv1, 2, 3); - test1(sv1, 100, 3); + test1(sv1, 0, string_view_t::npos); + test1(sv1, 2, string_view_t::npos); + test1(sv1, sv1.size(), string_view_t::npos); - test1(sv1, 0, string_view_t::npos); - test1(sv1, 2, string_view_t::npos); - test1(sv1, sv1.size(), string_view_t::npos); - - test1(sv1, sv1.size() + 1, 0); - test1(sv1, sv1.size() + 1, 1); - test1(sv1, sv1.size() + 1, string_view_t::npos); + test1(sv1, sv1.size() + 1, 0); + test1(sv1, sv1.size() + 1, 1); + test1(sv1, sv1.size() + 1, string_view_t::npos); } int main(int, char**) { - test ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" ); - test ( "ABCDE"); - test ( "a" ); - test ( "" ); + test("ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE"); + test("ABCDE"); + test("a"); + test(""); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test ( L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" ); - test ( L"ABCDE" ); - test ( L"a" ); - test ( L"" ); + test(L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE"); + test(L"ABCDE"); + test(L"a"); + test(L""); #endif #if TEST_STD_VER >= 11 - test ( u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" ); - test ( u"ABCDE" ); - test ( u"a" ); - test ( u"" ); - - test ( U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" ); - test ( U"ABCDE" ); - test ( U"a" ); - test ( U"" ); + test(u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE"); + test(u"ABCDE"); + test(u"a"); + test(u""); + + test(U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE"); + test(U"ABCDE"); + test(U"a"); + test(U""); #endif #if TEST_STD_VER > 11 - { - constexpr std::string_view sv1 { "ABCDE", 5 }; + { + constexpr std::string_view sv1{"ABCDE", 5}; { - constexpr std::string_view sv2 = sv1.substr ( 0, 3 ); - static_assert ( sv2.size() == 3, "" ); - static_assert ( sv2[0] == 'A', "" ); - static_assert ( sv2[1] == 'B', "" ); - static_assert ( sv2[2] == 'C', "" ); + constexpr std::string_view sv2 = sv1.substr(0, 3); + static_assert(sv2.size() == 3, ""); + static_assert(sv2[0] == 'A', ""); + static_assert(sv2[1] == 'B', ""); + static_assert(sv2[2] == 'C', ""); } { - constexpr std::string_view sv2 = sv1.substr ( 3, 0 ); - static_assert ( sv2.size() == 0, "" ); + constexpr std::string_view sv2 = sv1.substr(3, 0); + static_assert(sv2.size() == 0, ""); } { - constexpr std::string_view sv2 = sv1.substr ( 3, 3 ); - static_assert ( sv2.size() == 2, "" ); - static_assert ( sv2[0] == 'D', "" ); - static_assert ( sv2[1] == 'E', "" ); - } + constexpr std::string_view sv2 = sv1.substr(3, 3); + static_assert(sv2.size() == 2, ""); + static_assert(sv2[0] == 'D', ""); + static_assert(sv2[1] == 'E', ""); } + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.synop/nothing_to_do.pass.cpp b/libcxx/test/std/strings/string.view/string.view.synop/nothing_to_do.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.synop/nothing_to_do.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.synop/nothing_to_do.pass.cpp @@ -8,6 +8,4 @@ #include -int main(int, char**) { - return 0; -} +int main(int, char**) { return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.template/contains.char.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/contains.char.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/contains.char.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/contains.char.pass.cpp @@ -17,29 +17,27 @@ #include "test_macros.h" -constexpr bool test() -{ - using SV = std::string_view; +constexpr bool test() { + using SV = std::string_view; - SV sv1 {}; - SV sv2 {"abcde", 5}; + SV sv1{}; + SV sv2{"abcde", 5}; - ASSERT_NOEXCEPT(sv1.contains('e')); + ASSERT_NOEXCEPT(sv1.contains('e')); - assert(!sv1.contains('c')); - assert(!sv1.contains('e')); - assert(!sv1.contains('x')); - assert( sv2.contains('c')); - assert( sv2.contains('e')); - assert(!sv2.contains('x')); + assert(!sv1.contains('c')); + assert(!sv1.contains('e')); + assert(!sv1.contains('x')); + assert(sv2.contains('c')); + assert(sv2.contains('e')); + assert(!sv2.contains('x')); - return true; + return true; } -int main(int, char**) -{ - test(); - static_assert(test()); +int main(int, char**) { + test(); + static_assert(test()); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.template/contains.ptr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/contains.ptr.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/contains.ptr.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/contains.ptr.pass.cpp @@ -17,59 +17,57 @@ #include "test_macros.h" -constexpr bool test() -{ - using SV = std::string_view; +constexpr bool test() { + using SV = std::string_view; - const char* s = "abcde"; - SV sv0; - SV sv1 {s + 4, 1}; - SV sv3 {s + 2, 3}; - SV svNot {"xyz", 3}; + const char* s = "abcde"; + SV sv0; + SV sv1{s + 4, 1}; + SV sv3{s + 2, 3}; + SV svNot{"xyz", 3}; - assert( sv0.contains("")); - assert(!sv0.contains("e")); + assert(sv0.contains("")); + assert(!sv0.contains("e")); - assert( sv1.contains("")); - assert(!sv1.contains("d")); - assert( sv1.contains("e")); - assert(!sv1.contains("de")); - assert(!sv1.contains("cd")); - assert(!sv1.contains("cde")); - assert(!sv1.contains("bcde")); - assert(!sv1.contains("abcde")); - assert(!sv1.contains("xyz")); + assert(sv1.contains("")); + assert(!sv1.contains("d")); + assert(sv1.contains("e")); + assert(!sv1.contains("de")); + assert(!sv1.contains("cd")); + assert(!sv1.contains("cde")); + assert(!sv1.contains("bcde")); + assert(!sv1.contains("abcde")); + assert(!sv1.contains("xyz")); - assert( sv3.contains("")); - assert( sv3.contains("d")); - assert( sv3.contains("e")); - assert( sv3.contains("de")); - assert( sv3.contains("cd")); - assert(!sv3.contains("ce")); - assert( sv3.contains("cde")); - assert(!sv3.contains("edc")); - assert(!sv3.contains("bcde")); - assert(!sv3.contains("abcde")); - assert(!sv3.contains("xyz")); + assert(sv3.contains("")); + assert(sv3.contains("d")); + assert(sv3.contains("e")); + assert(sv3.contains("de")); + assert(sv3.contains("cd")); + assert(!sv3.contains("ce")); + assert(sv3.contains("cde")); + assert(!sv3.contains("edc")); + assert(!sv3.contains("bcde")); + assert(!sv3.contains("abcde")); + assert(!sv3.contains("xyz")); - assert( svNot.contains("")); - assert(!svNot.contains("d")); - assert(!svNot.contains("e")); - assert(!svNot.contains("de")); - assert(!svNot.contains("cd")); - assert(!svNot.contains("cde")); - assert(!svNot.contains("bcde")); - assert(!svNot.contains("abcde")); - assert( svNot.contains("xyz")); - assert(!svNot.contains("zyx")); + assert(svNot.contains("")); + assert(!svNot.contains("d")); + assert(!svNot.contains("e")); + assert(!svNot.contains("de")); + assert(!svNot.contains("cd")); + assert(!svNot.contains("cde")); + assert(!svNot.contains("bcde")); + assert(!svNot.contains("abcde")); + assert(svNot.contains("xyz")); + assert(!svNot.contains("zyx")); - return true; + return true; } -int main(int, char**) -{ - test(); - static_assert(test()); +int main(int, char**) { + test(); + static_assert(test()); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.template/contains.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/contains.string_view.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/contains.string_view.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/contains.string_view.pass.cpp @@ -17,73 +17,71 @@ #include "test_macros.h" -constexpr bool test() -{ - using SV = std::string_view; - - const char* s = "abcde"; - SV sv0; - SV sv1 {s + 1, 1}; - SV sv2 {s + 1, 2}; - SV sv3 {s + 1, 3}; - SV sv4 {s + 1, 4}; - SV sv5 {s , 5}; - SV svNot {"xyz", 3}; - SV svNot2 {"bd" , 2}; - SV svNot3 {"dcb", 3}; - - ASSERT_NOEXCEPT(sv0.contains(sv0)); - - assert( sv0.contains(sv0)); - assert(!sv0.contains(sv1)); - - assert( sv1.contains(sv0)); - assert( sv1.contains(sv1)); - assert(!sv1.contains(sv2)); - assert(!sv1.contains(sv3)); - assert(!sv1.contains(sv4)); - assert(!sv1.contains(sv5)); - assert(!sv1.contains(svNot)); - assert(!sv1.contains(svNot2)); - assert(!sv1.contains(svNot3)); - - assert( sv3.contains(sv0)); - assert( sv3.contains(sv1)); - assert( sv3.contains(sv2)); - assert( sv3.contains(sv3)); - assert(!sv3.contains(sv4)); - assert(!sv3.contains(sv5)); - assert(!sv3.contains(svNot)); - assert(!sv3.contains(svNot2)); - assert(!sv3.contains(svNot3)); - - assert( sv5.contains(sv0)); - assert( sv5.contains(sv1)); - assert( sv5.contains(sv2)); - assert( sv5.contains(sv3)); - assert( sv5.contains(sv4)); - assert( sv5.contains(sv5)); - assert(!sv5.contains(svNot)); - assert(!sv5.contains(svNot2)); - assert(!sv5.contains(svNot3)); - - assert( svNot.contains(sv0)); - assert(!svNot.contains(sv1)); - assert(!svNot.contains(sv2)); - assert(!svNot.contains(sv3)); - assert(!svNot.contains(sv4)); - assert(!svNot.contains(sv5)); - assert( svNot.contains(svNot)); - assert(!svNot.contains(svNot2)); - assert(!svNot.contains(svNot3)); - - return true; +constexpr bool test() { + using SV = std::string_view; + + const char* s = "abcde"; + SV sv0; + SV sv1{s + 1, 1}; + SV sv2{s + 1, 2}; + SV sv3{s + 1, 3}; + SV sv4{s + 1, 4}; + SV sv5{s, 5}; + SV svNot{"xyz", 3}; + SV svNot2{"bd", 2}; + SV svNot3{"dcb", 3}; + + ASSERT_NOEXCEPT(sv0.contains(sv0)); + + assert(sv0.contains(sv0)); + assert(!sv0.contains(sv1)); + + assert(sv1.contains(sv0)); + assert(sv1.contains(sv1)); + assert(!sv1.contains(sv2)); + assert(!sv1.contains(sv3)); + assert(!sv1.contains(sv4)); + assert(!sv1.contains(sv5)); + assert(!sv1.contains(svNot)); + assert(!sv1.contains(svNot2)); + assert(!sv1.contains(svNot3)); + + assert(sv3.contains(sv0)); + assert(sv3.contains(sv1)); + assert(sv3.contains(sv2)); + assert(sv3.contains(sv3)); + assert(!sv3.contains(sv4)); + assert(!sv3.contains(sv5)); + assert(!sv3.contains(svNot)); + assert(!sv3.contains(svNot2)); + assert(!sv3.contains(svNot3)); + + assert(sv5.contains(sv0)); + assert(sv5.contains(sv1)); + assert(sv5.contains(sv2)); + assert(sv5.contains(sv3)); + assert(sv5.contains(sv4)); + assert(sv5.contains(sv5)); + assert(!sv5.contains(svNot)); + assert(!sv5.contains(svNot2)); + assert(!sv5.contains(svNot3)); + + assert(svNot.contains(sv0)); + assert(!svNot.contains(sv1)); + assert(!svNot.contains(sv2)); + assert(!svNot.contains(sv3)); + assert(!svNot.contains(sv4)); + assert(!svNot.contains(sv5)); + assert(svNot.contains(svNot)); + assert(!svNot.contains(svNot2)); + assert(!svNot.contains(svNot3)); + + return true; } -int main(int, char**) -{ - test(); - static_assert(test()); +int main(int, char**) { + test(); + static_assert(test()); - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/ends_with.char.pass.cpp @@ -18,31 +18,30 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view SV; - SV sv1 {}; - SV sv2 { "abcde", 5 }; + SV sv1{}; + SV sv2{"abcde", 5}; ASSERT_NOEXCEPT(sv1.ends_with('e')); - assert (!sv1.ends_with('e')); - assert (!sv1.ends_with('x')); - assert ( sv2.ends_with('e')); - assert (!sv2.ends_with('x')); - } + assert(!sv1.ends_with('e')); + assert(!sv1.ends_with('x')); + assert(sv2.ends_with('e')); + assert(!sv2.ends_with('x')); + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1 {}; - constexpr SV sv2 { "abcde", 5 }; - static_assert (!sv1.ends_with('e'), "" ); - static_assert (!sv1.ends_with('x'), "" ); - static_assert ( sv2.ends_with('e'), "" ); - static_assert (!sv2.ends_with('x'), "" ); - } + constexpr SV sv1{}; + constexpr SV sv2{"abcde", 5}; + static_assert(!sv1.ends_with('e'), ""); + static_assert(!sv1.ends_with('x'), ""); + static_assert(sv2.ends_with('e'), ""); + static_assert(!sv2.ends_with('x'), ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/ends_with.ptr.pass.cpp @@ -18,82 +18,81 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view SV; - const char *s = "abcde"; - SV sv0 {}; - SV sv1 { s + 4, 1 }; - SV sv2 { s + 3, 2 }; - SV svNot {"def", 3 }; + const char* s = "abcde"; + SV sv0{}; + SV sv1{s + 4, 1}; + SV sv2{s + 3, 2}; + SV svNot{"def", 3}; LIBCPP_ASSERT_NOEXCEPT(sv0.ends_with("")); - assert ( sv0.ends_with("")); - assert (!sv0.ends_with("e")); - - assert ( sv1.ends_with("")); - assert ( sv1.ends_with("e")); - assert (!sv1.ends_with("de")); - assert (!sv1.ends_with("cde")); - assert (!sv1.ends_with("bcde")); - assert (!sv1.ends_with("abcde")); - assert (!sv1.ends_with("def")); - - assert ( sv2.ends_with("")); - assert ( sv2.ends_with("e")); - assert ( sv2.ends_with("de")); - assert (!sv2.ends_with("cde")); - assert (!sv2.ends_with("bcde")); - assert (!sv2.ends_with("abcde")); - assert (!sv2.ends_with("def")); - - assert ( svNot.ends_with("")); - assert (!svNot.ends_with("e")); - assert (!svNot.ends_with("de")); - assert (!svNot.ends_with("cde")); - assert (!svNot.ends_with("bcde")); - assert (!svNot.ends_with("abcde")); - assert ( svNot.ends_with("def")); - } + assert(sv0.ends_with("")); + assert(!sv0.ends_with("e")); + + assert(sv1.ends_with("")); + assert(sv1.ends_with("e")); + assert(!sv1.ends_with("de")); + assert(!sv1.ends_with("cde")); + assert(!sv1.ends_with("bcde")); + assert(!sv1.ends_with("abcde")); + assert(!sv1.ends_with("def")); + + assert(sv2.ends_with("")); + assert(sv2.ends_with("e")); + assert(sv2.ends_with("de")); + assert(!sv2.ends_with("cde")); + assert(!sv2.ends_with("bcde")); + assert(!sv2.ends_with("abcde")); + assert(!sv2.ends_with("def")); + + assert(svNot.ends_with("")); + assert(!svNot.ends_with("e")); + assert(!svNot.ends_with("de")); + assert(!svNot.ends_with("cde")); + assert(!svNot.ends_with("bcde")); + assert(!svNot.ends_with("abcde")); + assert(svNot.ends_with("def")); + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr const char *s = "abcde"; - constexpr SV sv0 {}; - constexpr SV sv1 { s + 4, 1 }; - constexpr SV sv2 { s + 3, 2 }; - constexpr SV svNot {"def", 3 }; - - static_assert ( sv0.ends_with(""), "" ); - static_assert (!sv0.ends_with("e"), "" ); - - static_assert ( sv1.ends_with(""), "" ); - static_assert ( sv1.ends_with("e"), "" ); - static_assert (!sv1.ends_with("de"), "" ); - static_assert (!sv1.ends_with("cde"), "" ); - static_assert (!sv1.ends_with("bcde"), "" ); - static_assert (!sv1.ends_with("abcde"), "" ); - static_assert (!sv1.ends_with("def"), "" ); - - static_assert ( sv2.ends_with(""), "" ); - static_assert ( sv2.ends_with("e"), "" ); - static_assert ( sv2.ends_with("de"), "" ); - static_assert (!sv2.ends_with("cde"), "" ); - static_assert (!sv2.ends_with("bcde"), "" ); - static_assert (!sv2.ends_with("abcde"), "" ); - static_assert (!sv2.ends_with("def"), "" ); - - static_assert ( svNot.ends_with(""), "" ); - static_assert (!svNot.ends_with("e"), "" ); - static_assert (!svNot.ends_with("de"), "" ); - static_assert (!svNot.ends_with("cde"), "" ); - static_assert (!svNot.ends_with("bcde"), "" ); - static_assert (!svNot.ends_with("abcde"), "" ); - static_assert ( svNot.ends_with("def"), "" ); - } + constexpr const char* s = "abcde"; + constexpr SV sv0{}; + constexpr SV sv1{s + 4, 1}; + constexpr SV sv2{s + 3, 2}; + constexpr SV svNot{"def", 3}; + + static_assert(sv0.ends_with(""), ""); + static_assert(!sv0.ends_with("e"), ""); + + static_assert(sv1.ends_with(""), ""); + static_assert(sv1.ends_with("e"), ""); + static_assert(!sv1.ends_with("de"), ""); + static_assert(!sv1.ends_with("cde"), ""); + static_assert(!sv1.ends_with("bcde"), ""); + static_assert(!sv1.ends_with("abcde"), ""); + static_assert(!sv1.ends_with("def"), ""); + + static_assert(sv2.ends_with(""), ""); + static_assert(sv2.ends_with("e"), ""); + static_assert(sv2.ends_with("de"), ""); + static_assert(!sv2.ends_with("cde"), ""); + static_assert(!sv2.ends_with("bcde"), ""); + static_assert(!sv2.ends_with("abcde"), ""); + static_assert(!sv2.ends_with("def"), ""); + + static_assert(svNot.ends_with(""), ""); + static_assert(!svNot.ends_with("e"), ""); + static_assert(!svNot.ends_with("de"), ""); + static_assert(!svNot.ends_with("cde"), ""); + static_assert(!svNot.ends_with("bcde"), ""); + static_assert(!svNot.ends_with("abcde"), ""); + static_assert(svNot.ends_with("def"), ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/ends_with.string_view.pass.cpp @@ -18,88 +18,87 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view SV; - const char *s = "abcde"; - SV sv0; - SV sv1 { s + 4, 1 }; - SV sv2 { s + 3, 2 }; - SV sv3 { s + 2, 3 }; - SV sv4 { s + 1, 4 }; - SV sv5 { s , 5 }; - SV svNot {"def", 3 }; + const char* s = "abcde"; + SV sv0; + SV sv1{s + 4, 1}; + SV sv2{s + 3, 2}; + SV sv3{s + 2, 3}; + SV sv4{s + 1, 4}; + SV sv5{s, 5}; + SV svNot{"def", 3}; ASSERT_NOEXCEPT(sv0.ends_with(sv0)); - assert ( sv0.ends_with(sv0)); - assert (!sv0.ends_with(sv1)); - - assert ( sv1.ends_with(sv0)); - assert ( sv1.ends_with(sv1)); - assert (!sv1.ends_with(sv2)); - assert (!sv1.ends_with(sv3)); - assert (!sv1.ends_with(sv4)); - assert (!sv1.ends_with(sv5)); - assert (!sv1.ends_with(svNot)); - - assert ( sv2.ends_with(sv0)); - assert ( sv2.ends_with(sv1)); - assert ( sv2.ends_with(sv2)); - assert (!sv2.ends_with(sv3)); - assert (!sv2.ends_with(sv4)); - assert (!sv2.ends_with(sv5)); - assert (!sv2.ends_with(svNot)); - - assert ( svNot.ends_with(sv0)); - assert (!svNot.ends_with(sv1)); - assert (!svNot.ends_with(sv2)); - assert (!svNot.ends_with(sv3)); - assert (!svNot.ends_with(sv4)); - assert (!svNot.ends_with(sv5)); - assert ( svNot.ends_with(svNot)); - } + assert(sv0.ends_with(sv0)); + assert(!sv0.ends_with(sv1)); + + assert(sv1.ends_with(sv0)); + assert(sv1.ends_with(sv1)); + assert(!sv1.ends_with(sv2)); + assert(!sv1.ends_with(sv3)); + assert(!sv1.ends_with(sv4)); + assert(!sv1.ends_with(sv5)); + assert(!sv1.ends_with(svNot)); + + assert(sv2.ends_with(sv0)); + assert(sv2.ends_with(sv1)); + assert(sv2.ends_with(sv2)); + assert(!sv2.ends_with(sv3)); + assert(!sv2.ends_with(sv4)); + assert(!sv2.ends_with(sv5)); + assert(!sv2.ends_with(svNot)); + + assert(svNot.ends_with(sv0)); + assert(!svNot.ends_with(sv1)); + assert(!svNot.ends_with(sv2)); + assert(!svNot.ends_with(sv3)); + assert(!svNot.ends_with(sv4)); + assert(!svNot.ends_with(sv5)); + assert(svNot.ends_with(svNot)); + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr const char *s = "abcde"; - constexpr SV sv0 {}; - constexpr SV sv1 { s + 4, 1 }; - constexpr SV sv2 { s + 3, 2 }; - constexpr SV sv3 { s + 2, 3 }; - constexpr SV sv4 { s + 1, 4 }; - constexpr SV sv5 { s, 5 }; - constexpr SV svNot {"def", 3 }; - - static_assert ( sv0.ends_with(sv0), "" ); - static_assert (!sv0.ends_with(sv1), "" ); - - static_assert ( sv1.ends_with(sv0), "" ); - static_assert ( sv1.ends_with(sv1), "" ); - static_assert (!sv1.ends_with(sv2), "" ); - static_assert (!sv1.ends_with(sv3), "" ); - static_assert (!sv1.ends_with(sv4), "" ); - static_assert (!sv1.ends_with(sv5), "" ); - static_assert (!sv1.ends_with(svNot), "" ); - - static_assert ( sv2.ends_with(sv0), "" ); - static_assert ( sv2.ends_with(sv1), "" ); - static_assert ( sv2.ends_with(sv2), "" ); - static_assert (!sv2.ends_with(sv3), "" ); - static_assert (!sv2.ends_with(sv4), "" ); - static_assert (!sv2.ends_with(sv5), "" ); - static_assert (!sv2.ends_with(svNot), "" ); - - static_assert ( svNot.ends_with(sv0), "" ); - static_assert (!svNot.ends_with(sv1), "" ); - static_assert (!svNot.ends_with(sv2), "" ); - static_assert (!svNot.ends_with(sv3), "" ); - static_assert (!svNot.ends_with(sv4), "" ); - static_assert (!svNot.ends_with(sv5), "" ); - static_assert ( svNot.ends_with(svNot), "" ); - } + constexpr const char* s = "abcde"; + constexpr SV sv0{}; + constexpr SV sv1{s + 4, 1}; + constexpr SV sv2{s + 3, 2}; + constexpr SV sv3{s + 2, 3}; + constexpr SV sv4{s + 1, 4}; + constexpr SV sv5{s, 5}; + constexpr SV svNot{"def", 3}; + + static_assert(sv0.ends_with(sv0), ""); + static_assert(!sv0.ends_with(sv1), ""); + + static_assert(sv1.ends_with(sv0), ""); + static_assert(sv1.ends_with(sv1), ""); + static_assert(!sv1.ends_with(sv2), ""); + static_assert(!sv1.ends_with(sv3), ""); + static_assert(!sv1.ends_with(sv4), ""); + static_assert(!sv1.ends_with(sv5), ""); + static_assert(!sv1.ends_with(svNot), ""); + + static_assert(sv2.ends_with(sv0), ""); + static_assert(sv2.ends_with(sv1), ""); + static_assert(sv2.ends_with(sv2), ""); + static_assert(!sv2.ends_with(sv3), ""); + static_assert(!sv2.ends_with(sv4), ""); + static_assert(!sv2.ends_with(sv5), ""); + static_assert(!sv2.ends_with(svNot), ""); + + static_assert(svNot.ends_with(sv0), ""); + static_assert(!svNot.ends_with(sv1), ""); + static_assert(!svNot.ends_with(sv2), ""); + static_assert(!svNot.ends_with(sv3), ""); + static_assert(!svNot.ends_with(sv4), ""); + static_assert(!svNot.ends_with(sv5), ""); + static_assert(svNot.ends_with(svNot), ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/starts_with.char.pass.cpp @@ -18,31 +18,30 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view SV; - SV sv1 {}; - SV sv2 { "abcde", 5 }; + SV sv1{}; + SV sv2{"abcde", 5}; ASSERT_NOEXCEPT(sv1.starts_with('e')); - assert (!sv1.starts_with('a')); - assert (!sv1.starts_with('x')); - assert ( sv2.starts_with('a')); - assert (!sv2.starts_with('x')); - } + assert(!sv1.starts_with('a')); + assert(!sv1.starts_with('x')); + assert(sv2.starts_with('a')); + assert(!sv2.starts_with('x')); + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr SV sv1 {}; - constexpr SV sv2 { "abcde", 5 }; - static_assert (!sv1.starts_with('a'), "" ); - static_assert (!sv1.starts_with('x'), "" ); - static_assert ( sv2.starts_with('a'), "" ); - static_assert (!sv2.starts_with('x'), "" ); - } + constexpr SV sv1{}; + constexpr SV sv2{"abcde", 5}; + static_assert(!sv1.starts_with('a'), ""); + static_assert(!sv1.starts_with('x'), ""); + static_assert(sv2.starts_with('a'), ""); + static_assert(!sv2.starts_with('x'), ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/starts_with.ptr.pass.cpp @@ -18,82 +18,81 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view SV; - const char *s = "abcde"; - SV sv0 {}; - SV sv1 { s, 1 }; - SV sv2 { s, 2 }; - SV svNot {"def", 3 }; + const char* s = "abcde"; + SV sv0{}; + SV sv1{s, 1}; + SV sv2{s, 2}; + SV svNot{"def", 3}; LIBCPP_ASSERT_NOEXCEPT(sv0.starts_with("")); - assert ( sv0.starts_with("")); - assert (!sv0.starts_with("a")); - - assert ( sv1.starts_with("")); - assert ( sv1.starts_with("a")); - assert (!sv1.starts_with("ab")); - assert (!sv1.starts_with("abc")); - assert (!sv1.starts_with("abcd")); - assert (!sv1.starts_with("abcde")); - assert (!sv1.starts_with("def")); - - assert ( sv2.starts_with(s + 5)); - assert ( sv2.starts_with("a")); - assert ( sv2.starts_with("ab")); - assert (!sv2.starts_with("abc")); - assert (!sv2.starts_with("abcd")); - assert (!sv2.starts_with("abcde")); - assert (!sv2.starts_with("def")); - - assert ( svNot.starts_with("")); - assert (!svNot.starts_with("a")); - assert (!svNot.starts_with("ab")); - assert (!svNot.starts_with("abc")); - assert (!svNot.starts_with("abcd")); - assert (!svNot.starts_with("abcde")); - assert ( svNot.starts_with("def")); - } + assert(sv0.starts_with("")); + assert(!sv0.starts_with("a")); + + assert(sv1.starts_with("")); + assert(sv1.starts_with("a")); + assert(!sv1.starts_with("ab")); + assert(!sv1.starts_with("abc")); + assert(!sv1.starts_with("abcd")); + assert(!sv1.starts_with("abcde")); + assert(!sv1.starts_with("def")); + + assert(sv2.starts_with(s + 5)); + assert(sv2.starts_with("a")); + assert(sv2.starts_with("ab")); + assert(!sv2.starts_with("abc")); + assert(!sv2.starts_with("abcd")); + assert(!sv2.starts_with("abcde")); + assert(!sv2.starts_with("def")); + + assert(svNot.starts_with("")); + assert(!svNot.starts_with("a")); + assert(!svNot.starts_with("ab")); + assert(!svNot.starts_with("abc")); + assert(!svNot.starts_with("abcd")); + assert(!svNot.starts_with("abcde")); + assert(svNot.starts_with("def")); + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr const char *s = "abcde"; - constexpr SV sv0 {}; - constexpr SV sv1 { s, 1 }; - constexpr SV sv2 { s, 2 }; - constexpr SV svNot {"def", 3 }; - - static_assert ( sv0.starts_with(""), "" ); - static_assert (!sv0.starts_with("a"), "" ); - - static_assert ( sv1.starts_with(""), "" ); - static_assert ( sv1.starts_with("a"), "" ); - static_assert (!sv1.starts_with("ab"), "" ); - static_assert (!sv1.starts_with("abc"), "" ); - static_assert (!sv1.starts_with("abcd"), "" ); - static_assert (!sv1.starts_with("abcde"), "" ); - static_assert (!sv1.starts_with("def"), "" ); - - static_assert ( sv2.starts_with(s + 5), "" ); - static_assert ( sv2.starts_with("a"), "" ); - static_assert ( sv2.starts_with("ab"), "" ); - static_assert (!sv2.starts_with("abc"), "" ); - static_assert (!sv2.starts_with("abcd"), "" ); - static_assert (!sv2.starts_with("abcde"), "" ); - static_assert (!sv2.starts_with("def"), "" ); - - static_assert ( svNot.starts_with(""), "" ); - static_assert (!svNot.starts_with("a"), "" ); - static_assert (!svNot.starts_with("ab"), "" ); - static_assert (!svNot.starts_with("abc"), "" ); - static_assert (!svNot.starts_with("abcd"), "" ); - static_assert (!svNot.starts_with("abcde"), "" ); - static_assert ( svNot.starts_with("def"), "" ); - } + constexpr const char* s = "abcde"; + constexpr SV sv0{}; + constexpr SV sv1{s, 1}; + constexpr SV sv2{s, 2}; + constexpr SV svNot{"def", 3}; + + static_assert(sv0.starts_with(""), ""); + static_assert(!sv0.starts_with("a"), ""); + + static_assert(sv1.starts_with(""), ""); + static_assert(sv1.starts_with("a"), ""); + static_assert(!sv1.starts_with("ab"), ""); + static_assert(!sv1.starts_with("abc"), ""); + static_assert(!sv1.starts_with("abcd"), ""); + static_assert(!sv1.starts_with("abcde"), ""); + static_assert(!sv1.starts_with("def"), ""); + + static_assert(sv2.starts_with(s + 5), ""); + static_assert(sv2.starts_with("a"), ""); + static_assert(sv2.starts_with("ab"), ""); + static_assert(!sv2.starts_with("abc"), ""); + static_assert(!sv2.starts_with("abcd"), ""); + static_assert(!sv2.starts_with("abcde"), ""); + static_assert(!sv2.starts_with("def"), ""); + + static_assert(svNot.starts_with(""), ""); + static_assert(!svNot.starts_with("a"), ""); + static_assert(!svNot.starts_with("ab"), ""); + static_assert(!svNot.starts_with("abc"), ""); + static_assert(!svNot.starts_with("abcd"), ""); + static_assert(!svNot.starts_with("abcde"), ""); + static_assert(svNot.starts_with("def"), ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp b/libcxx/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp --- a/libcxx/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.template/starts_with.string_view.pass.cpp @@ -18,88 +18,87 @@ #include "test_macros.h" #include "constexpr_char_traits.h" -int main(int, char**) -{ - { +int main(int, char**) { + { typedef std::string_view SV; - const char *s = "abcde"; - SV sv0 {}; - SV sv1 { s, 1 }; - SV sv2 { s, 2 }; - SV sv3 { s, 3 }; - SV sv4 { s, 4 }; - SV sv5 { s, 5 }; - SV svNot {"def", 3 }; + const char* s = "abcde"; + SV sv0{}; + SV sv1{s, 1}; + SV sv2{s, 2}; + SV sv3{s, 3}; + SV sv4{s, 4}; + SV sv5{s, 5}; + SV svNot{"def", 3}; ASSERT_NOEXCEPT(sv0.starts_with(sv0)); - assert ( sv0.starts_with(sv0)); - assert (!sv0.starts_with(sv1)); - - assert ( sv1.starts_with(sv0)); - assert ( sv1.starts_with(sv1)); - assert (!sv1.starts_with(sv2)); - assert (!sv1.starts_with(sv3)); - assert (!sv1.starts_with(sv4)); - assert (!sv1.starts_with(sv5)); - assert (!sv1.starts_with(svNot)); - - assert ( sv2.starts_with(sv0)); - assert ( sv2.starts_with(sv1)); - assert ( sv2.starts_with(sv2)); - assert (!sv2.starts_with(sv3)); - assert (!sv2.starts_with(sv4)); - assert (!sv2.starts_with(sv5)); - assert (!sv2.starts_with(svNot)); - - assert ( svNot.starts_with(sv0)); - assert (!svNot.starts_with(sv1)); - assert (!svNot.starts_with(sv2)); - assert (!svNot.starts_with(sv3)); - assert (!svNot.starts_with(sv4)); - assert (!svNot.starts_with(sv5)); - assert ( svNot.starts_with(svNot)); - } + assert(sv0.starts_with(sv0)); + assert(!sv0.starts_with(sv1)); + + assert(sv1.starts_with(sv0)); + assert(sv1.starts_with(sv1)); + assert(!sv1.starts_with(sv2)); + assert(!sv1.starts_with(sv3)); + assert(!sv1.starts_with(sv4)); + assert(!sv1.starts_with(sv5)); + assert(!sv1.starts_with(svNot)); + + assert(sv2.starts_with(sv0)); + assert(sv2.starts_with(sv1)); + assert(sv2.starts_with(sv2)); + assert(!sv2.starts_with(sv3)); + assert(!sv2.starts_with(sv4)); + assert(!sv2.starts_with(sv5)); + assert(!sv2.starts_with(svNot)); + + assert(svNot.starts_with(sv0)); + assert(!svNot.starts_with(sv1)); + assert(!svNot.starts_with(sv2)); + assert(!svNot.starts_with(sv3)); + assert(!svNot.starts_with(sv4)); + assert(!svNot.starts_with(sv5)); + assert(svNot.starts_with(svNot)); + } #if TEST_STD_VER > 11 - { + { typedef std::basic_string_view> SV; - constexpr const char *s = "abcde"; - constexpr SV sv0 {}; - constexpr SV sv1 { s, 1 }; - constexpr SV sv2 { s, 2 }; - constexpr SV sv3 { s, 3 }; - constexpr SV sv4 { s, 4 }; - constexpr SV sv5 { s, 5 }; - constexpr SV svNot {"def", 3 }; - - static_assert ( sv0.starts_with(sv0), "" ); - static_assert (!sv0.starts_with(sv1), "" ); - - static_assert ( sv1.starts_with(sv0), "" ); - static_assert ( sv1.starts_with(sv1), "" ); - static_assert (!sv1.starts_with(sv2), "" ); - static_assert (!sv1.starts_with(sv3), "" ); - static_assert (!sv1.starts_with(sv4), "" ); - static_assert (!sv1.starts_with(sv5), "" ); - static_assert (!sv1.starts_with(svNot), "" ); - - static_assert ( sv2.starts_with(sv0), "" ); - static_assert ( sv2.starts_with(sv1), "" ); - static_assert ( sv2.starts_with(sv2), "" ); - static_assert (!sv2.starts_with(sv3), "" ); - static_assert (!sv2.starts_with(sv4), "" ); - static_assert (!sv2.starts_with(sv5), "" ); - static_assert (!sv2.starts_with(svNot), "" ); - - static_assert ( svNot.starts_with(sv0), "" ); - static_assert (!svNot.starts_with(sv1), "" ); - static_assert (!svNot.starts_with(sv2), "" ); - static_assert (!svNot.starts_with(sv3), "" ); - static_assert (!svNot.starts_with(sv4), "" ); - static_assert (!svNot.starts_with(sv5), "" ); - static_assert ( svNot.starts_with(svNot), "" ); - } + constexpr const char* s = "abcde"; + constexpr SV sv0{}; + constexpr SV sv1{s, 1}; + constexpr SV sv2{s, 2}; + constexpr SV sv3{s, 3}; + constexpr SV sv4{s, 4}; + constexpr SV sv5{s, 5}; + constexpr SV svNot{"def", 3}; + + static_assert(sv0.starts_with(sv0), ""); + static_assert(!sv0.starts_with(sv1), ""); + + static_assert(sv1.starts_with(sv0), ""); + static_assert(sv1.starts_with(sv1), ""); + static_assert(!sv1.starts_with(sv2), ""); + static_assert(!sv1.starts_with(sv3), ""); + static_assert(!sv1.starts_with(sv4), ""); + static_assert(!sv1.starts_with(sv5), ""); + static_assert(!sv1.starts_with(svNot), ""); + + static_assert(sv2.starts_with(sv0), ""); + static_assert(sv2.starts_with(sv1), ""); + static_assert(sv2.starts_with(sv2), ""); + static_assert(!sv2.starts_with(sv3), ""); + static_assert(!sv2.starts_with(sv4), ""); + static_assert(!sv2.starts_with(sv5), ""); + static_assert(!sv2.starts_with(svNot), ""); + + static_assert(svNot.starts_with(sv0), ""); + static_assert(!svNot.starts_with(sv1), ""); + static_assert(!svNot.starts_with(sv2), ""); + static_assert(!svNot.starts_with(sv3), ""); + static_assert(!svNot.starts_with(sv4), ""); + static_assert(!svNot.starts_with(sv5), ""); + static_assert(svNot.starts_with(svNot), ""); + } #endif return 0; diff --git a/libcxx/test/std/strings/string.view/string_view.literals/literal.pass.cpp b/libcxx/test/std/strings/string.view/string_view.literals/literal.pass.cpp --- a/libcxx/test/std/strings/string.view/string_view.literals/literal.pass.cpp +++ b/libcxx/test/std/strings/string.view/string_view.literals/literal.pass.cpp @@ -16,81 +16,101 @@ #include "test_macros.h" #ifndef TEST_HAS_NO_CHAR8_T - typedef std::u8string_view u8string_view; +typedef std::u8string_view u8string_view; #else - typedef std::string_view u8string_view; +typedef std::string_view u8string_view; #endif int main(int, char**) { - { - using namespace std::literals::string_view_literals; + { + using namespace std::literals::string_view_literals; - ASSERT_SAME_TYPE(decltype( "Hi"sv), std::string_view); - ASSERT_SAME_TYPE(decltype(u8"Hi"sv), u8string_view); + ASSERT_SAME_TYPE(decltype("Hi"sv), std::string_view); + ASSERT_SAME_TYPE(decltype(u8"Hi"sv), u8string_view); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - ASSERT_SAME_TYPE(decltype( L"Hi"sv), std::wstring_view); + ASSERT_SAME_TYPE(decltype(L"Hi"sv), std::wstring_view); #endif - ASSERT_SAME_TYPE(decltype( u"Hi"sv), std::u16string_view); - ASSERT_SAME_TYPE(decltype( U"Hi"sv), std::u32string_view); + ASSERT_SAME_TYPE(decltype(u"Hi"sv), std::u16string_view); + ASSERT_SAME_TYPE(decltype(U"Hi"sv), std::u32string_view); - std::string_view foo; + std::string_view foo; #ifndef TEST_HAS_NO_WIDE_CHARACTERS - std::wstring_view Lfoo; + std::wstring_view Lfoo; #endif - u8string_view u8foo; - std::u16string_view ufoo; - std::u32string_view Ufoo; + u8string_view u8foo; + std::u16string_view ufoo; + std::u32string_view Ufoo; - foo = ""sv; assert( foo.size() == 0); - u8foo = u8""sv; assert(u8foo.size() == 0); + foo = ""sv; + assert(foo.size() == 0); + u8foo = u8""sv; + assert(u8foo.size() == 0); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - Lfoo = L""sv; assert( Lfoo.size() == 0); + Lfoo = L""sv; + assert(Lfoo.size() == 0); #endif - ufoo = u""sv; assert( ufoo.size() == 0); - Ufoo = U""sv; assert( Ufoo.size() == 0); + ufoo = u""sv; + assert(ufoo.size() == 0); + Ufoo = U""sv; + assert(Ufoo.size() == 0); - foo = " "sv; assert( foo.size() == 1); - u8foo = u8" "sv; assert(u8foo.size() == 1); + foo = " "sv; + assert(foo.size() == 1); + u8foo = u8" "sv; + assert(u8foo.size() == 1); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - Lfoo = L" "sv; assert( Lfoo.size() == 1); + Lfoo = L" "sv; + assert(Lfoo.size() == 1); #endif - ufoo = u" "sv; assert( ufoo.size() == 1); - Ufoo = U" "sv; assert( Ufoo.size() == 1); + ufoo = u" "sv; + assert(ufoo.size() == 1); + Ufoo = U" "sv; + assert(Ufoo.size() == 1); - foo = "ABC"sv; assert( foo == "ABC"); assert( foo == std::string_view ( "ABC")); - u8foo = u8"ABC"sv; assert(u8foo == u8"ABC"); assert(u8foo == u8string_view (u8"ABC")); + foo = "ABC"sv; + assert(foo == "ABC"); + assert(foo == std::string_view("ABC")); + u8foo = u8"ABC"sv; + assert(u8foo == u8"ABC"); + assert(u8foo == u8string_view(u8"ABC")); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - Lfoo = L"ABC"sv; assert( Lfoo == L"ABC"); assert( Lfoo == std::wstring_view ( L"ABC")); + Lfoo = L"ABC"sv; + assert(Lfoo == L"ABC"); + assert(Lfoo == std::wstring_view(L"ABC")); #endif - ufoo = u"ABC"sv; assert( ufoo == u"ABC"); assert( ufoo == std::u16string_view( u"ABC")); - Ufoo = U"ABC"sv; assert( Ufoo == U"ABC"); assert( Ufoo == std::u32string_view( U"ABC")); + ufoo = u"ABC"sv; + assert(ufoo == u"ABC"); + assert(ufoo == std::u16string_view(u"ABC")); + Ufoo = U"ABC"sv; + assert(Ufoo == U"ABC"); + assert(Ufoo == std::u32string_view(U"ABC")); - static_assert( "ABC"sv.size() == 3, ""); - static_assert(u8"ABC"sv.size() == 3, ""); + static_assert("ABC"sv.size() == 3, ""); + static_assert(u8"ABC"sv.size() == 3, ""); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - static_assert( L"ABC"sv.size() == 3, ""); + static_assert(L"ABC"sv.size() == 3, ""); #endif - static_assert( u"ABC"sv.size() == 3, ""); - static_assert( U"ABC"sv.size() == 3, ""); + static_assert(u"ABC"sv.size() == 3, ""); + static_assert(U"ABC"sv.size() == 3, ""); - ASSERT_NOEXCEPT( "ABC"sv); - ASSERT_NOEXCEPT(u8"ABC"sv); + ASSERT_NOEXCEPT("ABC"sv); + ASSERT_NOEXCEPT(u8"ABC"sv); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - ASSERT_NOEXCEPT( L"ABC"sv); + ASSERT_NOEXCEPT(L"ABC"sv); #endif - ASSERT_NOEXCEPT( u"ABC"sv); - ASSERT_NOEXCEPT( U"ABC"sv); - } - { - using namespace std::literals; - std::string_view foo = ""sv; - assert(foo.length() == 0); - } - { - using namespace std; - std::string_view foo = ""sv; - assert(foo.length() == 0); - } + ASSERT_NOEXCEPT(u"ABC"sv); + ASSERT_NOEXCEPT(U"ABC"sv); + } + { + using namespace std::literals; + std::string_view foo = ""sv; + assert(foo.length() == 0); + } + { + using namespace std; + std::string_view foo = ""sv; + assert(foo.length() == 0); + } - return 0; + return 0; } diff --git a/libcxx/test/std/strings/string.view/traits_mismatch.compile.fail.cpp b/libcxx/test/std/strings/string.view/traits_mismatch.compile.fail.cpp --- a/libcxx/test/std/strings/string.view/traits_mismatch.compile.fail.cpp +++ b/libcxx/test/std/strings/string.view/traits_mismatch.compile.fail.cpp @@ -13,9 +13,8 @@ #include -int main(int, char**) -{ - std::basic_string_view> s; +int main(int, char**) { + std::basic_string_view> s; return 0; } diff --git a/libcxx/test/std/strings/string.view/types.pass.cpp b/libcxx/test/std/strings/string.view/types.pass.cpp --- a/libcxx/test/std/strings/string.view/types.pass.cpp +++ b/libcxx/test/std/strings/string.view/types.pass.cpp @@ -39,47 +39,41 @@ #include "test_macros.h" template -void -test() -{ - typedef std::basic_string_view S; +void test() { + typedef std::basic_string_view S; - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same< - typename std::iterator_traits::iterator_category, - std::random_access_iterator_tag>::value), ""); - static_assert((std::is_same< - typename std::iterator_traits::iterator_category, - std::random_access_iterator_tag>::value), ""); - static_assert((std::is_same< - typename S::reverse_iterator, - std::reverse_iterator >::value), ""); - static_assert((std::is_same< - typename S::const_reverse_iterator, - std::reverse_iterator >::value), ""); - static_assert(S::npos == -1, ""); - static_assert((std::is_same::value), ""); - static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same< typename std::iterator_traits::iterator_category, + std::random_access_iterator_tag>::value), + ""); + static_assert((std::is_same< typename std::iterator_traits::iterator_category, + std::random_access_iterator_tag>::value), + ""); + static_assert((std::is_same< typename S::reverse_iterator, std::reverse_iterator >::value), ""); + static_assert( + (std::is_same< typename S::const_reverse_iterator, std::reverse_iterator >::value), + ""); + static_assert(S::npos == -1, ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); } -int main(int, char**) -{ - test >(); +int main(int, char**) { + test >(); #ifndef TEST_HAS_NO_WIDE_CHARACTERS - test >(); + test >(); #endif #ifndef TEST_HAS_NO_CHAR8_T - test >(); + test >(); #endif - static_assert((std::is_same::traits_type, - std::char_traits >::value), ""); + static_assert((std::is_same::traits_type, std::char_traits >::value), ""); return 0; } diff --git a/libcxx/test/std/strings/strings.erasure/erase.pass.cpp b/libcxx/test/std/strings/strings.erasure/erase.pass.cpp --- a/libcxx/test/std/strings/strings.erasure/erase.pass.cpp +++ b/libcxx/test/std/strings/strings.erasure/erase.pass.cpp @@ -30,9 +30,7 @@ } template -void test() -{ - +void test() { test0(S(""), 'a', S(""), 0); test0(S("a"), 'a', S(""), 1); @@ -66,11 +64,10 @@ test0(S("aba"), opt('c'), S("aba"), 0); } -int main(int, char**) -{ - test(); - test, min_allocator>> (); - test, test_allocator>> (); +int main(int, char**) { + test(); + test, min_allocator>>(); + test, test_allocator>>(); return 0; } diff --git a/libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp b/libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp --- a/libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp +++ b/libcxx/test/std/strings/strings.erasure/erase_if.pass.cpp @@ -29,49 +29,47 @@ } template -void test() -{ - auto isA = [](auto ch) { return ch == 'a';}; - auto isB = [](auto ch) { return ch == 'b';}; - auto isC = [](auto ch) { return ch == 'c';}; - auto isD = [](auto ch) { return ch == 'd';}; - auto True = [](auto) { return true; }; - auto False = [](auto) { return false; }; +void test() { + auto isA = [](auto ch) { return ch == 'a'; }; + auto isB = [](auto ch) { return ch == 'b'; }; + auto isC = [](auto ch) { return ch == 'c'; }; + auto isD = [](auto ch) { return ch == 'd'; }; + auto True = [](auto) { return true; }; + auto False = [](auto) { return false; }; - test0(S(""), isA, S(""), 0); + test0(S(""), isA, S(""), 0); - test0(S("a"), isA, S(""), 1); - test0(S("a"), isB, S("a"), 0); + test0(S("a"), isA, S(""), 1); + test0(S("a"), isB, S("a"), 0); - test0(S("ab"), isA, S("b"), 1); - test0(S("ab"), isB, S("a"), 1); - test0(S("ab"), isC, S("ab"), 0); - test0(S("aa"), isA, S(""), 2); - test0(S("aa"), isC, S("aa"), 0); + test0(S("ab"), isA, S("b"), 1); + test0(S("ab"), isB, S("a"), 1); + test0(S("ab"), isC, S("ab"), 0); + test0(S("aa"), isA, S(""), 2); + test0(S("aa"), isC, S("aa"), 0); - test0(S("abc"), isA, S("bc"), 1); - test0(S("abc"), isB, S("ac"), 1); - test0(S("abc"), isC, S("ab"), 1); - test0(S("abc"), isD, S("abc"), 0); + test0(S("abc"), isA, S("bc"), 1); + test0(S("abc"), isB, S("ac"), 1); + test0(S("abc"), isC, S("ab"), 1); + test0(S("abc"), isD, S("abc"), 0); - test0(S("aab"), isA, S("b"), 2); - test0(S("aab"), isB, S("aa"), 1); - test0(S("aab"), isC, S("aab"), 0); - test0(S("abb"), isA, S("bb"), 1); - test0(S("abb"), isB, S("a"), 2); - test0(S("abb"), isC, S("abb"), 0); - test0(S("aaa"), isA, S(""), 3); - test0(S("aaa"), isB, S("aaa"), 0); + test0(S("aab"), isA, S("b"), 2); + test0(S("aab"), isB, S("aa"), 1); + test0(S("aab"), isC, S("aab"), 0); + test0(S("abb"), isA, S("bb"), 1); + test0(S("abb"), isB, S("a"), 2); + test0(S("abb"), isC, S("abb"), 0); + test0(S("aaa"), isA, S(""), 3); + test0(S("aaa"), isB, S("aaa"), 0); - test0(S("aba"), False, S("aba"), 0); - test0(S("aba"), True, S(""), 3); + test0(S("aba"), False, S("aba"), 0); + test0(S("aba"), True, S(""), 3); } -int main(int, char**) -{ - test(); - test, min_allocator>> (); - test, test_allocator>> (); +int main(int, char**) { + test(); + test, min_allocator>>(); + test, test_allocator>>(); return 0; } diff --git a/libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp b/libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp --- a/libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp +++ b/libcxx/test/std/strings/strings.general/nothing_to_do.pass.cpp @@ -6,8 +6,4 @@ // //===----------------------------------------------------------------------===// -int main(int, char**) -{ - - return 0; -} +int main(int, char**) { return 0; }