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("abcde